51 lines
1.2 KiB
Nix
51 lines
1.2 KiB
Nix
|
|
# Interactive shell: zsh + tmux. Wanted on every host.
|
||
|
|
{ lib, ... }:
|
||
|
|
{
|
||
|
|
programs.zsh = {
|
||
|
|
enable = true;
|
||
|
|
enableCompletion = true;
|
||
|
|
enableVteIntegration = true;
|
||
|
|
autosuggestion.enable = true;
|
||
|
|
historySubstringSearch.enable = true;
|
||
|
|
history.append = true;
|
||
|
|
oh-my-zsh = {
|
||
|
|
enable = true;
|
||
|
|
plugins = [
|
||
|
|
"git"
|
||
|
|
"man"
|
||
|
|
"history-substring-search"
|
||
|
|
];
|
||
|
|
theme = "robbyrussell";
|
||
|
|
};
|
||
|
|
syntaxHighlighting.enable = true;
|
||
|
|
# Prefix the prompt with the hostname over SSH. The graphical autostart
|
||
|
|
# (exec sway on tty1) lives in ./desktop.nix so it never runs on headless
|
||
|
|
# hosts.
|
||
|
|
initContent = lib.mkOrder 1500 ''
|
||
|
|
if [ "$SSH_CLIENT" ] || [ "$SSH_TTY" ]; then
|
||
|
|
export PS1="%M $PS1"
|
||
|
|
fi
|
||
|
|
'';
|
||
|
|
envExtra = ''
|
||
|
|
alias cls=clear
|
||
|
|
'';
|
||
|
|
};
|
||
|
|
|
||
|
|
programs.tmux = {
|
||
|
|
enable = true;
|
||
|
|
reverseSplit = true;
|
||
|
|
terminal = "tmux-direct";
|
||
|
|
newSession = true;
|
||
|
|
keyMode = "vi";
|
||
|
|
historyLimit = 50000;
|
||
|
|
mouse = true;
|
||
|
|
extraConfig = ''
|
||
|
|
# Alt+Arrow pane navigation
|
||
|
|
bind -n M-Left select-pane -L
|
||
|
|
bind -n M-Right select-pane -R
|
||
|
|
bind -n M-Up select-pane -U
|
||
|
|
bind -n M-Down select-pane -D
|
||
|
|
'';
|
||
|
|
};
|
||
|
|
}
|