add uefi package and iso builder
thanks to https://github.com/martiert/x13s-bios
This commit is contained in:
parent
3fa14acfdd
commit
0650514998
3 changed files with 88 additions and 0 deletions
50
packages/uefi-usbiso.nix
Normal file
50
packages/uefi-usbiso.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
stdenv,
|
||||
parted,
|
||||
util-linux,
|
||||
dosfstools,
|
||||
mtools,
|
||||
uefi,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "usbdisk";
|
||||
version = uefi.version;
|
||||
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = [
|
||||
parted
|
||||
util-linux
|
||||
dosfstools
|
||||
mtools
|
||||
];
|
||||
|
||||
doUnpack = false;
|
||||
buildPhase = ''
|
||||
img=${name}-${version}.iso
|
||||
gap=8
|
||||
blocks=$(du -B 512 --summarize --apparent-size ${uefi} | awk '{ print $1 }')
|
||||
blocks=$(( 2 * blocks ))
|
||||
size=$(( 512 * blocks + gap * 1024 * 1024 + 34*512))
|
||||
truncate -s $size $img
|
||||
sfdisk $img <<EOF
|
||||
label: gpt
|
||||
start=''${gap}M, size=$blocks, type=uefi
|
||||
EOF
|
||||
|
||||
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
|
||||
truncate -s $(( SECTORS * 512 )) part.img
|
||||
mkfs.vfat part.img
|
||||
mcopy -spvm -i ./part.img ${uefi}/EFI "::/EFI"
|
||||
mcopy -spvm -i ./part.img ${uefi}/Flash "::/Flash"
|
||||
|
||||
dd conv=notrunc if=part.img of=$img seek=$START count=$SECTORS
|
||||
rm -fr part.img
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
mv ${name}-${version}.iso $out/
|
||||
'';
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue