feat(nb): enable Steam and host support for the portable WoW card #246
No reviewers
Labels
No labels
bug
enhancement
in-progress
needs-info
needs-triage
p0
ready-for-agent
ready-for-human
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/nixos!246
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/nb-steam-wow-portable"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Enables Steam on
nband adds the host-side support the portable WoW 3.3.5a +AzerothCore SD card needs. The card itself is self-contained and travels between
machines; only the machine-local pieces are declared here.
Steam
hosts/nb/modules/steam.nixalready existed but was never imported, and it nolonger evaluated at all —
amdvlkhas been removed from nixpkgs, so bothhardware.graphics.extraPackagesentries pointed at a missing attribute. Now onRADV, which
hardware-configuration.nixalready provides.enable32Bitis mandatory here, not a nicety: Proton is 32-bit by design andWow.exeis a 32-bit binary.The i686 pypy bug, again
Turning on 32-bit graphics re-triggered — from a second direction — the
makePythonWriterbug this host already documents for the 32-bit ALSA plugins.writers/scripts.nix:1203guards ona tautology whose operands force the pypy interpreter.
fetch-cargo-vendor-utilis itself a
writePython3script, so every Rust package drags it in, andgraphics.nix:145putspkgsi686Linux.mesain the i686 closure.On i686 pypy fails twice: no
i686-linuxinmeta.platforms, and noi686-linuxsource hash inpython/default.nix. SoallowUnsupportedSystemdoes not help — it only moves the error one step down, which I confirmed.
Stubbing
pypy2Packageson i686 makes the first comparison cheap and true, so||short-circuits andpypy3Packagesis never forced either. Nothing everbuilt pypy; it was only force-evaluated by that comparison. The stub is scoped
to i686 and leaves the x86_64 set alone, so the existing
allowInsecurePredicateis still doing its job there.
With the root cause handled,
services.pipewire.alsa.support32Bitno longer hasto be forced off — and the NixOS Steam module sets it itself, so leaving the
opt-out in place was a hard definition conflict.
The card
Docker daemon
nbalready runs: the AzerothCore images are an OCI/overlaystore Docker cannot read.
dockerCompatstays off.containers/storage/overlay/.has-mount-program, so podman refuses it unless amount program is on
PATH. Arch always ships one; NixOS does not./run/media/dominik/SteamSD. The Steam shortcut's appidis a crc32 of the absolute path to
Wow.exe, and that path also lands in thelaunch options,
config.vdf'sCompatToolMappingand the artwork filenames.A path that moves between sessions silently becomes a different app — no
artwork, no compat tool, and a stale mapping key fails with no error at all.
WOW_GRAPHROOTmoves the podman image store off the card onto the internaldrive. The card's default keeps the store on itself so images travel, but that
cannot work across these two machines: the store's
db.sqlrecords its owngraphroot path, and the card mounts under a different user per machine
(
/run/media/deckon the handheld vs/run/media/dominikhere), which podmanrejects outright as a configuration mismatch. It also keeps 44 GB of layer
reads off a ~165 MB/s card.
uidis already 1000 and/etc/subuidalready readsdominik:100000:65536,which is exactly the base the card's
server/mysqlownership was built against —so no re-chown and no
podman system migrate.Testing
scripts/test-configuration nbpasses. Runtime verification still to do afterdeploy: that
/etc/subuidis unchanged, that podman reads the card's imagestore, and whether podman works inside Steam's FHS sandbox (which decides
whether the card's
session.shcan bring the server up itself, or whether theserver moves to a host-side user service).