diff options
author | worldofpeace <worldofpeace@protonmail.ch> | 2020-02-09 16:09:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-09 16:09:58 -0500 |
commit | d12524fd51285917f741b7b20233fdfdb7ca6c00 (patch) | |
tree | fa39642832389ff81e30c8f8a543b6a1b853fbb3 /nixos | |
parent | da71501662cd2074ca8aa81a15a549c4e31df431 (diff) | |
parent | 7b5550a3fc72cc3c41c4143732502a0787cb17a0 (diff) | |
download | nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar.gz nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar.bz2 nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar.lz nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar.xz nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.tar.zst nixpkgs-d12524fd51285917f741b7b20233fdfdb7ca6c00.zip |
Merge pull request #78453 from wedens/memtest-efi-grub
nixos/grub: make memtest work with EFI
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/system/boot/loader/grub/memtest.nix | 57 |
1 files changed, 40 insertions, 17 deletions
diff --git a/nixos/modules/system/boot/loader/grub/memtest.nix b/nixos/modules/system/boot/loader/grub/memtest.nix index 94e5a14174b..71e50dd0577 100644 --- a/nixos/modules/system/boot/loader/grub/memtest.nix +++ b/nixos/modules/system/boot/loader/grub/memtest.nix @@ -1,4 +1,4 @@ -# This module adds Memtest86+ to the GRUB boot menu. +# This module adds Memtest86+/Memtest86 to the GRUB boot menu. { config, lib, pkgs, ... }: @@ -6,6 +6,7 @@ with lib; let memtest86 = pkgs.memtest86plus; + efiSupport = config.boot.loader.grub.efiSupport; cfg = config.boot.loader.grub.memtest86; in @@ -18,8 +19,11 @@ in default = false; type = types.bool; description = '' - Make Memtest86+, a memory testing program, available from the - GRUB boot menu. + Make Memtest86+ (or MemTest86 if EFI support is enabled), + a memory testing program, available from the + GRUB boot menu. MemTest86 is an unfree program, so + this requires <literal>allowUnfree</literal> to be set to + <literal>true</literal>. ''; }; @@ -75,19 +79,38 @@ in }; }; - config = mkIf cfg.enable { - - boot.loader.grub.extraEntries = - if config.boot.loader.grub.version == 2 then - '' - menuentry "Memtest86+" { - linux16 @bootRoot@/memtest.bin ${toString cfg.params} - } - '' - else - throw "Memtest86+ is not supported with GRUB 1."; - - boot.loader.grub.extraFiles."memtest.bin" = "${memtest86}/memtest.bin"; + config = mkMerge [ + (mkIf (cfg.enable && efiSupport) { + assertions = [ + { + assertion = cfg.params == []; + message = "Parameters are not available for MemTest86"; + } + ]; + + boot.loader.grub.extraFiles = { + "memtest86.efi" = "${pkgs.memtest86-efi}/BOOTX64.efi"; + }; - }; + boot.loader.grub.extraEntries = '' + menuentry "Memtest86" { + chainloader /memtest86.efi + } + ''; + }) + + (mkIf (cfg.enable && !efiSupport) { + boot.loader.grub.extraEntries = + if config.boot.loader.grub.version == 2 then + '' + menuentry "Memtest86+" { + linux16 @bootRoot@/memtest.bin ${toString cfg.params} + } + '' + else + throw "Memtest86+ is not supported with GRUB 1."; + + boot.loader.grub.extraFiles."memtest.bin" = "${memtest86}/memtest.bin"; + }) + ]; } |