grub: add grub.useOSProber option (#22558)
This commit is contained in:
parent
5d00edcf4f
commit
0b87efacb1
@ -53,12 +53,14 @@ let
|
|||||||
inherit (args) devices;
|
inherit (args) devices;
|
||||||
inherit (efi) canTouchEfiVariables;
|
inherit (efi) canTouchEfiVariables;
|
||||||
inherit (cfg)
|
inherit (cfg)
|
||||||
version extraConfig extraPerEntryConfig extraEntries forceInstall
|
version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber
|
||||||
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
|
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
|
||||||
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
||||||
path = (makeBinPath ([
|
path = (makeBinPath ([
|
||||||
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs
|
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs
|
||||||
pkgs.utillinux ] ++ (if cfg.efiSupport && (cfg.version == 2) then [pkgs.efibootmgr ] else [])
|
pkgs.utillinux ]
|
||||||
|
++ (optional (cfg.efiSupport && (cfg.version == 2)) pkgs.efibootmgr)
|
||||||
|
++ (optionals cfg.useOSProber [pkgs.busybox pkgs.os-prober])
|
||||||
)) + ":" + (makeSearchPathOutput "bin" "sbin" [
|
)) + ":" + (makeSearchPathOutput "bin" "sbin" [
|
||||||
pkgs.mdadm pkgs.utillinux
|
pkgs.mdadm pkgs.utillinux
|
||||||
]);
|
]);
|
||||||
@ -265,6 +267,14 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useOSProber = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
If set to true, append entries for other OSs detected by os-prober.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
splashImage = mkOption {
|
splashImage = mkOption {
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
example = literalExample "./my-background.png";
|
example = literalExample "./my-background.png";
|
||||||
|
@ -424,10 +424,17 @@ if ($extraPrepareConfig ne "") {
|
|||||||
system((get("shell"), "-c", $extraPrepareConfig));
|
system((get("shell"), "-c", $extraPrepareConfig));
|
||||||
}
|
}
|
||||||
|
|
||||||
# Atomically update the GRUB config.
|
# write the GRUB config.
|
||||||
my $confFile = $grubVersion == 1 ? "$bootPath/grub/menu.lst" : "$bootPath/grub/grub.cfg";
|
my $confFile = $grubVersion == 1 ? "$bootPath/grub/menu.lst" : "$bootPath/grub/grub.cfg";
|
||||||
my $tmpFile = $confFile . ".tmp";
|
my $tmpFile = $confFile . ".tmp";
|
||||||
writeFile($tmpFile, $conf);
|
writeFile($tmpFile, $conf);
|
||||||
|
|
||||||
|
# Append entries detected by os-prober
|
||||||
|
if (get("useOsprober") eq "true") {
|
||||||
|
system(get("shell"), "-c", "pkgdatadir=$grub/share/grub $grub/etc/grub.d/30_os-prober >> $tmpFile");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Atomically switch to the new config
|
||||||
rename $tmpFile, $confFile or die "cannot rename $tmpFile to $confFile\n";
|
rename $tmpFile, $confFile or die "cannot rename $tmpFile to $confFile\n";
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user