From 68dfc861734584d70d9940b5ee25330f8cd5b4b7 Mon Sep 17 00:00:00 2001 From: Anund Date: Sun, 3 Jan 2021 00:07:14 +1100 Subject: [PATCH] home-manager: add zsh completion Fixes #1075 --- home-manager/completion.zsh | 54 +++++++++++++++++++++++++++++++++++++ home-manager/default.nix | 2 ++ 2 files changed, 56 insertions(+) create mode 100644 home-manager/completion.zsh diff --git a/home-manager/completion.zsh b/home-manager/completion.zsh new file mode 100644 index 00000000..5fc67f3b --- /dev/null +++ b/home-manager/completion.zsh @@ -0,0 +1,54 @@ +#compdef home-manager + +local state ret=1 + +_arguments \ + '-A[attribute]:ATTRIBUTE:()' \ + '-I[search path]:PATH:_files -/' \ + '-b[backup files]:EXT:()' \ + '--cores[cores]:NUM:()' \ + '--keep-failed[keep failed]' \ + '--keep-going[keep going]' \ + '(-h --help)'{--help,-h}'[help]' \ + '(-v --verbose)'{--verbose,-v}'[verbose]' \ + '(-n --dry-run)'{--dry-run,-n}'[dry run]' \ + '(-f --file)'{--file,-f}'[configuration file]:FILE:_files' \ + '(-j --max-jobs)'{--max-jobs,-j}'[max jobs]:NUM:()' \ + '--option[option]:NAME VALUE:()' \ + '--show-trace[show trace]' \ + '1: :->cmds' \ + '*:: :->args' && ret=0 + +case "$state" in + cmds) + _values 'command' \ + 'help[help]' \ + 'edit[edit]' \ + 'build[build]' \ + 'switch[switch]' \ + 'generations[list generations]' \ + 'remove-generations[remove generations]' \ + 'expire-generations[expire generations]' \ + 'packages[managed packages]' \ + 'news[read the news]' \ + 'uninstall[uninstall]' && ret=0 + ;; + args) + case $line[1] in + remove-generations) + _values 'generations' \ + $(home-manager generations | cut -d ' ' -f 5) && ret=0 + ;; + build|switch) + _arguments \ + '--cores[cores]:NUM:()' \ + '--keep-failed[keep failed]' \ + '--keep-going[keep going]' \ + '--max-jobs[max jobs]:NUM:()' \ + '--option[option]:NAME VALUE:()' \ + '--show-trace[show trace]' + ;; + esac +esac + +return ret diff --git a/home-manager/default.nix b/home-manager/default.nix index 8b5ae75e..68bfeb46 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -37,4 +37,6 @@ runCommand install -D -m755 ${./completion.bash} \ $out/share/bash-completion/completions/home-manager + install -D -m755 ${./completion.zsh} \ + $out/share/zsh/site-functions/_home-manager ''