The README is the complete user documentation again: features, install, two sessions, usage, the full options table (and renamed options), every feature with problem, usage, limitations, security and "remove when", UI patches at user level (DevTools on the LAN, after a Steam update), changes outside Nix, rollback and uninstall. docs/ keeps only the technical side (how the patches work, writing patches, signatures and the update procedure, the SteamVR debugger mechanics, cleanup and installer internals), linked from each feature. docs/options.md, two-sessions.md and desktop-integration.md are gone (their content is in the README).
4.2 KiB
Cleanup and installer: how they work
What steam-frame-nix writes outside the Nix store, how to remove it, and rollback/uninstall: README, Changes outside Nix, Rollback, Uninstall.
Cleanup
steam-frame-nix-cleanup (steamFrame.cleanup.package, module cleanup,
imported by every module) is install.sh cleanup, so the same code runs
with Nix (on every switch: cleanup --orphans --keep <what the configuration still uses>) and without it, from the script (bash, coreutils, findutils,
jq, all in SteamOS' /usr/bin). Home Manager's uninstall = true; runs
cleanup --all from the activation.
It knows everything any version wrote outside the store and removes an artifact only when it is proven to be its own; anything else is reported as "left alone" and never touched:
| Artifact | Proof / rule |
|---|---|
debugger: VRWebHelper.DebuggerEnabled in steamvr.vrsettings |
~/.local/state/steam-frame-nix/steamvr-debugger.armed holds the value before (older versions: the empty marker steamvr-debugger, value before = absent). Restored once SteamVR is stopped; while it runs the runtime drop-in restores it when SteamVR stops. Also the runtime drop-in and restore script themselves. |
icons: hicolor/scalable/apps/<name>.svg |
links to Breeze in the store, listed in ~/.local/state/steam-frame-nix/icon-fallbacks (the icon-fallbacks script of 2026-09) |
firefox: user.js in Firefox profiles |
links to /app/etc/firefox/steam-frame-nix-desktop-user.js (left alone while the profile is in use), older links to *-firefox-*user.js and copies starting with the steam-frame-nix marker comment, and the values they left in prefs.js (only with Firefox closed) |
jellyfin |
the hwdec shim entries in the Jellyfin Flatpak's user override ~/.local/share/flatpak/overrides/org.jellyfin.JellyfinDesktop (nix-flatpak), an empty override file, and the shim copy of earlier versions in ~/.var/app/org.jellyfin.JellyfinDesktop (marker ~/.local/state/steam-frame-nix/jellyfin-hwdec-shim) |
ui-state: ~/.local/state/steam-frame-nix/ui-patches/<name>.json |
the dashboard patches' saved choices; --all only, never --orphans; stray *.json.tmp files |
dirs |
~/.local/state/steam-frame-nix and /run/user/1000/steam-frame-nix when empty |
Left by older versions
The rows above include what only older versions wrote: the icon fallback
links and their list (~/.local/state/steam-frame-nix/icon-fallbacks), the
debugger marker steamvr-debugger, Firefox user.js copies and links and
their prefs.js values, the Jellyfin hwdec entries of
~/.local/share/flatpak/overrides/org.jellyfin.JellyfinDesktop (an empty
override file too) and the old shim copy in
~/.var/app/org.jellyfin.JellyfinDesktop.
Set up by install.sh
install.sh install (the bootstrap, not the modules) changes more, and
install.sh uninstall undoes it:
- Nix via nix-installer
(
steam-deckplanner, flakes on):/nix(bind mount of/home/nix, survives SteamOS updates), files in/etc(systemd units, profile scripts,nix.conf) and its receipt/nix/receipt.json; the read-only root is unlocked only while it installs or uninstalls. Skipped if Nix already works; experimental-features = nix-command flakesin~/.config/nix/nix.confif Nix was already there without flakes;~/nix-config(your configuration, a git repository, from the template with your user name filled intoflake.nix) and the link~/.config/home-managerto it, unless~/.config/home-managerexists or--flake <dir-or-flakeref>is given; uninstall removes the link, never the configuration;- dotfiles Home Manager found in its way, renamed to
*.hm-backup-<time>(kept by uninstall); ~/.local/state/home-managerand~/.local/state/nix(profiles, generations),~/.nix-profile,~/.nix-defexpr,~/.nix-channels,~/.cache/nix.
The installer runs systemctl --user against the outer session's user
manager (the nested desktop can't reach it with its own environment) and
uses the installed home-manager if there is one, else Home Manager's
master.