Loading nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix +142 −75 Original line number Diff line number Diff line { config, lib, pkgs, ... }: { config, lib, pkgs, ... }: with lib; Loading @@ -10,9 +15,12 @@ let # We check the source code in a derivation that does not depend on the # system configuration so that most users don't have to redo the check and require # the necessary dependencies. checkedSource = pkgs.runCommand "systemd-boot" { checkedSource = pkgs.runCommand "systemd-boot" { preferLocalBuild = true; } '' } '' install -m755 -D ${./systemd-boot-builder.py} $out ${lib.getExe pkgs.buildPackages.mypy} \ --no-implicit-optional \ Loading Loading @@ -44,13 +52,17 @@ let configurationLimit = if cfg.configurationLimit == null then 0 else cfg.configurationLimit; inherit (cfg) consoleMode graceful editor rebootForBitlocker; inherit (cfg) consoleMode graceful editor rebootForBitlocker ; inherit (efi) efiSysMountPoint canTouchEfiVariables; bootMountPoint = if cfg.xbootldrMountPoint != null then cfg.xbootldrMountPoint else efi.efiSysMountPoint; bootMountPoint = if cfg.xbootldrMountPoint != null then cfg.xbootldrMountPoint else efi.efiSysMountPoint; nixosDir = "/EFI/nixos"; Loading @@ -66,23 +78,27 @@ let exit 1 } ${pkgs.util-linuxMinimal}/bin/findmnt ${efiSysMountPoint} > /dev/null || fail efiSysMountPoint ${efiSysMountPoint} ${lib.optionalString (cfg.xbootldrMountPoint != null) "${pkgs.util-linuxMinimal}/bin/findmnt ${cfg.xbootldrMountPoint} > /dev/null || fail xbootldrMountPoint ${cfg.xbootldrMountPoint}"} ${lib.optionalString (cfg.xbootldrMountPoint != null) "${pkgs.util-linuxMinimal}/bin/findmnt ${cfg.xbootldrMountPoint} > /dev/null || fail xbootldrMountPoint ${cfg.xbootldrMountPoint}" } ''; copyExtraFiles = pkgs.writeShellScript "copy-extra-files" '' empty_file=$(${pkgs.coreutils}/bin/mktemp) ${concatStrings (mapAttrsToList (n: v: '' ${concatStrings ( mapAttrsToList (n: v: '' ${pkgs.coreutils}/bin/install -Dp "${v}" "${bootMountPoint}/"${escapeShellArg n} ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/"${escapeShellArg n} '') cfg.extraFiles)} '') cfg.extraFiles )} ${concatStrings (mapAttrsToList (n: v: '' ${concatStrings ( mapAttrsToList (n: v: '' ${pkgs.coreutils}/bin/install -Dp "${pkgs.writeText n v}" "${bootMountPoint}/loader/entries/"${escapeShellArg n} ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/loader/entries/"${escapeShellArg n} '') cfg.extraEntries)} '') cfg.extraEntries )} ''; }; Loading @@ -91,20 +107,58 @@ let ${systemdBootBuilder}/bin/systemd-boot "$@" ${cfg.extraInstallCommands} ''; in { in { meta.maintainers = with lib.maintainers; [ julienmalka ]; imports = [ (mkRenamedOptionModule [ "boot" "loader" "gummiboot" "enable" ] [ "boot" "loader" "systemd-boot" "enable" ]) imports = [ (mkRenamedOptionModule [ "boot" "loader" "gummiboot" "enable" ] [ "boot" "loader" "systemd-boot" "enable" ] ) (lib.mkChangedOptionModule [ "boot" "loader" "systemd-boot" "memtest86" "entryFilename" ] [ "boot" "loader" "systemd-boot" "memtest86" "sortKey" ] [ "boot" "loader" "systemd-boot" "memtest86" "entryFilename" ] [ "boot" "loader" "systemd-boot" "memtest86" "sortKey" ] (config: lib.strings.removeSuffix ".conf" config.boot.loader.systemd-boot.memtest86.entryFilename) ) (lib.mkChangedOptionModule [ "boot" "loader" "systemd-boot" "netbootxyz" "entryFilename" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "sortKey" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "entryFilename" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "sortKey" ] (config: lib.strings.removeSuffix ".conf" config.boot.loader.systemd-boot.netbootxyz.entryFilename) ) ]; Loading Loading @@ -218,7 +272,15 @@ in { consoleMode = mkOption { default = "keep"; type = types.enum [ "0" "1" "2" "5" "auto" "max" "keep" ]; type = types.enum [ "0" "1" "2" "5" "auto" "max" "keep" ]; description = '' The resolution of the console. The following values are valid: Loading Loading @@ -352,7 +414,8 @@ in { }; config = mkIf cfg.enable { assertions = [ assertions = [ { assertion = (hasPrefix "/" efi.efiSysMountPoint); message = "The ESP mount point '${toString efi.efiSysMountPoint}' must be an absolute path"; Loading @@ -370,10 +433,14 @@ in { message = "This kernel does not support the EFI boot stub"; } { assertion = cfg.installDeviceTree -> config.hardware.deviceTree.enable -> config.hardware.deviceTree.name != null; assertion = cfg.installDeviceTree -> config.hardware.deviceTree.enable -> config.hardware.deviceTree.name != null; message = "Cannot install devicetree without 'config.hardware.deviceTree.enable' enabled and 'config.hardware.deviceTree.name' set"; } ] ++ concatMap (filename: [ ] ++ concatMap (filename: [ { assertion = !(hasInfix "/" filename); message = "boot.loader.systemd-boot.extraEntries.${lib.strings.escapeNixIdentifier filename} is invalid: entries within folders are not supported"; Loading nixos/tests/systemd-boot.nix +247 −189 Original line number Diff line number Diff line { system ? builtins.currentSystem, { system ? builtins.currentSystem, config ? { }, pkgs ? import ../.. { inherit system config; } pkgs ? import ../.. { inherit system config; }, }: with import ../lib/testing-python.nix { inherit system pkgs; }; Loading @@ -16,7 +17,13 @@ let system.switch.enable = true; }; commonXbootldr = { config, lib, pkgs, ... }: commonXbootldr = { config, lib, pkgs, ... }: let diskImage = import ../lib/make-disk-image.nix { inherit config lib pkgs; Loading Loading @@ -85,7 +92,10 @@ in { basic = makeTest { name = "systemd-boot"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = common; Loading Loading @@ -117,9 +127,12 @@ in virtualisation.useSecureBoot = true; }; testScript = let testScript = let efiArch = pkgs.stdenv.hostPlatform.efiArch; in { nodes, ... }: '' in { nodes, ... }: '' machine.start(allow_reboot=True) machine.wait_for_unit("multi-user.target") Loading @@ -141,7 +154,9 @@ in nodes.machine = commonXbootldr; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' ${customDiskImage nodes} machine.start() Loading @@ -164,9 +179,14 @@ in # Check that specialisations create corresponding boot entries. specialisation = makeTest { name = "systemd-boot-specialisation"; meta.maintainers = with pkgs.lib.maintainers; [ lukegb julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ lukegb julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; specialisation.something.configuration = { boot.loader.systemd-boot.sortKey = "something"; Loading @@ -179,14 +199,18 @@ in # the correct contents. boot.loader.systemd-boot.installDeviceTree = pkgs.stdenv.hostPlatform.isAarch64; hardware.deviceTree.name = "dummy.dtb"; hardware.deviceTree.package = lib.mkForce (pkgs.runCommand "dummy-devicetree-package" { } '' hardware.deviceTree.package = lib.mkForce ( pkgs.runCommand "dummy-devicetree-package" { } '' mkdir -p $out cp ${pkgs.emptyFile} $out/dummy.dtb ''); '' ); }; }; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' machine.start() machine.wait_for_unit("multi-user.target") Loading @@ -199,7 +223,8 @@ in machine.succeed( "grep 'sort-key something' /boot/loader/entries/nixos-generation-1-specialisation-something.conf" ) '' + pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isAarch64 '' '' + pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isAarch64 '' machine.succeed( r"grep 'devicetree /EFI/nixos/[a-z0-9]\{32\}.*dummy' /boot/loader/entries/nixos-generation-1-specialisation-something.conf" ) Loading @@ -209,9 +234,14 @@ in # Boot without having created an EFI entry--instead using default "/EFI/BOOT/BOOTX64.EFI" fallback = makeTest { name = "systemd-boot-fallback"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.efi.canTouchEfiVariables = mkForce false; }; Loading @@ -235,7 +265,10 @@ in update = makeTest { name = "systemd-boot-update"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = common; Loading Loading @@ -270,11 +303,15 @@ in ''; }; memtest86 = with pkgs.lib; optionalAttrs (meta.availableOn { inherit system; } pkgs.memtest86plus) (makeTest { memtest86 = with pkgs.lib; optionalAttrs (meta.availableOn { inherit system; } pkgs.memtest86plus) (makeTest { name = "systemd-boot-memtest86"; meta.maintainers = with maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.memtest86.enable = true; }; Loading @@ -289,7 +326,9 @@ in name = "systemd-boot-netbootxyz"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.netbootxyz.enable = true; }; Loading @@ -304,7 +343,9 @@ in name = "systemd-boot-memtest-sortkey"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.memtest86.enable = true; boot.loader.systemd-boot.memtest86.sortKey = "apple"; Loading @@ -321,12 +362,16 @@ in name = "systemd-boot-entry-filename-xbootldr"; meta.maintainers = with pkgs.lib.maintainers; [ sdht0 ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ commonXbootldr ]; boot.loader.systemd-boot.memtest86.enable = true; }; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' ${customDiskImage nodes} machine.start() Loading @@ -342,7 +387,9 @@ in name = "systemd-boot-extra-entries"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraEntries = { "banana.conf" = '' Loading @@ -361,7 +408,9 @@ in name = "systemd-boot-extra-files"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraFiles = { "efi/fruits/tomato.efi" = pkgs.netbootxyz-efi; Loading @@ -381,7 +430,9 @@ in nodes = { inherit common; machine = { pkgs, nodes, ... }: { machine = { pkgs, nodes, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraFiles = { "efi/fruits/tomato.efi" = pkgs.netbootxyz-efi; Loading @@ -394,17 +445,22 @@ in ]; }; with_netbootxyz = { pkgs, ... }: { with_netbootxyz = { pkgs, ... }: { imports = [ common ]; boot.loader.systemd-boot.netbootxyz.enable = true; }; }; testScript = { nodes, ... }: let testScript = { nodes, ... }: let originalSystem = nodes.machine.system.build.toplevel; baseSystem = nodes.common.system.build.toplevel; finalSystem = nodes.with_netbootxyz.system.build.toplevel; in '' in '' machine.succeed("test -e /boot/efi/fruits/tomato.efi") machine.succeed("test -e /boot/efi/nixos/.extra-files/efi/fruits/tomato.efi") Loading Loading @@ -438,7 +494,9 @@ in nodes = { inherit common; machine = { pkgs, nodes, ... }: { machine = { pkgs, nodes, ... }: { imports = [ common ]; # These are configs for different nodes, but we'll use them here in `machine` Loading @@ -448,7 +506,8 @@ in }; }; testScript = { nodes, ... }: testScript = { nodes, ... }: let baseSystem = nodes.common.system.build.toplevel; in Loading @@ -461,8 +520,7 @@ in ''; }; no-bootspec = makeTest { no-bootspec = makeTest { name = "systemd-boot-no-bootspec"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; Loading Loading
nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix +142 −75 Original line number Diff line number Diff line { config, lib, pkgs, ... }: { config, lib, pkgs, ... }: with lib; Loading @@ -10,9 +15,12 @@ let # We check the source code in a derivation that does not depend on the # system configuration so that most users don't have to redo the check and require # the necessary dependencies. checkedSource = pkgs.runCommand "systemd-boot" { checkedSource = pkgs.runCommand "systemd-boot" { preferLocalBuild = true; } '' } '' install -m755 -D ${./systemd-boot-builder.py} $out ${lib.getExe pkgs.buildPackages.mypy} \ --no-implicit-optional \ Loading Loading @@ -44,13 +52,17 @@ let configurationLimit = if cfg.configurationLimit == null then 0 else cfg.configurationLimit; inherit (cfg) consoleMode graceful editor rebootForBitlocker; inherit (cfg) consoleMode graceful editor rebootForBitlocker ; inherit (efi) efiSysMountPoint canTouchEfiVariables; bootMountPoint = if cfg.xbootldrMountPoint != null then cfg.xbootldrMountPoint else efi.efiSysMountPoint; bootMountPoint = if cfg.xbootldrMountPoint != null then cfg.xbootldrMountPoint else efi.efiSysMountPoint; nixosDir = "/EFI/nixos"; Loading @@ -66,23 +78,27 @@ let exit 1 } ${pkgs.util-linuxMinimal}/bin/findmnt ${efiSysMountPoint} > /dev/null || fail efiSysMountPoint ${efiSysMountPoint} ${lib.optionalString (cfg.xbootldrMountPoint != null) "${pkgs.util-linuxMinimal}/bin/findmnt ${cfg.xbootldrMountPoint} > /dev/null || fail xbootldrMountPoint ${cfg.xbootldrMountPoint}"} ${lib.optionalString (cfg.xbootldrMountPoint != null) "${pkgs.util-linuxMinimal}/bin/findmnt ${cfg.xbootldrMountPoint} > /dev/null || fail xbootldrMountPoint ${cfg.xbootldrMountPoint}" } ''; copyExtraFiles = pkgs.writeShellScript "copy-extra-files" '' empty_file=$(${pkgs.coreutils}/bin/mktemp) ${concatStrings (mapAttrsToList (n: v: '' ${concatStrings ( mapAttrsToList (n: v: '' ${pkgs.coreutils}/bin/install -Dp "${v}" "${bootMountPoint}/"${escapeShellArg n} ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/"${escapeShellArg n} '') cfg.extraFiles)} '') cfg.extraFiles )} ${concatStrings (mapAttrsToList (n: v: '' ${concatStrings ( mapAttrsToList (n: v: '' ${pkgs.coreutils}/bin/install -Dp "${pkgs.writeText n v}" "${bootMountPoint}/loader/entries/"${escapeShellArg n} ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/loader/entries/"${escapeShellArg n} '') cfg.extraEntries)} '') cfg.extraEntries )} ''; }; Loading @@ -91,20 +107,58 @@ let ${systemdBootBuilder}/bin/systemd-boot "$@" ${cfg.extraInstallCommands} ''; in { in { meta.maintainers = with lib.maintainers; [ julienmalka ]; imports = [ (mkRenamedOptionModule [ "boot" "loader" "gummiboot" "enable" ] [ "boot" "loader" "systemd-boot" "enable" ]) imports = [ (mkRenamedOptionModule [ "boot" "loader" "gummiboot" "enable" ] [ "boot" "loader" "systemd-boot" "enable" ] ) (lib.mkChangedOptionModule [ "boot" "loader" "systemd-boot" "memtest86" "entryFilename" ] [ "boot" "loader" "systemd-boot" "memtest86" "sortKey" ] [ "boot" "loader" "systemd-boot" "memtest86" "entryFilename" ] [ "boot" "loader" "systemd-boot" "memtest86" "sortKey" ] (config: lib.strings.removeSuffix ".conf" config.boot.loader.systemd-boot.memtest86.entryFilename) ) (lib.mkChangedOptionModule [ "boot" "loader" "systemd-boot" "netbootxyz" "entryFilename" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "sortKey" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "entryFilename" ] [ "boot" "loader" "systemd-boot" "netbootxyz" "sortKey" ] (config: lib.strings.removeSuffix ".conf" config.boot.loader.systemd-boot.netbootxyz.entryFilename) ) ]; Loading Loading @@ -218,7 +272,15 @@ in { consoleMode = mkOption { default = "keep"; type = types.enum [ "0" "1" "2" "5" "auto" "max" "keep" ]; type = types.enum [ "0" "1" "2" "5" "auto" "max" "keep" ]; description = '' The resolution of the console. The following values are valid: Loading Loading @@ -352,7 +414,8 @@ in { }; config = mkIf cfg.enable { assertions = [ assertions = [ { assertion = (hasPrefix "/" efi.efiSysMountPoint); message = "The ESP mount point '${toString efi.efiSysMountPoint}' must be an absolute path"; Loading @@ -370,10 +433,14 @@ in { message = "This kernel does not support the EFI boot stub"; } { assertion = cfg.installDeviceTree -> config.hardware.deviceTree.enable -> config.hardware.deviceTree.name != null; assertion = cfg.installDeviceTree -> config.hardware.deviceTree.enable -> config.hardware.deviceTree.name != null; message = "Cannot install devicetree without 'config.hardware.deviceTree.enable' enabled and 'config.hardware.deviceTree.name' set"; } ] ++ concatMap (filename: [ ] ++ concatMap (filename: [ { assertion = !(hasInfix "/" filename); message = "boot.loader.systemd-boot.extraEntries.${lib.strings.escapeNixIdentifier filename} is invalid: entries within folders are not supported"; Loading
nixos/tests/systemd-boot.nix +247 −189 Original line number Diff line number Diff line { system ? builtins.currentSystem, { system ? builtins.currentSystem, config ? { }, pkgs ? import ../.. { inherit system config; } pkgs ? import ../.. { inherit system config; }, }: with import ../lib/testing-python.nix { inherit system pkgs; }; Loading @@ -16,7 +17,13 @@ let system.switch.enable = true; }; commonXbootldr = { config, lib, pkgs, ... }: commonXbootldr = { config, lib, pkgs, ... }: let diskImage = import ../lib/make-disk-image.nix { inherit config lib pkgs; Loading Loading @@ -85,7 +92,10 @@ in { basic = makeTest { name = "systemd-boot"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = common; Loading Loading @@ -117,9 +127,12 @@ in virtualisation.useSecureBoot = true; }; testScript = let testScript = let efiArch = pkgs.stdenv.hostPlatform.efiArch; in { nodes, ... }: '' in { nodes, ... }: '' machine.start(allow_reboot=True) machine.wait_for_unit("multi-user.target") Loading @@ -141,7 +154,9 @@ in nodes.machine = commonXbootldr; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' ${customDiskImage nodes} machine.start() Loading @@ -164,9 +179,14 @@ in # Check that specialisations create corresponding boot entries. specialisation = makeTest { name = "systemd-boot-specialisation"; meta.maintainers = with pkgs.lib.maintainers; [ lukegb julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ lukegb julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; specialisation.something.configuration = { boot.loader.systemd-boot.sortKey = "something"; Loading @@ -179,14 +199,18 @@ in # the correct contents. boot.loader.systemd-boot.installDeviceTree = pkgs.stdenv.hostPlatform.isAarch64; hardware.deviceTree.name = "dummy.dtb"; hardware.deviceTree.package = lib.mkForce (pkgs.runCommand "dummy-devicetree-package" { } '' hardware.deviceTree.package = lib.mkForce ( pkgs.runCommand "dummy-devicetree-package" { } '' mkdir -p $out cp ${pkgs.emptyFile} $out/dummy.dtb ''); '' ); }; }; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' machine.start() machine.wait_for_unit("multi-user.target") Loading @@ -199,7 +223,8 @@ in machine.succeed( "grep 'sort-key something' /boot/loader/entries/nixos-generation-1-specialisation-something.conf" ) '' + pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isAarch64 '' '' + pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isAarch64 '' machine.succeed( r"grep 'devicetree /EFI/nixos/[a-z0-9]\{32\}.*dummy' /boot/loader/entries/nixos-generation-1-specialisation-something.conf" ) Loading @@ -209,9 +234,14 @@ in # Boot without having created an EFI entry--instead using default "/EFI/BOOT/BOOTX64.EFI" fallback = makeTest { name = "systemd-boot-fallback"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.efi.canTouchEfiVariables = mkForce false; }; Loading @@ -235,7 +265,10 @@ in update = makeTest { name = "systemd-boot-update"; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; meta.maintainers = with pkgs.lib.maintainers; [ danielfullmer julienmalka ]; nodes.machine = common; Loading Loading @@ -270,11 +303,15 @@ in ''; }; memtest86 = with pkgs.lib; optionalAttrs (meta.availableOn { inherit system; } pkgs.memtest86plus) (makeTest { memtest86 = with pkgs.lib; optionalAttrs (meta.availableOn { inherit system; } pkgs.memtest86plus) (makeTest { name = "systemd-boot-memtest86"; meta.maintainers = with maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.memtest86.enable = true; }; Loading @@ -289,7 +326,9 @@ in name = "systemd-boot-netbootxyz"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.netbootxyz.enable = true; }; Loading @@ -304,7 +343,9 @@ in name = "systemd-boot-memtest-sortkey"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.memtest86.enable = true; boot.loader.systemd-boot.memtest86.sortKey = "apple"; Loading @@ -321,12 +362,16 @@ in name = "systemd-boot-entry-filename-xbootldr"; meta.maintainers = with pkgs.lib.maintainers; [ sdht0 ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ commonXbootldr ]; boot.loader.systemd-boot.memtest86.enable = true; }; testScript = { nodes, ... }: '' testScript = { nodes, ... }: '' ${customDiskImage nodes} machine.start() Loading @@ -342,7 +387,9 @@ in name = "systemd-boot-extra-entries"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraEntries = { "banana.conf" = '' Loading @@ -361,7 +408,9 @@ in name = "systemd-boot-extra-files"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { pkgs, lib, ... }: { nodes.machine = { pkgs, lib, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraFiles = { "efi/fruits/tomato.efi" = pkgs.netbootxyz-efi; Loading @@ -381,7 +430,9 @@ in nodes = { inherit common; machine = { pkgs, nodes, ... }: { machine = { pkgs, nodes, ... }: { imports = [ common ]; boot.loader.systemd-boot.extraFiles = { "efi/fruits/tomato.efi" = pkgs.netbootxyz-efi; Loading @@ -394,17 +445,22 @@ in ]; }; with_netbootxyz = { pkgs, ... }: { with_netbootxyz = { pkgs, ... }: { imports = [ common ]; boot.loader.systemd-boot.netbootxyz.enable = true; }; }; testScript = { nodes, ... }: let testScript = { nodes, ... }: let originalSystem = nodes.machine.system.build.toplevel; baseSystem = nodes.common.system.build.toplevel; finalSystem = nodes.with_netbootxyz.system.build.toplevel; in '' in '' machine.succeed("test -e /boot/efi/fruits/tomato.efi") machine.succeed("test -e /boot/efi/nixos/.extra-files/efi/fruits/tomato.efi") Loading Loading @@ -438,7 +494,9 @@ in nodes = { inherit common; machine = { pkgs, nodes, ... }: { machine = { pkgs, nodes, ... }: { imports = [ common ]; # These are configs for different nodes, but we'll use them here in `machine` Loading @@ -448,7 +506,8 @@ in }; }; testScript = { nodes, ... }: testScript = { nodes, ... }: let baseSystem = nodes.common.system.build.toplevel; in Loading @@ -461,8 +520,7 @@ in ''; }; no-bootspec = makeTest { no-bootspec = makeTest { name = "systemd-boot-no-bootspec"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; Loading