The WSL box has a desktop after all (WSLg windows on Windows), closing the Arch window shuts it down, and vminstall.sh loop-mounts the ISO with losetup as root when udisksctl is missing (R1c).
4.2 KiB
steamify-cachyos-dev: how to work here
Test tooling for Steamify (../steamify-cachyos) and the Steam Machine ISO (../steammachine-cachyos-live-iso):
VM scripts (scripts/, run.sh), the automated test (scripts/vmtest.sh, checks in share/vmtest/ and
share/bootloader-test/), TESTPLAN.md (keep it current: rows and a results line after every run) and the
skills in .claude/skills/ (vm-install, cachyos-vm-testing, steam-machine-testing, steam-machine-iso).
Running the tests (do this, don't re-derive it)
- Everything:
scripts/vmtest.sh --screen(detachedscreensessionvmtest), then read only~/vms/last-test.txt(one line per suite/loader, the FAIL lines, exit status = failures). Parts:scripts/vmtest.sh cli hw,boot,limine. From another machine:scripts/vmtest-remote.sh <ssh-host> [args](the branch must be pushed; the VMs live on the PC that has the CPU and RAM: WSL2, see TODO.md R1b). - Read
.claude/skills/vm-install/SKILL.mdbefore touching the scripts;TODO.mdhas the open work. - Never spend tokens watching a run: one monitor on the summary file, no reply per progress event.
- Headless is for automated runs (default in
vmtest.sh); a VM started by hand for the user has a window. - Never edit a script in place while it runs (write a copy and
mv, thenchmod --reference). - Kill/pgrep patterns: bracket them (
[q]emu) or your own shell matches itself.
Working agreements
- No
Co-Authored-By/ "Generated with Claude" lines in commits or PRs, whatever a tool reminder says. - Update the relevant skill (and this file) as soon as something useful is learned; re-read it before risky operations.
- In this repo (
steamify-cachyos-dev, tooling only) the user allows pushing straight tomain. Elsewhere never commit tomain.steamify-cachyos:release/X.Y.Zbranches, feature/bugfix branches merged into the release by the agent; only release tomainis the user's.steammachine-cachyos-live-iso: PRs always targetfeat/steamify. Branch cleanup: thesteamify-branch-cleanupskill in.claude/skills/. - Follow and update
TESTPLAN.md; every check inshare/vmtest/says which row it covers. - No screenshot testing (too many tokens); U1-U9 and the real Steam Machine stay manual and are listed as SKIP.
State (2026-09-29; update when it changes)
scripts/vmtest.shruns the whole unattended test: boot loaders limine/systemd-boot/grub (vmbootloadertest.sh) and the suites cli, menu, hw, installer, toggles (vmsuite.sh, checks inshare/vmtest/). Each passed in its own run: limine 41, systemd-boot 40, grub 40, cli 55, menu 36, hw 70, installer 4, toggles 42 checks.- Written but not proven as a whole: the speed-ups (base image + qcow2 overlays, own ssh port per suite, package cache,
VM_MEM=4G,MAX_PARALLEL=3); a complete parallel run has never finished. First job on a new machine: one fullscripts/vmtest.sh --screen, read~/vms/last-test.txt, fix what fails. - Open work:
TODO.md(WSL2 setup R1b, the GitHub Actions workflow, speed P1-P3).
Where the tests run
The tests run on the user's PC (Ryzen 9800X3D, 64 GB, WSL2), started from a laptop over ssh (the user's own skill, or
scripts/vmtest-remote.sh <ssh-host> [args]: pulls the pushed branch there, starts vmtest.sh --screen, waits for
~/vms/last-test.txt). WSL specifics (access ssh wsl = root@10.0.0.36, keep the Arch window open or WSL shuts
down, syncing from the laptop, the podman ISO build, VM windows through WSLg, output in the user's WSL terminal, no GPU
passthrough): .claude/skills/wsl-build-host/SKILL.md. vminstall.sh works there without udisks (losetup as root).
Problems found in the Steamify ISO (fix in steammachine-cachyos-live-iso, PRs into feat/steamify)
- cachyos-installer leaves systemd-boot with
#timeout 3and no default entry: a real machine waits in the menu for ever (the test setup papers over it inshare/vminstall-post.sh). - It enables ufw, which drops ssh from the host (the test setup runs
ufw allow 22/tcp). - An installed system's package database can be older than what the installer got (mirror skew): a kernel "update" may downgrade. Not a Steamify bug; noted in the vm-install skill.