diff --git a/modules/installer/cd-dvd/iso-image.nix b/modules/installer/cd-dvd/iso-image.nix index b8398825057..c6b28e78ea8 100644 --- a/modules/installer/cd-dvd/iso-image.nix +++ b/modules/installer/cd-dvd/iso-image.nix @@ -58,7 +58,7 @@ let # The Grub image. grubImage = pkgs.runCommand "grub_eltorito" {} '' - ${pkgs.grub2}/bin/grub-mkimage -o tmp biosdisk iso9660 help linux linux16 sh chain + ${pkgs.grub2}/bin/grub-mkimage -o tmp biosdisk iso9660 help linux linux16 sh chain gfxterm vbe png jpeg cat ${pkgs.grub2}/lib/grub/*/cdboot.img tmp > $out ''; # */ @@ -66,12 +66,27 @@ let # The configuration file for Grub. grubCfg = '' - set default = 0 - set timeout = 10 + set default=0 + set timeout=10 - #splashimage /boot/background.xpm.gz + if loadfont /boot/grub/unicode.pf2; then + set gfxmode=640x480 + insmod gfxterm + insmod vbe + terminal_output.gfxterm - ${config.boot.extraGrubEntries} + insmod png + if background_image /boot/grub/splash.png; then + set color_normal=white/black + set color_highlight=black/white + else + set menu_color_normal=cyan/blue + set menu_color_highlight=white/blue + fi + + fi + + ${config.boot.loader.grub.extraEntries} ''; in @@ -79,6 +94,8 @@ in { require = options; + boot.loader.grub.version = 2; + # In stage 1 of the boot, mount the CD/DVD as the root FS by label # so that we don't need to know its device. fileSystems = @@ -133,8 +150,11 @@ in { source = config.system.build.initialRamdisk + "/initrd"; target = "/boot/initrd"; } - { source = config.boot.grubSplashImage; - target = "/boot/background.xpm.gz"; + { source = "${pkgs.grub2}/share/grub/unicode.pf2"; + target = "/boot/grub/unicode.pf2"; + } + { source = config.boot.loader.grub.splashImage; + target = "/boot/grub/splash.png"; } { source = config.system.build.squashfsStore; target = "/nix-store.squashfs"; @@ -159,7 +179,7 @@ in ]; # The Grub menu. - boot.extraGrubEntries = + boot.loader.grub.extraEntries = '' menuentry "Boot from hard disk" { set root=(hd0) diff --git a/modules/installer/cd-dvd/memtest.nix b/modules/installer/cd-dvd/memtest.nix index 4bf3ee5a53a..2ec35dcc8fb 100644 --- a/modules/installer/cd-dvd/memtest.nix +++ b/modules/installer/cd-dvd/memtest.nix @@ -10,7 +10,7 @@ let in { - boot.extraGrubEntries = + boot.loader.grub.extraEntries = '' menuentry "Memtest86+" { linux16 ${memtestPath} diff --git a/modules/installer/grub/grub.nix b/modules/installer/grub/grub.nix index cb716a2a84e..9fe65a7bceb 100644 --- a/modules/installer/grub/grub.nix +++ b/modules/installer/grub/grub.nix @@ -98,10 +98,7 @@ in sha256 = "14kqdx2lfqvh40h6fjjzqgff1mwk74dmbjvmqphi6azzra7z8d59"; } # GRUB 1.97 doesn't support gzipped XPMs. - else pkgs.fetchurl { - url = http://www.gnu.org/graphics/winkler-gnu-blue.png; - sha256 = "0y8fvxalwxyid4k438k7c21bnv728qjsb92rqfapsmpv2bcj7f6k"; - }; + else ./winkler-gnu-blue-640x480.png; example = null; description = '' Background image used for GRUB. It must be a 640x480, diff --git a/modules/installer/grub/winkler-gnu-blue-640x480.png b/modules/installer/grub/winkler-gnu-blue-640x480.png new file mode 100644 index 00000000000..35bbb57b51e Binary files /dev/null and b/modules/installer/grub/winkler-gnu-blue-640x480.png differ diff --git a/modules/installer/grub/winkler-gnu-blue.README b/modules/installer/grub/winkler-gnu-blue.README new file mode 100644 index 00000000000..9616362dce2 --- /dev/null +++ b/modules/installer/grub/winkler-gnu-blue.README @@ -0,0 +1,6 @@ +This is a resized version of + + http://www.gnu.org/graphics/winkler-gnu-blue.png + +by Kyle Winkler and released under the Free Art License +(http://artlibre.org/licence.php/lalgb.html).