From 9a6f2231b2b3eab3537bc08374e113f8bdcaba85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= <viric@vicerveza.homeunix.net> Date: Mon, 2 Apr 2012 17:19:21 +0000 Subject: [PATCH] Adding a module for memtest86+, so if enabled, will appear in the grub menu. To enable it: boot.loader.grub.memtest86 = true; svn path=/nixos/trunk/; revision=33539 --- modules/installer/grub/grub-menu-builder.sh | 1 + modules/installer/grub/grub.nix | 10 ++++++- modules/installer/grub/memtest.nix | 33 +++++++++++++++++++++ modules/module-list.nix | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 modules/installer/grub/memtest.nix diff --git a/modules/installer/grub/grub-menu-builder.sh b/modules/installer/grub/grub-menu-builder.sh index dfe19a9ffe6b..bdf42dd4d790 100644 --- a/modules/installer/grub/grub-menu-builder.sh +++ b/modules/installer/grub/grub-menu-builder.sh @@ -240,6 +240,7 @@ if test -n "$copyKernels"; then mkdir -p /boot/kernels fi +@extraPrepareConfig@ # Additional entries specified verbatim by the configuration. extraEntries=`cat <<EOF diff --git a/modules/installer/grub/grub.nix b/modules/installer/grub/grub.nix index b7e17c80904f..2d7393b7f870 100644 --- a/modules/installer/grub/grub.nix +++ b/modules/installer/grub/grub.nix @@ -12,7 +12,7 @@ let inherit grub; inherit (pkgs) bash; path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; - inherit (config.boot.loader.grub) copyKernels + inherit (config.boot.loader.grub) copyKernels extraPrepareConfig extraConfig extraEntries extraEntriesBeforeNixOS extraPerEntryConfig splashImage configurationLimit version default timeout; }; @@ -85,6 +85,14 @@ in ''; }; + extraPrepareConfig = mkOption { + default = ""; + description = '' + Additional bash commands to be run at the script that + prepares the grub menu entries. + ''; + }; + extraConfig = mkOption { default = ""; example = "serial; terminal_output.serial"; diff --git a/modules/installer/grub/memtest.nix b/modules/installer/grub/memtest.nix new file mode 100644 index 000000000000..65a5e30d1a54 --- /dev/null +++ b/modules/installer/grub/memtest.nix @@ -0,0 +1,33 @@ +# This module adds Memtest86 to the Grub boot menu on the CD. !!! It +# would be nice if this also worked for normal configurations. + +{config, pkgs, ...}: + +with pkgs.lib; +let + isEnabled = config.boot.loader.grub.memtest86; +in +{ + options = { + boot.loader.grub.memtest86 = mkOption { + default = false; + type = types.bool; + description = '' + Add a menu entry in grub for memtest86+ + ''; + }; + }; + + config.boot.loader.grub = mkIf isEnabled { + extraEntries = + '' + menuentry "Memtest86+" { + linux16 $bootRoot/memtest.bin + } + ''; + extraPrepareConfig = + '' + cp ${pkgs.memtest86}/memtest.bin /boot/memtest.bin; + ''; + }; +} diff --git a/modules/module-list.nix b/modules/module-list.nix index 27be032f3b7c..fdee87506ad0 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -25,6 +25,7 @@ ./installer/efi-boot-stub/efi-boot-stub.nix ./installer/generations-dir/generations-dir.nix ./installer/grub/grub.nix + ./installer/grub/memtest.nix ./installer/init-script/init-script.nix ./installer/tools/nixos-checkout.nix ./installer/tools/tools.nix