diff options
Diffstat (limited to 'modules/system/nix-update')
| -rw-r--r-- | modules/system/nix-update/default.nix | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/modules/system/nix-update/default.nix b/modules/system/nix-update/default.nix index 13c15f6..4d00c77 100644 --- a/modules/system/nix-update/default.nix +++ b/modules/system/nix-update/default.nix @@ -6,19 +6,49 @@ ... }: let - inherit ((import ../../lib/script.nix { inherit lib pkgs; })) mkScriptModule; + nixUpdateScript = pkgs.writeShellApplication { + name = "nix-update"; + runtimeInputs = [ + pkgs.git + pkgs.nix + config.programs.home-manager.package + pkgs.bash + ]; + text = builtins.readFile ./nix-update.sh; + }; + + nixUpdateCompletion = + pkgs.runCommand "nix-update-completion" + { + nativeBuildInputs = [ pkgs.installShellFiles ]; + } + '' + mkdir -p $out/share/zsh/site-functions + installShellCompletion --zsh --name _nix-update ${pkgs.writeText "nix-update.zsh" (builtins.readFile ./nix-update.zsh)} + ''; + + nixUpdateScriptPkg = pkgs.symlinkJoin { + name = "nix-update"; + paths = [ + nixUpdateScript + nixUpdateCompletion + ]; + meta = nixUpdateScript.meta or { }; + }; in -mkScriptModule { - scope = [ "system" ]; - name = "nix-update"; - path = ./nix-update.sh; - description = "Update NixOS and/or Home Manager flake configuration\nRuns nix flake update and rebuilds the system"; - deps = [ - pkgs.git - pkgs.nix - config.programs.home-manager.package - pkgs.bash - ]; - completion.zsh = builtins.readFile ./nix-update.zsh; - inherit config; +{ + options.system.nix-update = { + enable = lib.mkEnableOption "Update NixOS and/or Home Manager flake configuration"; + + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = nixUpdateScriptPkg; + description = "The nix-update script package."; + }; + }; + + config = lib.mkIf config.system.nix-update.enable { + home.packages = [ config.system.nix-update.package ]; + }; } |
