diff options
author | Andrew Childs <lorne@cons.org.nz> | 2020-03-04 23:24:22 +0900 |
---|---|---|
committer | Andrew Childs <lorne@cons.org.nz> | 2020-03-05 20:28:31 +0900 |
commit | ce416779bbb5d86210cbf2cc5060cc81faf53c94 (patch) | |
tree | 98ac1233a10867b9374f21eda874033f151604c7 | |
parent | b83164a0499475c72affebb21e7f513e7fbd0ccd (diff) | |
download | nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar.gz nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar.bz2 nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar.lz nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar.xz nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.tar.zst nixpkgs-ce416779bbb5d86210cbf2cc5060cc81faf53c94.zip |
nixos/activation: use eval-config's system argument for nesting
This avoids a possible surprise if the user is using `nixpkgs.system` and `nesting.children`. `nesting.children` is expected to ignore all parent configuration so we shouldn't propagate the user-facing option `nixpkgs.system`. To avoid doing so, we introduce a new internal option for holding the value passed to eval-config.nix, and use that when recursing for nesting.
-rw-r--r-- | nixos/lib/eval-config.nix | 6 | ||||
-rw-r--r-- | nixos/modules/misc/nixpkgs.nix | 8 | ||||
-rw-r--r-- | nixos/modules/system/activation/top-level.nix | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index 77490ca3762..9892d6f160f 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -41,6 +41,12 @@ let # default to the argument. That way this new default could propagate all # they way through, but has the last priority behind everything else. nixpkgs.system = lib.mkDefault system; + + # Stash the value of the `system` argument. When using `nesting.children` + # we want to have the same default value behavior (immediately above) + # without any interference from the user's configuration. + nixpkgs.initialSystem = system; + _module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_); }; }; diff --git a/nixos/modules/misc/nixpkgs.nix b/nixos/modules/misc/nixpkgs.nix index afb74581e23..011d493c153 100644 --- a/nixos/modules/misc/nixpkgs.nix +++ b/nixos/modules/misc/nixpkgs.nix @@ -216,6 +216,14 @@ in Ignored when <code>nixpkgs.pkgs</code> is set. ''; }; + + initialSystem = mkOption { + type = types.str; + internal = true; + description = '' + Preserved value of <literal>system</literal> passed to <literal>eval-config.nix</literal>. + ''; + }; }; config = { diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix index 346e0b64230..14bd751ce32 100644 --- a/nixos/modules/system/activation/top-level.nix +++ b/nixos/modules/system/activation/top-level.nix @@ -15,7 +15,7 @@ let map (childConfig: (import ../../../lib/eval-config.nix { inherit baseModules; - system = config.nixpkgs.system; + system = config.nixpkgs.initialSystem; modules = (optionals inheritParent modules) ++ [ ./no-clone.nix ] |