# nina test VM — golden NixOS dev image A reproducible NixOS 24.11 dev image for exercising nina, built once and booted as disposable copy-on-write overlays so every run starts from the exact same snapshot. Runs under qemu (TCG) on Apple Silicon — x86_64 emulation, so slow. ## Files - `configuration.nix` — the golden system's exact starting state (the spec). Serial console + root autologin (headless drivable), BIOS GRUB on `/dev/vda`, the brief's packages, `~/.nina.conf`, hostname `test-primary`. - `install.sh` — runs inside the minimal installer: partition, `nixos-install`. - `build-golden.sh` — host orchestration: boots the ISO headless and drives the scripted install over serial, producing the golden qcow2. - `boot-overlay.sh` — boots a throwaway overlay of the golden image, runs a command (default: nina smoke test), discards the overlay. ## Build the golden image (once, slow) ```sh # needs the NixOS 24.11 minimal x86_64 ISO and a linux nina binary ./build-golden.sh /tmp/nixvm/nixos-24.11-minimal-x86_64.iso \ /tmp/nina-linux/bin/nina \ /tmp/nixvm/golden.qcow2 ``` The linux nina binary comes from the nina repo: `zig build -Dtarget=x86_64-linux-musl -Doptimize=ReleaseSafe -p /tmp/nina-linux`. ## Boot a disposable copy ```sh ./boot-overlay.sh /tmp/nixvm/golden.qcow2 # nina smoke test ./boot-overlay.sh /tmp/nixvm/golden.qcow2 'nina status' ``` The golden image is never mutated. Kiln can also boot it directly with `kiln chamber run --os /tmp/nixvm/golden.qcow2` (fresh overlay per run). Artifacts (ISO, golden.qcow2) live outside the repo (`/tmp/nixvm`); only the build inputs are version-controlled here.