# ===================================================================== # The machines the VM sub-agent can be given. # # ONE REGISTRY, READ BY FOUR THINGS: the maintenance app (which row is # which, and what it is called), vmd (which base image and which saved # machine), the sub-agent (how its own machine is described to it), and # `vm_agent`'s own `os` parameter. # # `id` IS IDENTITY AND IS NOT A LABEL. # # It names the base disk (/var/lib/owuivm/.qcow2), the firmware # variables beside it, the systemd unit instance (owuivm-maint@), # the saved-machine directory, and the value the assistant passes as # `os`. It also appears in regex allowlists inside the privileged launch # scripts, which is the whole reason those scripts can refuse a path. # Changing an id does not rename a machine, it describes one that does # not exist. Leave it alone. # # `name` is the label, and is yours. It is what the maintenance app # shows and what a session report calls the machine. Rename it to # whatever you like, from the app or by editing this file; nothing # depends on its value. # # `iso` is the glob that picks installation media out of # /var/lib/owuivm/iso. It is deliberately NOT `*.iso`: with an Ubuntu # disc sitting next to a Windows one, the newest file in that directory # is how a Windows install quietly boots the Ubuntu installer. # # `shell`, `project` and `example` are prompt text. They are substituted # into {shell}, {project} and {example} in configs/agent/tools.toml, and # they are the difference between one prompt for both machines and an # agent that has to work out which half applies to it. Measured: a # Windows session wrote itself the task "check /mnt/project # accessibility" because a shared prompt said that was where work # survives and nothing told it otherwise. # ===================================================================== [[machine]] id = "ubuntu" name = "Ubuntu" iso = "ubuntu*.iso" shell = "a root bash login shell - you are already root" project = "/mnt/project" example = "'src/main.py'" [[machine]] id = "windows" name = "Windows" # Not `*.iso`, and not `windows*.iso` either - the media is normally # named Win11_..., so the pattern has to catch both spellings. iso = "[Ww]in*.iso" shell = "an elevated PowerShell 5.1 - already administrator, and note it has no `&&` or `||`, so chain with `;` or use separate calls" project = "Z:\\" example = "'src\\main.ps1'"