Files
lhns--steam-frame-nix/modules/cleanup/package.nix
T
Pierre Kisters b7b32d0aa9 steamvr-debugger: set DebuggerEnabled only while SteamVR runs
The key used to be merged into steamvr.vrsettings for good (reset at the
next start after disabling, via a marker). Now it is on only while SteamVR
runs and nothing depends on Nix to undo it:

- before each SteamVR start, the oneshot runs `install.sh
  steamvr-debugger-arm`: the key's value goes to
  ~/.local/state/steam-frame-nix/steamvr-debugger.armed ("absent", "false",
  "nofile"), the key is set (jq --indent 3, mode kept), and a runtime
  drop-in $XDG_RUNTIME_DIR/systemd/user/steamvr.service.d/
  50-steam-frame-nix-debugger.conf runs a /usr/bin-only restore script from
  $XDG_RUNTIME_DIR/steam-frame-nix on ExecStopPost= (daemon-reload only when
  newly written: once per boot). A key that is already true without .armed
  is the user's own and never touched. The old marker migrates to .armed
  ("absent").
- when SteamVR stops, the key goes back to its previous value (removed if
  it was absent, the file too if it only existed for the key) and .armed
  is removed. .armed is the only trace a power loss can leave; the next
  start or steam-frame-nix-cleanup resolves it.
- disabled: no unit and no drop-in at all; the orphan cleanup restores the
  key once SteamVR is stopped (or leaves it to the runtime drop-in while it
  runs).

A daemon-reload from a oneshot pulled in by a pending start job was tried
on dummy user units: the job survives and the new ExecStopPost= applies,
also on restart (stop, then the oneshot, then start).
checks.cleanup covers arming, re-arming, restoring and the user's own key.
2026-09-29 00:02:57 +02:00

13 lines
542 B
Nix

# steam-frame-nix-cleanup: `install.sh cleanup` (see there) with its tools
# from nixpkgs. `nix run github:lhns/steam-frame-nix#cleanup -- --all`.
# Other install.sh commands the modules run: name + command.
{ writeShellApplication, bash, coreutils, findutils, jq, gnugrep, gnused, gawk, procps
, name ? "steam-frame-nix-cleanup", command ? "cleanup" }:
writeShellApplication {
inherit name;
runtimeInputs = [ bash coreutils findutils jq gnugrep gnused gawk procps ];
text = ''
exec bash ${../../install.sh} ${command} "$@"
'';
}