#!/bin/sh

# sudo tunctl -t tap0 -g netdev
# qemu-img create -f qcow2 nb-disk0.qcow2 10G

NBISO="${HOME}/Downloads/NetBSD-10.99.14-amd64.iso"
NBISO="${HOME}/Downloads/NetBSD-10.1_STABLE-amd64.iso"
NBISO="${HOME}/Downloads/NetBSD-11.0_RC2-amd64-dvd.iso"
NBISO="${HOME}/Downloads/debian-13.4.0-amd64-netinst.iso"

HERE="$(dirname "${0}")"

boot=c
cdrom=
name=NetBSD

case "${1}" in
install)
  boot=d
  cdrom="${NBISO}"
  name="${name} Installer"
  ;;
esac

# This also works with i440FX (i.e. without "-machine q35")

qemu-system-x86_64 \
  -name "${name}" \
  -m 1G \
  \
  -enable-kvm \
  -machine q35 \
  \
  -smp 2,sockets=1,cores=2,maxcpus=2 \
  -cpu host,+kvm_pv_eoi,+kvm_pv_unhalt \
  \
  -object iothread,id=iothread-virtio0 \
  \
  -device VGA,id=vga \
  \
  -object rng-random,filename=/dev/urandom,id=rng0 \
  -device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 \
  \
  -drive ${cdrom:+file="${cdrom}",}if=none,id=drive-ide2,media=cdrom,aio=io_uring \
  -device ide-cd,drive=drive-ide2,id=ide2,bootindex=200 \
  \
  -drive file="${HERE}/nb-disk0.qcow2",if=none,id=drive-virtio0,aio=native,discard=on,cache=none,detect-zeroes=unmap \
  -device virtio-blk-pci,drive=drive-virtio0,id=virtio0,iothread=iothread-virtio0,bootindex=100 \
  \
  -netdev type=tap,id=net0,ifname=tap0,script=no,downscript=no,vhost=off \
  -device virtio-net-pci,netdev=net0,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300 \
  \
  -boot "${boot}" \
  -display sdl \
  ;
