# SPDX-License-Identifier: CC0-1.0 { stdenv, nixpkgs, dhallApps, packages, nova-image }: nixpkgs.writeScriptBin "nova-iso" (with nixpkgs.buildPackages; let inherit (stdenv) cc; in '' #!${runtimeShell} set -eu CC="${cc}/bin/${cc.targetPrefix}cc" LD="${buildPackages.binutils}/bin/${buildPackages.binutils.targetPrefix}ld" SYSLINUX="${syslinux}/share/syslinux" TMPDIR="$(${coreutils}/bin/mktemp -p /tmp -d nova-iso.XXXX)" mkdir -p "$TMPDIR/boot/syslinux" trap "rm -rf $TMPDIR" err exit ${nova-image.program} $@ mv image.elf "$TMPDIR/boot" pushd "$TMPDIR" # build ISO image 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 ISO_FILE="''${DIRSTACK[1]}/nova.iso" ${cdrkit}/bin/mkisofs -o "$ISO_FILE" \ -b syslinux/isolinux.bin -c syslinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -iso-level 2 \ boot popd # build test script QEMU_SCRIPT=boot-qemu.sh cat > "$QEMU_SCRIPT" << EOF #!/bin/sh qemu-system-x86_64 -cdrom nova.iso -machine q35 -serial mon:stdio \$@ EOF chmod +x "$QEMU_SCRIPT" '')