diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-12-15 05:28:38 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-02-14 12:21:40 +0000 |
commit | 2ae30ffe993f314898d75c2bbeede32312e55f82 (patch) | |
tree | 3db0bf60d295bed4f8ab2671ec004997ea8b9555 /installer/default.nix | |
parent | 76f88027d626d36010f1e23ed16cccb19ae32bb9 (diff) | |
download | spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar.gz spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar.bz2 spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar.lz spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar.xz spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.tar.zst spectrum-2ae30ffe993f314898d75c2bbeede32312e55f82.zip |
installer: operate on FAT image directly
Message-Id: <20220201175138.43759-1-hi@alyssa.is>
Diffstat (limited to 'installer/default.nix')
-rw-r--r-- | installer/default.nix | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/installer/default.nix b/installer/default.nix index f7e84ac..0818091 100644 --- a/installer/default.nix +++ b/installer/default.nix @@ -24,6 +24,7 @@ let esp = runCommand "esp.img" { nativeBuildInputs = [ grub libfaketime dosfstools mtools ]; + grubTargetDir = "${grub}/lib/grub/${grub.grubTarget}"; # Definition copied from util/grub-install-common.c. # Last checked: GRUB 2.06 pkglib_DATA = [ @@ -31,23 +32,23 @@ let "parttool.lst" "video.lst" "crypto.lst" "terminal.lst" "modinfo.sh" ]; } '' - mkdir -p files/grub/${grub.grubTarget} - cp ${grubCfg} files/grub/grub.cfg - cp ${grub}/lib/grub/${grub.grubTarget}/*.mod files/grub/${grub.grubTarget} + truncate -s 15M $out + faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n EFI $out + mmd -i $out ::/EFI ::/EFI/BOOT \ + ::/grub ::/grub/${grub.grubTarget} ::/grub/fonts + + mcopy -i $out ${grubCfg} ::/grub/grub.cfg + mcopy -i $out $grubTargetDir/*.mod ::/grub/${grub.grubTarget} for file in $pkglib_DATA; do - path="${grub}/lib/grub/${grub.grubTarget}/$file" - ! [ -e "$path" ] || cp "$path" files/grub/${grub.grubTarget} + path="$grubTargetDir/$file" + ! [ -e "$path" ] || mcopy -i $out "$path" ::/grub/${grub.grubTarget} done + mcopy -i $out ${grub}/share/grub/unicode.pf2 ::/grub/fonts - install -D ${grub}/share/grub/unicode.pf2 files/grub/fonts/unicode.pf2 grub-mkimage -o grubx64.efi -p "(hd0,gpt1)/grub" -O ${grub.grubTarget} part_gpt fat - install -D grubx64.efi files/EFI/BOOT/BOOTX64.EFI + mcopy -i $out grubx64.efi ::/EFI/BOOT/BOOTX64.EFI - img=$out - truncate -s 15M $img - faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n EFI $img - (cd files; mcopy -psvm -i $img ./* ::) - fsck.vfat -vn $img + fsck.vfat -n $out ''; installer = runCommand "installer.img" { |