diff --git a/nixos/lib/build-vms.nix b/nixos/lib/build-vms.nix index a5580f4712eb..6c92aa1ffa2f 100644 --- a/nixos/lib/build-vms.nix +++ b/nixos/lib/build-vms.nix @@ -32,14 +32,14 @@ rec { import ./eval-config.nix { inherit system; - modules = configurations ++ + modules = configurations ++ extraConfigurations; + baseModules = (import ../modules/module-list.nix) ++ [ ../modules/virtualisation/qemu-vm.nix ../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs { key = "no-manual"; documentation.nixos.enable = false; } { key = "qemu"; system.build.qemu = qemu; } - ] ++ optional minimal ../modules/testing/minimal-kernel.nix - ++ extraConfigurations; - extraArgs = { inherit nodes; }; + { key = "nodes"; _module.args.nodes = nodes; } + ] ++ optional minimal ../modules/testing/minimal-kernel.nix; }; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 9bce49c9e302..10a381c2c8f4 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -161,6 +161,7 @@ in nat.standalone = handleTest ./nat.nix { withFirewall = false; }; ndppd = handleTest ./ndppd.nix {}; neo4j = handleTest ./neo4j.nix {}; + nesting = handleTest ./nesting.nix {}; netdata = handleTest ./netdata.nix {}; networking.networkd = handleTest ./networking.nix { networkd = true; }; networking.scripted = handleTest ./networking.nix { networkd = false; }; diff --git a/nixos/tests/nesting.nix b/nixos/tests/nesting.nix new file mode 100644 index 000000000000..1306d6f8e0c5 --- /dev/null +++ b/nixos/tests/nesting.nix @@ -0,0 +1,42 @@ +import ./make-test.nix { + name = "nesting"; + nodes = { + clone = { pkgs, ... }: { + environment.systemPackages = [ pkgs.cowsay ]; + nesting.clone = [ + ({ pkgs, ... }: { + environment.systemPackages = [ pkgs.hello ]; + }) + ]; + }; + children = { pkgs, ... }: { + environment.systemPackages = [ pkgs.cowsay ]; + nesting.children = [ + ({ pkgs, ... }: { + environment.systemPackages = [ pkgs.hello ]; + }) + ]; + }; + }; + testScript = '' + $clone->waitForUnit("default.target"); + $clone->succeed("cowsay hey"); + $clone->fail("hello"); + + # Nested clones do inherit from parent + $clone->succeed("/run/current-system/fine-tune/child-1/bin/switch-to-configuration test"); + $clone->succeed("cowsay hey"); + $clone->succeed("hello"); + + + $children->waitForUnit("default.target"); + $children->succeed("cowsay hey"); + $children->fail("hello"); + + # Nested children do not inherit from parent + $children->succeed("/run/current-system/fine-tune/child-1/bin/switch-to-configuration test"); + $children->fail("cowsay hey"); + $children->succeed("hello"); + + ''; +}