Initial zsh setup

This commit is contained in:
outfoxxed 2023-06-28 00:07:07 -07:00
parent 368bf1f1f3
commit 37e8506352
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
4 changed files with 109 additions and 0 deletions

View file

@ -5,6 +5,7 @@
./overlay-pkgs ./overlay-pkgs
./user ./user
./emacs ./emacs
./zsh
]; ];
programs.dconf.enable = true; programs.dconf.enable = true;

27
modules/zsh/completion.zsh Executable file
View file

@ -0,0 +1,27 @@
# completion types
zstyle ':completion:*' completer _extensions _complete
# jump directly to first completion
zstyle ':completion:::::default' menu yes select
# matching
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[.+-]=* r:|=*' 'l:|=* r:|=*'
# allow highlight/menu move in completions
zstyle ':completion:*' menu select
# styles
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}// %d%f'
zstyle ':completion:*:*:*:*:corrections' format '%F{yellow}// %d%f'
zstyle ':completion:*:messages' format '%F{purple}// %d%f'
zstyle ':completion:*:warnings' format '%F{red}// no completions availible%f'
# group results under headers
zstyle ':completion:*' group-name ''
zstyle ':completion:*:*:-command-:*:*' group-order alias builtins functions commands
# file colors
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
# use --help completions when availible
compdef _gnu_generic -default- -P '*'

67
modules/zsh/default.nix Normal file
View file

@ -0,0 +1,67 @@
{ pkgs, config, impurity, ... }: {
# put it in /etc/shells
programs.zsh.enable = true;
users.users.${config.main-user}.shell = pkgs.zsh;
home-manager.users.${config.main-user} = { config, ... }: let
zshDir = ".config/zsh";
zshPath = "${config.home.homeDirectory}/${zshDir}";
history = 1000000;
in {
programs.zsh = {
enable = true;
# path to zsh configs
dotDir = zshDir;
enableCompletion = true;
history = {
path = "${zshPath}/history";
# lines of history to save
save = history;
size = history;
};
plugins = [
{
name = "zsh-syntax-highlighting";
src = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-syntax-highlighting";
rev = "master";
sha256 = "iKx7lsQCoSAbpANYFkNVCZlTFdwOEI34rx/h1rnraSg=";
};
}
{
name = "zsh-completions";
src = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-completions";
rev = "master";
sha256 = "MRGIKZtXk1+Yb8AV4NOqpSiP4IkWxPTJoLftq7VDjoE=";
};
}
{
name = "zsh-autosuggestions";
src = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-autosuggestions";
rev = "master";
sha256 = "KLUYpUu4DHRumQZ3w59m9aTW6TBKMCXl2UcKi4uMd7w=";
};
}
];
initExtra = ''
# keybinds
source ${impurity.link ./keybinds.zsh}
# completions
source ${impurity.link ./completion.zsh}
'';
};
};
}

14
modules/zsh/keybinds.zsh Executable file
View file

@ -0,0 +1,14 @@
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search
bindkey "^[[B" down-line-or-beginning-search
bindkey "^[OA" up-line-or-beginning-search
bindkey "^[OB" down-line-or-beginning-search
bindkey "^K" up-line-or-beginning-search
bindkey "^J" down-line-or-beginning-search
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
bindkey "^H" backward-char
bindkey "^L" forward-char