summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2019-06-05 21:05:53 +0200
committerAlan Pearce2019-06-05 21:05:53 +0200
commitaf54fb9ff51211ef2b17b642cfa96efa10445fde (patch)
tree7473f9159222e029fe53a2ec2dc20d4a25a1f0f7
parent7e6f5a6d6f329c890a4259b03dbeded189580003 (diff)
downloadnixos-configuration-af54fb9ff51211ef2b17b642cfa96efa10445fde.tar.lz
nixos-configuration-af54fb9ff51211ef2b17b642cfa96efa10445fde.tar.zst
nixos-configuration-af54fb9ff51211ef2b17b642cfa96efa10445fde.zip
trillian: Enable completion for nix-darwin commands
-rw-r--r--trillian.nix35
1 files changed, 34 insertions, 1 deletions
diff --git a/trillian.nix b/trillian.nix
index 1ffb8c7..86dc4c4 100644
--- a/trillian.nix
+++ b/trillian.nix
@@ -47,6 +47,7 @@ in
       emacsPackage
       aspell
       aspellDicts.en
+      darwin-zsh-completions
     ];
 
   # Use a custom configuration.nix location.
@@ -85,7 +86,7 @@ in
   #     KeepAlive = true;
   #   };
   # };
-  # 
+  #
   nix.gc = {
     automatic = true;
     options = "--max-freed $((25 * 1024**3 - 1024 * $(df -P -k /nix/store | tail -n 1 | awk '{ print $4 }')))";
@@ -93,6 +94,38 @@ in
   nix.daemonNiceLevel = 10;
   nix.daemonIONice = true;
 
+  nixpkgs.overlays = [
+    (self: super: {
+      darwin-zsh-completions = super.runCommandNoCC "darwin-zsh-completions-0.0.0"
+        { preferLocalBuild = true; }
+        ''
+          mkdir -p $out/share/zsh/site-functions
+          cat <<-'EOF' > $out/share/zsh/site-functions/_darwin-rebuild
+          #compdef darwin-rebuild
+          #autoload
+          _nix-common-options
+          local -a _1st_arguments
+          _1st_arguments=(
+            'switch:Build, activate, and update the current generation'\
+            'build:Build without activating or updating the current generation'\
+            'check:Build and run the activation sanity checks'\
+            'changelog:Show most recent entries in the changelog'\
+          )
+          _arguments \
+            '--list-generations[Print a list of all generations in the active profile]'\
+            '--rollback[Roll back to the previous configuration]'\
+            {--switch-generation,-G}'[Activate specified generation]'\
+            '(--profile-name -p)'{--profile-name,-p}'[Profile to use to track current and previous system configurations]:Profile:_nix_profiles'\
+            '1:: :->subcmds' && return 0
+          case $state in
+            subcmds)
+              _describe -t commands 'darwin-rebuild subcommands' _1st_arguments
+            ;;
+          esac
+          EOF
+        '';
+      })
+  ];
   # Used for backwards compatibility, please read the changelog before changing.
   # $ darwin-rebuild changelog
   system.stateVersion = 3;