diff options
| author | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-08-21 04:06:34 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-08-29 03:50:28 +0530 |
| commit | 58cd82c184b5f321930eed614462f69b0a0d9fa3 (patch) | |
| tree | 8cebcc1ec3ebedab3be16873aa694c3006c3f4c8 | |
| parent | 9096fc6607a196f48df1da1dbe9b3f2b0908d76d (diff) | |
| download | home-manager-config-58cd82c184b5f321930eed614462f69b0a0d9fa3.tar.gz home-manager-config-58cd82c184b5f321930eed614462f69b0a0d9fa3.zip | |
scripts: added completions for nix-update script, updated completions
- added zsh completions for nix-update
- updated completions options to allow multiple shells
| -rw-r--r-- | modules/scripts/gpg-backup/default.nix | 2 | ||||
| -rw-r--r-- | modules/scripts/lib.nix | 26 | ||||
| -rw-r--r-- | modules/scripts/nix-update/completion.zsh | 21 | ||||
| -rw-r--r-- | modules/scripts/nix-update/default.nix | 1 | ||||
| -rw-r--r-- | modules/scripts/screen-recording/default.nix | 2 | ||||
| -rw-r--r-- | modules/scripts/usque-warp/default.nix | 2 |
6 files changed, 43 insertions, 11 deletions
diff --git a/modules/scripts/gpg-backup/default.nix b/modules/scripts/gpg-backup/default.nix index 1ab41b4..b97aad8 100644 --- a/modules/scripts/gpg-backup/default.nix +++ b/modules/scripts/gpg-backup/default.nix @@ -17,7 +17,7 @@ let pkgs.coreutils pkgs.findutils ]; - completion = builtins.readFile ./completion.zsh; + completion.zsh = builtins.readFile ./completion.zsh; inherit config; }; in diff --git a/modules/scripts/lib.nix b/modules/scripts/lib.nix index 76e453e..31d7e5b 100644 --- a/modules/scripts/lib.nix +++ b/modules/scripts/lib.nix @@ -1,5 +1,10 @@ { lib, pkgs }: let + shellArgs = { + zsh = name: file: "--zsh --name _${name} ${file}"; + bash = name: file: "--bash --name ${name}.bash ${file}"; + }; + mkScript = name: path: description: env: deps: completion: let @@ -22,11 +27,16 @@ let { nativeBuildInputs = [ pkgs.installShellFiles ]; } - '' - installShellCompletion --zsh --name _${name} ${pkgs.writeText "_${name}" completion} - ''; + ( + "mkdir -p $out\n" + + lib.concatStringsSep "\n" ( + lib.mapAttrsToList (shell: content: '' + installShellCompletion ${shellArgs.${shell} name (pkgs.writeText "_${name}.${shell}" content)} + '') completion + ) + ); in - if completion == null then + if completion == { } then base else pkgs.symlinkJoin { @@ -47,7 +57,7 @@ let extraLinks ? [ ], config, description ? "", - completion ? null, + completion ? { }, }: let scriptDrv = mkScript name path description env deps completion; @@ -67,8 +77,8 @@ let completion = { enable = lib.mkOption { type = lib.types.bool; - default = completion != null; - description = "Whether to install a zsh completion for the ${name} script."; + default = completion != { }; + description = "Whether to install completions for the ${name} script."; }; }; desktop = { @@ -115,7 +125,7 @@ let message = "scripts.${name}.desktop.enable requires terminal.kitty.enable because desktop entries launch scripts in kitty."; } { - assertion = !config.scripts.${name}.completion.enable || completion != null; + assertion = !config.scripts.${name}.completion.enable || completion != { }; message = "scripts.${name}.completion.enable is true but no completion text was provided to mkScriptModule."; } ]; diff --git a/modules/scripts/nix-update/completion.zsh b/modules/scripts/nix-update/completion.zsh new file mode 100644 index 0000000..ee4115c --- /dev/null +++ b/modules/scripts/nix-update/completion.zsh @@ -0,0 +1,21 @@ +#compdef nix-update + +_arguments \ + '1: :->target' \ + '*:: :->flags' + +case $state in + target) + local -a commands + commands=( + 'home-manager:Update and switch home-manager configuration' + 'nixos:Update and switch NixOS configuration' + 'both:Update and switch both configurations' + ) + _describe 'command' commands + ;; + flags) + _arguments \ + '--flake-only[Only run nix flake update, skip switch commands]' + ;; +esac diff --git a/modules/scripts/nix-update/default.nix b/modules/scripts/nix-update/default.nix index 787265d..633ff3d 100644 --- a/modules/scripts/nix-update/default.nix +++ b/modules/scripts/nix-update/default.nix @@ -16,6 +16,7 @@ let config.programs.home-manager.package pkgs.bash ]; + completion.zsh = builtins.readFile ./completion.zsh; inherit config; }; in diff --git a/modules/scripts/screen-recording/default.nix b/modules/scripts/screen-recording/default.nix index 6023232..6aa0f89 100644 --- a/modules/scripts/screen-recording/default.nix +++ b/modules/scripts/screen-recording/default.nix @@ -15,7 +15,7 @@ let config.media.slurp.package config.media.wf-recorder.package ]; - completion = builtins.readFile ./completion.zsh; + completion.zsh = builtins.readFile ./completion.zsh; desktop = { enable = true; displayName = "Screen Recording"; diff --git a/modules/scripts/usque-warp/default.nix b/modules/scripts/usque-warp/default.nix index f5cb988..1831a44 100644 --- a/modules/scripts/usque-warp/default.nix +++ b/modules/scripts/usque-warp/default.nix @@ -14,7 +14,7 @@ let config.networking.usque.package pkgs.bash ]; - completion = builtins.readFile ./completion.zsh; + completion.zsh = builtins.readFile ./completion.zsh; inherit config; }; in |
