nixos-config/home/terminal/shell/zsh.nix
2024-06-07 18:30:15 +02:00

53 lines
1.2 KiB
Nix

{config, ...}: {
programs.fzf.enable = true;
programs.zsh = {
enable = true;
autocd = true;
enableCompletion = true;
autosuggestion.enable = true;
dotDir = ".config/zsh";
defaultKeymap = "emacs";
history = {
expireDuplicatesFirst = true;
path = "${config.xdg.dataHome}/zsh_history";
};
initExtra = ''
unsetopt beep
## KEYBINDS ##
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
# improve ^w behaviour
WORDCHARS=
# pretty completion menu
zstyle ':completion:*' menu select
# shift-tab in completion menu
bindkey '^[[Z' reverse-menu-complete
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # Case insensitive completion
## MISC ##
setopt extendedglob
# Show completion categories
zstyle ':completion:*:*:*:*:descriptions' format '%F{magenta}<-%d->%f'
## PROMPT ##
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
zstyle ':vcs_info:git:*' formats ' %b '
setopt prompt_subst
PROMPT="%F{blue}[%F{magenta}%n%F{blue}@%F{magenta}%M%F{blue}] %~%f %F{green}\$vcs_info_msg_0_%f%(?..%F{red}| %? )%#%f "
'';
};
}