about summary refs log tree commit diff
path: root/nixpkgs/nixos/tests/nixos-rebuild-install-bootloader.nix
blob: 3ade90ea24a748dbd06cfb9fb54fce484a3ace0e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import ./make-test-python.nix ({ pkgs, ... }: {
  name = "nixos-rebuild-install-bootloader";

  nodes = {
    machine = { lib, pkgs, ... }: {
      imports = [
        ../modules/profiles/installation-device.nix
        ../modules/profiles/base.nix
      ];

      nix.settings = {
        substituters = lib.mkForce [ ];
        hashed-mirrors = null;
        connect-timeout = 1;
      };

      system.includeBuildDependencies = true;

      virtualisation = {
        cores = 2;
        memorySize = 2048;
      };

      virtualisation.useBootLoader = true;
    };
  };

  testScript =
    let
      configFile = pkgs.writeText "configuration.nix" ''
        { lib, pkgs, ... }: {
          imports = [
            ./hardware-configuration.nix
            <nixpkgs/nixos/modules/testing/test-instrumentation.nix>
          ];

          boot.loader.grub = {
            enable = true;
            device = "/dev/vda";
            forceInstall = true;
          };

          documentation.enable = false;
        }
      '';

    in
    ''
      machine.start()
      machine.succeed("udevadm settle")
      machine.wait_for_unit("multi-user.target")

      machine.succeed("nixos-generate-config")
      machine.copy_from_host(
          "${configFile}",
          "/etc/nixos/configuration.nix",
      )
      machine.succeed("nixos-rebuild switch")

      # Need to run `nixos-rebuild` twice because the first run will install
      # GRUB anyway
      with subtest("Switch system again and install bootloader"):
          result = machine.succeed("nixos-rebuild switch --install-bootloader")
          # install-grub2.pl messages
          assert "updating GRUB 2 menu..." in result
          assert "installing the GRUB 2 boot loader on /dev/vda..." in result
          # GRUB message
          assert "Installation finished. No error reported." in result
          # at this point we've tested regression #262724, but haven't tested the bootloader itself
          # TODO: figure out how to how to tell the test driver to start the bootloader instead of
          # booting into the kernel directly.
    '';
})