Fixes #14831 by using full path for binaries used in install-grub.pl
Both btrfs-progs and utillinux are ~5MB, we may discuss in future to handle this better but I see no better way at the moment than increaing purity in the install process.
This commit is contained in:
parent
2a7293fd9d
commit
f5271680c4
@ -425,13 +425,20 @@ in
|
|||||||
{ path = "/boot"; inherit (cfg) devices; inherit (efi) efiSysMountPoint; }
|
{ path = "/boot"; inherit (cfg) devices; inherit (efi) efiSysMountPoint; }
|
||||||
];
|
];
|
||||||
|
|
||||||
system.build.installBootLoader = pkgs.writeScript "install-grub.sh" (''
|
system.build.installBootLoader =
|
||||||
|
let
|
||||||
|
install-grub-pl = pkgs.substituteAll {
|
||||||
|
src = ./install-grub.pl;
|
||||||
|
inherit (pkgs) utillinux;
|
||||||
|
btrfsprogs = pkgs.btrfs-progs;
|
||||||
|
};
|
||||||
|
in pkgs.writeScript "install-grub.sh" (''
|
||||||
#!${pkgs.stdenv.shell}
|
#!${pkgs.stdenv.shell}
|
||||||
set -e
|
set -e
|
||||||
export PERL5LIB=${makePerlPath (with pkgs.perlPackages; [ FileSlurp XMLLibXML XMLSAX ListCompare ])}
|
export PERL5LIB=${makePerlPath (with pkgs.perlPackages; [ FileSlurp XMLLibXML XMLSAX ListCompare ])}
|
||||||
${optionalString cfg.enableCryptodisk "export GRUB_ENABLE_CRYPTODISK=y"}
|
${optionalString cfg.enableCryptodisk "export GRUB_ENABLE_CRYPTODISK=y"}
|
||||||
'' + flip concatMapStrings cfg.mirroredBoots (args: ''
|
'' + flip concatMapStrings cfg.mirroredBoots (args: ''
|
||||||
${pkgs.perl}/bin/perl ${./install-grub.pl} ${grubConfig args} $@
|
${pkgs.perl}/bin/perl ${install-grub-pl} ${grubConfig args} $@
|
||||||
''));
|
''));
|
||||||
|
|
||||||
system.build.grub = grub;
|
system.build.grub = grub;
|
||||||
|
@ -176,7 +176,7 @@ sub GrubFs {
|
|||||||
$search = $types{$fsIdentifier} . ' ';
|
$search = $types{$fsIdentifier} . ' ';
|
||||||
|
|
||||||
# Based on the type pull in the identifier from the system
|
# Based on the type pull in the identifier from the system
|
||||||
my ($status, @devInfo) = runCommand("blkid -o export @{[$fs->device]}");
|
my ($status, @devInfo) = runCommand("@utillinux@/bin/blkid -o export @{[$fs->device]}");
|
||||||
if ($status != 0) {
|
if ($status != 0) {
|
||||||
die "Failed to get blkid info for @{[$fs->mount]} on @{[$fs->device]}";
|
die "Failed to get blkid info for @{[$fs->mount]} on @{[$fs->device]}";
|
||||||
}
|
}
|
||||||
@ -189,7 +189,7 @@ sub GrubFs {
|
|||||||
|
|
||||||
# BTRFS is a special case in that we need to fix the referrenced path based on subvolumes
|
# BTRFS is a special case in that we need to fix the referrenced path based on subvolumes
|
||||||
if ($fs->type eq 'btrfs') {
|
if ($fs->type eq 'btrfs') {
|
||||||
my ($status, @id_info) = runCommand("btrfs subvol show @{[$fs->mount]}");
|
my ($status, @id_info) = runCommand("@btrfsprogs@/bin/btrfs subvol show @{[$fs->mount]}");
|
||||||
if ($status != 0) {
|
if ($status != 0) {
|
||||||
die "Failed to retrieve subvolume info for @{[$fs->mount]}\n";
|
die "Failed to retrieve subvolume info for @{[$fs->mount]}\n";
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ sub GrubFs {
|
|||||||
if ($#ids > 0) {
|
if ($#ids > 0) {
|
||||||
die "Btrfs subvol name for @{[$fs->device]} listed multiple times in mount\n"
|
die "Btrfs subvol name for @{[$fs->device]} listed multiple times in mount\n"
|
||||||
} elsif ($#ids == 0) {
|
} elsif ($#ids == 0) {
|
||||||
my ($status, @path_info) = runCommand("btrfs subvol list @{[$fs->mount]}");
|
my ($status, @path_info) = runCommand("@btrfsprogs@/bin/btrfs subvol list @{[$fs->mount]}");
|
||||||
if ($status != 0) {
|
if ($status != 0) {
|
||||||
die "Failed to find @{[$fs->mount]} subvolume id from btrfs\n";
|
die "Failed to find @{[$fs->mount]} subvolume id from btrfs\n";
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user