Install: name what waits for a restart; uninstall survives a failed Nix uninstall

A fresh install into a running session left the keyboard layout and the
SteamVR dashboard patches (VR pet, the VR keyboard's suggestion strip, ...)
silently off until a reboot: gamescope reads XKB_DEFAULT_* only at its
start, and SteamVR opens its DevTools port (VRWebHelper.DebuggerEnabled)
only at its start. Neither can be applied at runtime.

- install.sh restart-check (run on every switch by session.nix, and by
  install at its end): compares the keyboard-layout drop-in with the
  running gamescope session's environment and checks whether SteamVR runs
  without port 8087; install ends with "Restart once" listing them.
- uninstall: a failing nix-installer uninstall (e.g. /nix busy) no longer
  aborts the script before the ~/.config/home-manager link and Home
  Manager state are removed; it says to reboot and run uninstall again.
- cleanup check: restart-check on fake cgroup/proc dirs.
This commit is contained in:
Pierre Kisters committed 2026-10-01 18:06:50 +02:00
1 parent 92e9d17e09
commit 6b12d5329f
7 files changed
+191 -14

No files matched your search

+2 -2
View File
@@ -47,8 +47,8 @@ scripts/
modules/
session.nix switch: outer bus/runtime dir, user services on switch
cleanup.nix switch: `cleanup --orphans`; steam-frame-nix-cleanup on PATH
cleanup/package.nix build: install.sh as a command (cleanup, steamvr-debugger-arm)
cleanup/check.nix test: install.sh cleanup on fake home/runtime dirs
cleanup/package.nix build: install.sh as a command (cleanup, steamvr-debugger-arm, restart-check)
cleanup/check.nix test: install.sh cleanup and restart-check on fake home/runtime dirs
portal.nix Steam session portal config (session.portalFix)
portal/check.nix test: KDE FileChooser on by default, absent when disabled
applications-menu.nix applications.menu link for KDE apps (session.applicationsMenu)
+8 -1
View File
@@ -23,6 +23,9 @@ running") and skips `reloadSystemd`.
- After every switch this module reloads the Steam session's user manager
and applies `session.services.start` / `stop` / `restart`, which other
modules fill (you can add your own units).
- Then it names what the running session can't pick up until a restart:
the [keyboard layout](#keyboard-layout) and the
[SteamVR debugger](steamvr-debugger.md) of the dashboard patches.
**Configuration:** apps that keep secrets in the wallet get a
[launcher](launchers.md) with `keyring.enable`. Another app that must reach
@@ -104,7 +107,11 @@ the link dangles, which is the same as no menu.
`~/.config/environment.d` isn't read on the Frame.
**What you get:** the layout in the Steam session, from the next Steam
session start. The layout also picks the
session start (e.g. reboot): gamescope reads it only when it starts, and
sends its own keymap to the X apps again whenever the VR keyboard types, so
it can't be set in a running session. While the running session has another
layout, the switch (and `install.sh install` at its end) says so
(`install.sh restart-check`). The layout also picks the
[VR keyboard](keyboard.md#swipe-and-suggestions)'s default dictionary
language.
+5 -2
View File
@@ -21,8 +21,11 @@ to its previous value when SteamVR stops, also after a rollback or uninstall
(without Nix). A value you set to `true` yourself is never touched.
**The first time, restart SteamVR once** (e.g. reboot); until then the
dashboard patches wait. Turned off, the setting is restored at the switch
(or when SteamVR stops, if it runs).
dashboard patches wait. SteamVR opens the port only when it starts, so no
switch or install can do it for a running SteamVR; the switch (and
`install.sh install` at its end) says so while SteamVR runs without the port
(`install.sh restart-check`). Turned off, the setting is restored at the
switch (or when SteamVR stops, if it runs).
## Security