Add zsh-autocomplete

This commit is contained in:
Joshua Yuen 2026-01-19 19:50:44 -05:00
parent d24816b15d
commit 6099745727
Signed by: josh
GPG Key ID: 502720BC22ED411C
4 changed files with 67 additions and 12 deletions

View File

@ -9,6 +9,7 @@
}: }:
let let
shellCfg = config.modules.shell; shellCfg = config.modules.shell;
zshCfg = config.modules.zsh;
in in
{ {
imports = [ inputs.home-manager.nixosModules.home-manager ]; imports = [ inputs.home-manager.nixosModules.home-manager ];
@ -52,5 +53,10 @@ in
# Set /etc/shells so GDM will show our user when ZSH is selected # Set /etc/shells so GDM will show our user when ZSH is selected
environment.shells = [ pkgs.${shellCfg.defaultShell} ]; environment.shells = [ pkgs.${shellCfg.defaultShell} ];
# Needed to get completion for system packages (e.g. systemd)
environment.pathsToLink =
[ ]
++ (if zshCfg.enable then [ "/share/zsh" ] else [ ]);
nix.settings.allowed-users = [ "${username}" ]; nix.settings.allowed-users = [ "${username}" ];
} }

View File

@ -0,0 +1,18 @@
{
config,
lib,
osConfig,
...
}:
with lib;
let
cfg = osConfig.modules.zsh;
xdgCfg = config.xdg;
in
{
config = mkIf cfg.enable {
home.file."${xdgCfg.configHome}/zsh/completion.zsh" = {
source = ./completion.zsh;
};
};
}

View File

@ -0,0 +1,20 @@
# Work with hidden files
_comp_options+=(globdots)
# Autocomplete cache options
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
# Colors
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
# Menu options
zstyle ':completion:*' menu select
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f'
zstyle ':completion:*:*:*:*:corrections' format '%F{yellow}!- %d (errors: %e) -!%f'
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
# Group results
zstyle ':completion:*' group-name ''
# Autocomplete options
zstyle ':completion:*' completer _extensions _complete _approximate

View File

@ -12,6 +12,7 @@ let
in in
{ {
imports = [ imports = [
./completion.nix
./p10k.nix ./p10k.nix
]; ];
@ -19,7 +20,7 @@ in
enable = cfg.enable; enable = cfg.enable;
dotDir = "${xdgCfg.configHome}/zsh"; dotDir = "${xdgCfg.configHome}/zsh";
autosuggestion.enable = false; autosuggestion.enable = false;
enableCompletion = true; enableCompletion = false;
syntaxHighlighting = { syntaxHighlighting = {
enable = true; enable = true;
highlighters = [ highlighters = [
@ -53,14 +54,19 @@ in
source "${xdgCfg.configHome}/zsh/p10k.zsh"; source "${xdgCfg.configHome}/zsh/p10k.zsh";
''; '';
zshConfig = mkOrder 1000 '' zshConfig = mkOrder 1000 ''
# Autocompletion and menu styling
zmodload zsh/complist
autoload -Uz compinit && compinit
source "${xdgCfg.configHome}/zsh/completion.zsh";
# vi keybindings for menu select # vi keybindings for menu select
#bindkey -M menuselect 'h' vi-backward-char bindkey -M menuselect 'h' vi-backward-char
#bindkey -M menuselect 'k' vi-up-line-or-history bindkey -M menuselect 'k' vi-up-line-or-history
#bindkey -M menuselect 'j' vi-down-line-or-history bindkey -M menuselect 'j' vi-down-line-or-history
#bindkey -M menuselect 'l' vi-forward-char bindkey -M menuselect 'l' vi-forward-char
# Tab to accept current selection # Tab to accept current selection
#bindkey -M menuselect '^I' accept-and-infer-next-history bindkey -M menuselect '^I' accept-and-infer-next-history
# Control arrow keys # Control arrow keys
bindkey '^[[1;5C' forward-word bindkey '^[[1;5C' forward-word
@ -85,6 +91,11 @@ in
src = "${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/"; src = "${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/";
file = "powerlevel10k.zsh-theme"; file = "powerlevel10k.zsh-theme";
} }
{
name = "zsh-autocomplete";
src = "${pkgs.zsh-autocomplete}/share/zsh-autocomplete/";
file = "zsh-autocomplete.zsh";
}
]; ];
}; };
} }