diff --git a/nix/lib.nix b/nix/lib.nix index 90554403..1e7dbacb 100644 --- a/nix/lib.nix +++ b/nix/lib.nix @@ -77,10 +77,7 @@ let shell; }; # Pass the wrapped system-manager binary down - # TODO: Use nixpkgs version by default. - system-manager = pkgs.callPackage ./packages/wrapper.nix { - system-manager-unwrapped = pkgs.callPackage ../package.nix { }; - }; + system-manager = config.system-manager.package; userborn = userborn.packages.${config.nixpkgs.hostPlatform}.default; }; }; @@ -118,10 +115,8 @@ let inherit (eval) config options; inherit (config.nixpkgs) pkgs; - # Build system-manager package for use in toplevel - system-manager = pkgs.callPackage ./packages/wrapper.nix { - system-manager-unwrapped = pkgs.callPackage ../package.nix { }; - }; + # Retrieve system-manager package for use in toplevel + system-manager = config.system-manager.package; returnIfNoAssertions = drv: diff --git a/nix/modules/default.nix b/nix/modules/default.nix index 76147858..97dfe75e 100644 --- a/nix/modules/default.nix +++ b/nix/modules/default.nix @@ -129,6 +129,21 @@ }; system-manager = { + package = lib.mkOption { + type = lib.types.package; + # TODO: Use nixpkgs version by default. + default = pkgs.callPackage ../packages/wrapper.nix { + system-manager-unwrapped = pkgs.callPackage ../../package.nix { }; + }; + example = "pkgs.system-manager"; + defaultText = lib.literalExpression '' + pkgs.callPackage ''${system-manager}/nix/modules/packages/wrapper.nix { + system-manager-unwrapped = pkgs.callPackage ''${system-manager}/package.nix { }; + } + ''; + description = "System-manager binary to use."; + }; + allowAnyDistro = lib.mkEnableOption "the usage of system-manager on untested distributions"; linkCurrentSystem = lib.mkOption {