Merge branch 'staging-next' into staging
[NixPkgs.git] / nixos / tests / nixos-rebuild-install-bootloader.nix
blob94554a93bd63b255fa1c03cc91fe05eaabaa6fab
1 import ./make-test-python.nix ({ pkgs, ... }: {
2   name = "nixos-rebuild-install-bootloader";
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       virtualisation = {
20         cores = 2;
21         memorySize = 2048;
22       };
24       virtualisation.useBootLoader = true;
25     };
26   };
28   testScript =
29     let
30       configFile = pkgs.writeText "configuration.nix" ''
31         { lib, pkgs, ... }: {
32           imports = [
33             ./hardware-configuration.nix
34             <nixpkgs/nixos/modules/testing/test-instrumentation.nix>
35           ];
37           boot.loader.grub = {
38             enable = true;
39             device = "/dev/vda";
40             forceInstall = true;
41           };
43           documentation.enable = false;
44         }
45       '';
47     in
48     ''
49       machine.start()
50       machine.succeed("udevadm settle")
51       machine.wait_for_unit("multi-user.target")
53       machine.succeed("nixos-generate-config")
54       machine.copy_from_host(
55           "${configFile}",
56           "/etc/nixos/configuration.nix",
57       )
58       machine.succeed("nixos-rebuild switch")
60       # Need to run `nixos-rebuild` twice because the first run will install
61       # GRUB anyway
62       with subtest("Switch system again and install bootloader"):
63           result = machine.succeed("nixos-rebuild switch --install-bootloader 2>&1")
64           # install-grub2.pl messages
65           assert "updating GRUB 2 menu..." in result
66           assert "installing the GRUB 2 boot loader on /dev/vda..." in result
67           # GRUB message
68           assert "Installation finished. No error reported." in result
69           # at this point we've tested regression #262724, but haven't tested the bootloader itself
70           # TODO: figure out how to how to tell the test driver to start the bootloader instead of
71           # booting into the kernel directly.
72     '';