summary refs log tree commit diff
path: root/nixos/modules/system/boot/loader/grub
diff options
context:
space:
mode:
authorSamuel Dionne-Riel <samuel@dionne-riel.com>2018-05-13 19:51:50 -0400
committerSamuel Dionne-Riel <samuel@dionne-riel.com>2018-05-13 19:51:50 -0400
commit0ccfe14e25771d83460305ee09d99cb449eea15a (patch)
tree1770f69ff9f3d81580eb79ae6ca6d49cd952ef85 /nixos/modules/system/boot/loader/grub
parent8f3a541a3d096e5b8cd70112632bd8a6af283010 (diff)
downloadnixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar.gz
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar.bz2
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar.lz
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar.xz
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.tar.zst
nixlib-0ccfe14e25771d83460305ee09d99cb449eea15a.zip
nixos/grub: Implements use of file format for splashImage.
GRUB 2.0 supports png, jpeg and tga. This will use the image's suffix to
load the right module.

As jpeg module is named jpeg, jpg is renamed jpeg.

If the user uses wrong image suffix for an image, it wouldn't work anyway.

This will leave up to two additional left-over files in /boot/ if user switches
through all the supported file formats. The module already left the png
image if the user disabled the splash image.
Diffstat (limited to 'nixos/modules/system/boot/loader/grub')
-rw-r--r--nixos/modules/system/boot/loader/grub/install-grub.pl14
1 files changed, 9 insertions, 5 deletions
diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl
index 8bd203106f55..1aa14729a75c 100644
--- a/nixos/modules/system/boot/loader/grub/install-grub.pl
+++ b/nixos/modules/system/boot/loader/grub/install-grub.pl
@@ -299,12 +299,16 @@ else {
         copy $font, "$bootPath/converted-font.pf2" or die "cannot copy $font to $bootPath\n";
     }
     if ($splashImage) {
-        # FIXME: GRUB 1.97 doesn't resize the background image if it
-        # doesn't match the video resolution.
-        copy $splashImage, "$bootPath/background.png" or die "cannot copy $splashImage to $bootPath\n";
+        # Keeps the image's extension.
+        my ($filename, $dirs, $suffix) = fileparse($splashImage, qr"\..[^.]*$");
+        # The module for jpg is jpeg.
+        if ($suffix eq ".jpg") {
+            $suffix = ".jpeg";
+        }
+        copy $splashImage, "$bootPath/background$suffix" or die "cannot copy $splashImage to $bootPath\n";
         $conf .= "
-            insmod png
-            if background_image " . $grubBoot->path . "/background.png; then
+            insmod " . substr($suffix, 1) . "
+            if background_image " . $grubBoot->path . "/background$suffix; then
               set color_normal=white/black
               set color_highlight=black/white
             else