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 nixpkgs.pkgs is set.
'';
};
+
+ initialSystem = mkOption {
+ type = types.str;
+ internal = true;
+ description = ''
+ Preserved value of system passed to eval-config.nix.
+ '';
+ };
};
config = {
diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix
index f67d2900561..14bd751ce32 100644
--- a/nixos/modules/system/activation/top-level.nix
+++ b/nixos/modules/system/activation/top-level.nix
@@ -15,6 +15,7 @@ let
map (childConfig:
(import ../../../lib/eval-config.nix {
inherit baseModules;
+ system = config.nixpkgs.initialSystem;
modules =
(optionals inheritParent modules)
++ [ ./no-clone.nix ]
diff --git a/nixos/tests/nesting.nix b/nixos/tests/nesting.nix
index 6388b67a6e4..a75806b24ff 100644
--- a/nixos/tests/nesting.nix
+++ b/nixos/tests/nesting.nix
@@ -29,10 +29,10 @@ import ./make-test-python.nix {
)
clone.succeed("cowsay hey")
clone.succeed("hello")
-
- children.wait_for_unit("default.target")
- children.succeed("cowsay hey")
- children.fail("hello")
+
+ children.wait_for_unit("default.target")
+ children.succeed("cowsay hey")
+ children.fail("hello")
with subtest("Nested children do not inherit from parent"):
children.succeed(