vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / nixos-rebuild-specialisations.nix
blobab67bbaba67626bc5257637173bc905ddd921081
1 import ./make-test-python.nix ({ pkgs, ... }: {
2   name = "nixos-rebuild-specialisations";
4   nodes = {
5     machine = { lib, pkgs, ... }: {
6       imports = [
7         ../modules/profiles/installation-device.nix
8         ../modules/profiles/base.nix
9       ];
11       nix.settings = {
12         substituters = lib.mkForce [ ];
13         hashed-mirrors = null;
14         connect-timeout = 1;
15       };
17       system.includeBuildDependencies = true;
19       system.extraDependencies = [
20         # Not part of the initial build apparently?
21         pkgs.grub2
22       ];
24       system.switch.enable = true;
26       virtualisation = {
27         cores = 2;
28         memorySize = 4096;
29       };
30     };
31   };
33   testScript =
34     let
35       configFile = pkgs.writeText "configuration.nix" ''
36         { lib, pkgs, ... }: {
37           imports = [
38             ./hardware-configuration.nix
39             <nixpkgs/nixos/modules/testing/test-instrumentation.nix>
40           ];
42           boot.loader.grub = {
43             enable = true;
44             device = "/dev/vda";
45             forceInstall = true;
46           };
48           documentation.enable = false;
50           environment.systemPackages = [
51             (pkgs.writeShellScriptBin "parent" "")
52           ];
54           specialisation.foo = {
55             inheritParentConfig = true;
57             configuration = { ... }: {
58               environment.systemPackages = [
59                 (pkgs.writeShellScriptBin "foo" "")
60               ];
61             };
62           };
64           specialisation.bar = {
65             inheritParentConfig = true;
67             configuration = { ... }: {
68               environment.systemPackages = [
69                 (pkgs.writeShellScriptBin "bar" "")
70               ];
71             };
72           };
73         }
74       '';
76     in
77     ''
78       machine.start()
79       machine.succeed("udevadm settle")
80       machine.wait_for_unit("multi-user.target")
82       machine.succeed("nixos-generate-config")
83       machine.copy_from_host(
84           "${configFile}",
85           "/etc/nixos/configuration.nix",
86       )
88       with subtest("Switch to the base system"):
89           machine.succeed("nixos-rebuild switch")
90           machine.succeed("parent")
91           machine.fail("foo")
92           machine.fail("bar")
94       with subtest("Switch from base system into a specialization"):
95           machine.succeed("nixos-rebuild switch --specialisation foo")
96           machine.succeed("parent")
97           machine.succeed("foo")
98           machine.fail("bar")
100       with subtest("Switch from specialization into another specialization"):
101           machine.succeed("nixos-rebuild switch -c bar")
102           machine.succeed("parent")
103           machine.fail("foo")
104           machine.succeed("bar")
106       with subtest("Switch from specialization into the base system"):
107           machine.succeed("nixos-rebuild switch")
108           machine.succeed("parent")
109           machine.fail("foo")
110           machine.fail("bar")
112       with subtest("Switch into specialization using `nixos-rebuild test`"):
113           machine.succeed("nixos-rebuild test --specialisation foo")
114           machine.succeed("parent")
115           machine.succeed("foo")
116           machine.fail("bar")
118       with subtest("Make sure nonsense command combinations are forbidden"):
119           machine.fail("nixos-rebuild boot --specialisation foo")
120           machine.fail("nixos-rebuild boot -c foo")
121     '';