Unverified Commit 4bf13664 authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

Merge pull request #262724 from thiagokokada/fix-install-bootloader

nixos-rebuild: fix --install-bootloader flag with systemd-run
parents 2f90fcb9 65cb8b4e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -97,6 +97,8 @@ in rec {
        (onSystems ["x86_64-linux"] "nixos.tests.installer.simpleUefiSystemdBoot")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.simple")
        (onSystems ["x86_64-linux"] "nixos.tests.installer.swraid")
        (onSystems ["x86_64-linux"] "nixos.tests.nixos-rebuild-install-bootloader")
        (onSystems ["x86_64-linux"] "nixos.tests.nixos-rebuild-specialisations")
        (onFullSupported "nixos.tests.ipv6")
        (onFullSupported "nixos.tests.keymap.azerty")
        (onFullSupported "nixos.tests.keymap.colemak")
+2 −1
Original line number Diff line number Diff line
@@ -569,7 +569,8 @@ in {
  nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
  nixops = handleTest ./nixops/default.nix {};
  nixos-generate-config = handleTest ./nixos-generate-config.nix {};
  nixos-rebuild-specialisations = handleTest ./nixos-rebuild-specialisations.nix {};
  nixos-rebuild-install-bootloader = handleTestOn ["x86_64-linux"] ./nixos-rebuild-install-bootloader.nix {};
  nixos-rebuild-specialisations = handleTest ["x86_64-linux"] ./nixos-rebuild-specialisations.nix {};
  nixpkgs = pkgs.callPackage ../modules/misc/nixpkgs/test.nix { inherit evalMinimalConfig; };
  node-red = handleTest ./node-red.nix {};
  nomad = handleTest ./nomad.nix {};
+73 −0
Original line number Diff line number Diff line
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.
    '';
})
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ substituteAll {

  # run some a simple installer tests to make sure nixos-rebuild still works for them
  passthru.tests = {
    install-bootloader = nixosTests.nixos-rebuild-install-bootloader;
    simple-installer = nixosTests.installer.simple;
    specialisations = nixosTests.nixos-rebuild-specialisations;
  };
+7 −1
Original line number Diff line number Diff line
@@ -659,6 +659,7 @@ if [[ "$action" = switch || "$action" = boot || "$action" = test || "$action" =
    cmd=(
        "systemd-run"
        "-E" "LOCALE_ARCHIVE" # Will be set to new value early in switch-to-configuration script, but interpreter starts out with old value
        "-E" "NIXOS_INSTALL_BOOTLOADER"
        "--collect"
        "--no-ask-password"
        "--pty"
@@ -679,7 +680,12 @@ if [[ "$action" = switch || "$action" = boot || "$action" = test || "$action" =
        cmd=()
    elif ! targetHostCmd "${cmd[@]}" true &>/dev/null; then
        logVerbose "Skipping systemd-run to switch configuration since it is not working in target host."
        cmd=("env" "-i" "LOCALE_ARCHIVE=$LOCALE_ARCHIVE")
        cmd=(
            "env"
            "-i"
            "LOCALE_ARCHIVE=$LOCALE_ARCHIVE"
            "NIXOS_INSTALL_BOOTLOADER=$NIXOS_INSTALL_BOOTLOADER"
        )
    else
        logVerbose "Using systemd-run to switch configuration."
    fi