nixos/grub: Adds background color and mode options
The background color option is self-explanatory. The mode is either `normal` or `stretch`, they are as defined by GRUB, where normal will put the image in the top-left corner of the menu, and stretch is the default, where it stretches the image without consideration for the aspect ratio. * https://www.gnu.org/software/grub/manual/grub/grub.html#background_005fimage
This commit is contained in:
parent
bc5b26b4ab
commit
e8406f937e
@ -38,6 +38,8 @@ let
|
|||||||
in
|
in
|
||||||
pkgs.writeText "grub-config.xml" (builtins.toXML
|
pkgs.writeText "grub-config.xml" (builtins.toXML
|
||||||
{ splashImage = f cfg.splashImage;
|
{ splashImage = f cfg.splashImage;
|
||||||
|
splashMode = f cfg.splashMode;
|
||||||
|
backgroundColor = f cfg.backgroundColor;
|
||||||
grub = f grub;
|
grub = f grub;
|
||||||
grubTarget = f (grub.grubTarget or "");
|
grubTarget = f (grub.grubTarget or "");
|
||||||
shell = "${pkgs.runtimeShell}";
|
shell = "${pkgs.runtimeShell}";
|
||||||
@ -328,6 +330,31 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
backgroundColor = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
|
example = "#7EBAE4";
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Background color to be used for GRUB to fill the areas the image isn't filling.
|
||||||
|
|
||||||
|
<note><para>
|
||||||
|
This options has no effect for GRUB 1.
|
||||||
|
</para></note>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
splashMode = mkOption {
|
||||||
|
type = types.enum [ "normal" "stretch" ];
|
||||||
|
default = "stretch";
|
||||||
|
description = ''
|
||||||
|
Whether to stretch the image or show the image in the top-left corner unstretched.
|
||||||
|
|
||||||
|
<note><para>
|
||||||
|
This options has no effect for GRUB 1.
|
||||||
|
</para></note>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
font = mkOption {
|
font = mkOption {
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
default = "${realGrub}/share/grub/unicode.pf2";
|
default = "${realGrub}/share/grub/unicode.pf2";
|
||||||
|
@ -51,6 +51,8 @@ my $extraEntries = get("extraEntries");
|
|||||||
my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
|
my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
|
||||||
my $extraInitrd = get("extraInitrd");
|
my $extraInitrd = get("extraInitrd");
|
||||||
my $splashImage = get("splashImage");
|
my $splashImage = get("splashImage");
|
||||||
|
my $splashMode = get("splashMode");
|
||||||
|
my $backgroundColor = get("backgroundColor");
|
||||||
my $configurationLimit = int(get("configurationLimit"));
|
my $configurationLimit = int(get("configurationLimit"));
|
||||||
my $copyKernels = get("copyKernels") eq "true";
|
my $copyKernels = get("copyKernels") eq "true";
|
||||||
my $timeout = int(get("timeout"));
|
my $timeout = int(get("timeout"));
|
||||||
@ -307,10 +309,15 @@ else {
|
|||||||
if ($suffix eq ".jpg") {
|
if ($suffix eq ".jpg") {
|
||||||
$suffix = ".jpeg";
|
$suffix = ".jpeg";
|
||||||
}
|
}
|
||||||
|
if ($backgroundColor) {
|
||||||
|
$conf .= "
|
||||||
|
background_color '$backgroundColor'
|
||||||
|
";
|
||||||
|
}
|
||||||
copy $splashImage, "$bootPath/background$suffix" or die "cannot copy $splashImage to $bootPath\n";
|
copy $splashImage, "$bootPath/background$suffix" or die "cannot copy $splashImage to $bootPath\n";
|
||||||
$conf .= "
|
$conf .= "
|
||||||
insmod " . substr($suffix, 1) . "
|
insmod " . substr($suffix, 1) . "
|
||||||
if background_image " . $grubBoot->path . "/background$suffix; then
|
if background_image --mode '$splashMode' " . $grubBoot->path . "/background$suffix; then
|
||||||
set color_normal=white/black
|
set color_normal=white/black
|
||||||
set color_highlight=black/white
|
set color_highlight=black/white
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user