diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index 860e240b43d..1eaa940afb1 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -369,10 +369,10 @@ let ${lib.optionalString (refindBinary != null) '' # GRUB apparently cannot do "chainloader" operations on "CD". if [ "\$root" != "cd0" ]; then - # Force root to be the FAT partition - # Otherwise it breaks rEFInd's boot - search --set=root --no-floppy --fs-uuid 1234-5678 menuentry 'rEFInd' --class refind { + # Force root to be the FAT partition + # Otherwise it breaks rEFInd's boot + search --set=root --no-floppy --fs-uuid 1234-5678 chainloader (\$root)/EFI/boot/${refindBinary} } fi @@ -400,10 +400,8 @@ let # dates (cp -p, touch, mcopy -m, faketime for label), IDs (mkfs.vfat -i) '' mkdir ./contents && cd ./contents - cp -rp "${efiDir}"/EFI . - mkdir ./boot - cp -p "${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile}" \ - "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}" ./boot/ + mkdir -p ./EFI/boot + cp -rp "${efiDir}"/EFI/boot/{grub.cfg,*.efi} ./EFI/boot # Rewrite dates for everything in the FS find . -exec touch --date=2000-01-01 {} + @@ -421,11 +419,11 @@ let faketime "2000-01-01 00:00:00" mkfs.vfat -i 12345678 -n EFIBOOT "$out" # Force a fixed order in mcopy for better determinism, and avoid file globbing - for d in $(find EFI boot -type d | sort); do + for d in $(find EFI -type d | sort); do faketime "2000-01-01 00:00:00" mmd -i "$out" "::/$d" done - for f in $(find EFI boot -type f | sort); do + for f in $(find EFI -type f | sort); do mcopy -pvm -i "$out" "$f" "::/$f" done