# To do (Steam Machine edition) ## Open 1. **Steamify installer page** (2026-09-28, in progress; working path found). Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots + the Calamares debug log, `pkexec-wrapper calamares -D6` foregrounded): - **`packagechooserq` (custom QML) does not exist on this Calamares build.** `cachyos-calamares-next` ships `packagechooserq.conf` as a vestigial config file, but no `.so`: `/usr/lib/calamares/modules/` only has `packagechooser` (no q). Calamares refuses to start ("Module ... not found in module search paths"). So `SteamifyPage.qml` (app-styled switches) is dead: no module can load it here. Before trying custom QML again, confirm the module is installed (`ls /usr/lib/calamares/modules`, `pacman -Ql cachyos-calamares-next | grep viewmodule`) in a live session first. - **`packagechooser`, `mode: optionalmultiple`, DOES support real multi-select**, confirmed from the Calamares debug log's actual global-storage write (not from its static label text, which misleadingly reads "Choose a product... the selected product will be installed" in both single- and multi-select modes): `"packagechooser@steamifypage" selected "single,gaming,theme"` — a genuine comma-separated list, matching exactly the CSV format `steamify-install` already expects for `--options`. This is the `Config::updateGlobalStorage(const QStringList&)` overload (plural), distinct from the single-choice `m_packageChoice` path. So the **native, installed `packagechooser` module is the working page**; no netinstall detour needed. - Global storage key: `packagechooser_steamifypage` (module instance id), value the comma-separated selected item ids. - **Next:** generate `packagechooser_steamifypage.conf`'s `items:` list from `steamify.sh --defaults --list` (in `calamares-online.sh`, same spot as the abandoned Items.qml generation) instead of the QML approach; check whether per-item `selected: true` (or similar) exists for defaulting everything on, or whether "everything on by default" needs a different mechanism (e.g. Steamify's own `--options` default when the page reports nothing chosen). Boot into (gaming/desktop) still needs its own answer: a separate small `packagechooser` `mode: required` page (two items), since optionalmultiple's list doesn't suit an exclusive either/or choice. - Dead code from this session, left in the tree for now: `SteamifyPage.qml`, `Items.qml`'s QML-singleton shape (its JSON *content*, generated by `--defaults --list`, is still exactly what's needed for the new plain-YAML `items:` list, just not as a QML file). - **Lesson for next time:** verify a Calamares module is actually installed before writing QML/config for it, and read a module's *actual* logged global-storage writes (not just its UI label text) before concluding whether a mode does what its name suggests. Both are testable live in the booted ISO VM without any rebuild (edit `/etc/calamares/modules/*.conf` + `settings.conf`, relaunch `pkexec-wrapper calamares -D6`, watch its foregrounded debug output). 2. **Check the live name**2. **Check the live name**2. **Check the live name** (the build tree has it right: `build/x86_64/airootfs/etc/os-release`) after the next build: Hello's subtitle should say "Steamify CachyOS, based on CachyOS rolling" (`steamify-customize.sh`, run by mkarchiso after the packages; the airootfs copy of os-release is overwritten by a package). 3. **Steamify PR** for `feat/defaults-options` (2.7.0, `c4ec755`: `--options`, `--boot`; also `steamify.sh --boot` on its own and the HDMI-CEC volume fix): pushed and regression-tested in the VM (`--fremont`), no PR yet; the user merges (never commit to main). 2.6.0 is released. Until 2.7.0 is, build the ISO with `steamify-prepare.sh ~/projects/steamify-cachyos` (the branch). 4. **Build in the test VM** instead of on the Steam Machine (steam-machine-iso skill), and install the result unattended with `scripts/vminstall.sh --iso` (vm-install skill; the Calamares Steamify step then needs `steamify-install` run from the live script). 5. **Test on the real Steam Machine** from a USB stick (gamescope, LEDs, CEC, power-off) before calling the ISO usable. ## Done - **Steamify 2.6.0** released (`--defaults`, install-time mode). - **Live session** (VM, `--fremont`): Vapor look and layout (Steam Deck wallpaper) at the live login; the power-off module is built for both ISO kernels and loaded at boot, in the VM it returns "No such device" (no AMDI0030 GPIO controller), as designed. Whether it keeps the real Steam Machine off is part of the hardware test. - **Regression test 2.6.0 on an existing desktop install** (test VM from ssh-ready, `--fremont`): full first run, re-apply, notifications/CEC/theme off and on again. No errors; user units enabled and running, theme applied and restored live, no first-login autostart with a session. - **ISO name**: `steamify-cachyos--x86_64.iso` (`iso_name` in `archiso/profiledef.sh`); the volume label stays `COS_`. - **VM install from the ISO (2026-09-27, `f42859a`):** a VM install from the ISO (Hello's Install, no manual fixes) ran Steamify's step: every component OK, `exit: 0`, SDDM autologin into gamescope. First desktop login (session switched to plasma in the VM) passed too: Vapor layout, the app opened with everything on. The first-login script runs the newest *release*, so it only works once 2.6.0 is released (in the test it was pointed at the bundle). The VM's text console doesn't show (virgl): read the installed disk with `qemu-nbd -r` + `mount -o ro,rescue=nologreplay,subvol=@` (logs in `@log`). ## Later - **Branding**: the live session's os-release says "Steamify, based on CachyOS" (Hello's subtitle); Hello's window title and the boot menu still say CachyOS. Check with the CachyOS team. - **Release**: a CI job that builds the ISO (privileged container, flags from the steam-machine-iso skill) and hosts it (>2 GB, not a GitHub release asset). - **Drop the Boost 1.91 workaround** in `steamify-prepare.sh` once `cachyos-calamares-next` is rebuilt against the repos' Boost. Build and test details: the `steam-machine-iso` skill in steamify-cachyos-dev.