2020-01-19 16:02:39 +01:00
|
|
|
{ stdenv, nixpkgs, packages, nova-image }:
|
2020-01-16 18:43:24 +01:00
|
|
|
|
|
|
|
nixpkgs.writeScriptBin "nova-iso" (with nixpkgs.buildPackages;
|
|
|
|
let inherit (stdenv) cc;
|
|
|
|
|
|
|
|
in ''
|
|
|
|
#!${runtimeShell}
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
SYSLINUX="${syslinux}/share/syslinux"
|
|
|
|
|
2020-01-19 16:02:39 +01:00
|
|
|
TMPDIR="$(${coreutils}/bin/mktemp -d)"
|
2020-01-16 18:43:24 +01:00
|
|
|
trap "rm -rf $TMPDIR" err exit
|
|
|
|
|
2020-01-19 16:02:39 +01:00
|
|
|
mkdir -p "$TMPDIR/boot/syslinux"
|
2020-01-28 00:38:09 +01:00
|
|
|
${nova-image.program} $@ > "$TMPDIR/boot/image.elf"
|
2020-01-16 18:43:24 +01:00
|
|
|
|
2020-01-25 17:25:54 +01:00
|
|
|
pushd "$TMPDIR" > /dev/null
|
|
|
|
out="nova.iso"
|
2020-01-16 18:43:24 +01:00
|
|
|
|
2020-01-19 16:02:39 +01:00
|
|
|
# build ISO layout
|
2020-01-16 18:43:24 +01:00
|
|
|
cp ${packages.NOVA}/hypervisor* boot/hypervisor
|
|
|
|
cp ${./isolinux.cfg} boot/syslinux/isolinux.cfg
|
|
|
|
cp \
|
|
|
|
$SYSLINUX/isolinux.bin \
|
|
|
|
$SYSLINUX/ldlinux.c32 \
|
|
|
|
$SYSLINUX/libcom32.c32 \
|
|
|
|
$SYSLINUX/mboot.c32 \
|
|
|
|
boot/syslinux
|
|
|
|
chmod +w boot/syslinux/isolinux.bin
|
|
|
|
|
2020-01-19 16:02:39 +01:00
|
|
|
# create ISO image
|
|
|
|
${cdrkit}/bin/mkisofs -o "$out" \
|
2020-01-16 18:43:24 +01:00
|
|
|
-b syslinux/isolinux.bin -c syslinux/boot.cat \
|
|
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
|
|
-iso-level 2 \
|
|
|
|
boot
|
|
|
|
|
2020-01-19 16:02:39 +01:00
|
|
|
${syslinux}/bin/isohybrid "$out"
|
2020-01-25 17:25:54 +01:00
|
|
|
cat "$out"
|
2020-01-16 18:43:24 +01:00
|
|
|
'')
|