Cleanup: the VR pet's tmpfs icon link (artifact pet)

<runtimeDir>/steam-frame-nix/vr-pet: icon.png when it links to a
*-vr-pet-icons store icon, its empty .lock and stray .icon.tmp.* links,
then the directory; kept by --orphans --keep pet. The empty runtime
directory now also goes with --orphans.
This commit is contained in:
Pierre Kisters committed 2026-10-01 04:33:39 +02:00
1 parent 57ed00e29c
commit fbf9519be0
2 files changed
+47 -6

No files matched your search

+27 -4
View File
@@ -75,7 +75,7 @@ Commands:
or before removing it.
--orphans what the configuration no longer uses (run by the Home
Manager module on every switch); keeps saved choices.
--keep still in use (with --orphans): debugger, screenshots
--keep still in use (with --orphans): debugger, screenshots, pet
--dry-run only print what would be done
--quiet print only actions, deferrals and warnings
SteamVR's VRWebHelper.DebuggerEnabled can't be changed while SteamVR
@@ -825,6 +825,26 @@ clean_screenshots() { # keep
fi
}
# --- VR pet "+" menu icon link (tmpfs) ---
clean_pet() { # keep
local d=$SFN_RUNTIME/vr-pet l f
(( $1 )) && return 0
[[ -d $d && ! -L $d ]] || return 0
l=$d/icon.png
if [[ -L $l ]]; then
if [[ $(readlink "$l") == /nix/store/*-vr-pet-icons/*.png ]]; then
c_rm "$l" "link to the VR pet's \"+\" menu icon"
else
c_left "$l (not a link to a VR pet icon)"
fi
fi
while IFS= read -r -d '' f; do
c_rm "$f" "the VR pet icon's lock or unfinished link"
done < <(find "$d" -mindepth 1 -maxdepth 1 \( -name .lock -type f -empty -o -name '.icon.tmp.*' -type l \) -print0)
c_rmdir "$d"
}
# --- dashboard patch state ---
clean_ui_state() { # all
@@ -845,7 +865,7 @@ clean_ui_state() { # all
}
cmd_cleanup() {
local mode='' all=0 keep_debugger=0 keep_screenshots=0 keeps=0 k
local mode='' all=0 keep_debugger=0 keep_screenshots=0 keep_pet=0 keeps=0 k
while (( $# )); do
case $1 in
--all) mode=all; shift ;;
@@ -858,7 +878,8 @@ cmd_cleanup() {
case $k in
debugger) keep_debugger=1 ;;
screenshots) keep_screenshots=1 ;;
*) die "cleanup: unknown artifact '$k' for --keep (debugger, screenshots)" ;;
pet) keep_pet=1 ;;
*) die "cleanup: unknown artifact '$k' for --keep (debugger, screenshots, pet)" ;;
esac ;;
-h|--help) usage; exit 0 ;;
*) die "cleanup: unknown option '$1' (see --help)" ;;
@@ -880,7 +901,9 @@ cmd_cleanup() {
clean_ui_state "$all"
c_rmdir "$SFN_STATE"
clean_screenshots "$keep_screenshots"
if (( all )); then clean_launchers; c_rmdir "$SFN_RUNTIME"; fi
clean_pet "$keep_pet"
(( all )) && clean_launchers
c_rmdir "$SFN_RUNTIME"
(( CLEAN_ACTIONS || ${#CLEAN_DEFERRED[@]} || CLEAN_QUIET )) || info "nothing to clean up"
return 0
}
+20 -2
View File
@@ -59,6 +59,9 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
: > $root/run/steam-frame-nix/applications/.lock
ln -s $HOME/.local/share/Steam/userdata/1/760/remote/250820/screenshots \
$root/run/steam-frame-nix/screenshots # steamFrame.screenshots
mkdir -p $root/run/steam-frame-nix/vr-pet # steamFrame.pet
ln -s /nix/store/00000000000000000000000000000000-vr-pet-icons/ginger.png $root/run/steam-frame-nix/vr-pet/icon.png
: > $root/run/steam-frame-nix/vr-pet/.lock
echo old > $root/run/systemd/user/steamvr.service.d/50-steam-frame-nix-debugger.conf
echo keep > $root/run/systemd/user/steamvr.service.d/other.conf
ln -s /nix/store/00000000000000000000000000000000-breeze-icons-6.30.0/share/icons/breeze/apps/64/utilities-terminal.svg $I/utilities-terminal.svg
@@ -80,6 +83,7 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
mkdir -p $HOME/.var/app/org.jellyfin.JellyfinDesktop
echo so > $HOME/.var/app/org.jellyfin.JellyfinDesktop/mpv-hwdec-shim.so; touch $S/jellyfin-hwdec-shim
echo '{"a":1}' > $S/ui-patches/frame-controls.json; echo '{' > $S/ui-patches/vr-cat.json.tmp
echo '{"model":"shiba"}' > $S/ui-patches/vr-pet.json
echo mine > $S/ui-patches/notes.txt
exec 9< $F/d.busy/.parentlock # Firefox "uses" d.busy
@@ -118,7 +122,7 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
there $O/org.example.Other
gone $HOME/.var/app/org.jellyfin.JellyfinDesktop/mpv-hwdec-shim.so $S/jellyfin-hwdec-shim
# ui state: ours gone, foreign file kept (so the dirs stay)
gone $S/ui-patches/frame-controls.json $S/ui-patches/vr-cat.json.tmp
gone $S/ui-patches/frame-controls.json $S/ui-patches/vr-cat.json.tmp $S/ui-patches/vr-pet.json
there $S/ui-patches/notes.txt
noop --all
exec 9<&-
@@ -200,10 +204,24 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
there $root/run/steam-frame-nix/screenshots
res=$(steam-frame-nix-cleanup --orphans)
gone $root/run/steam-frame-nix/screenshots
ln -s /elsewhere $root/run/steam-frame-nix/screenshots
mkdir -p $root/run/steam-frame-nix; ln -s /elsewhere $root/run/steam-frame-nix/screenshots
res=$(steam-frame-nix-cleanup --orphans)
has "$res" "left alone: $root/run/steam-frame-nix/screenshots"
rm -r $root/run/steam-frame-nix
# VR pet icon link: kept while used, a foreign link and file left alone
P=$root/run/steam-frame-nix/vr-pet; mkdir -p $P
ln -s /nix/store/00000000000000000000000000000000-vr-pet-icons/fox.png $P/icon.png
: > $P/.lock; ln -s /nix/store/00000000000000000000000000000000-vr-pet-icons/fox.png $P/.icon.tmp.123
res=$(steam-frame-nix-cleanup --orphans --keep pet)
there $P/icon.png $P/.lock $P/.icon.tmp.123
res=$(steam-frame-nix-cleanup --orphans)
gone $P
noop --orphans
mkdir -p $P; ln -s /elsewhere.png $P/icon.png; echo mine > $P/notes
res=$(steam-frame-nix-cleanup --orphans)
has "$res" "left alone: $P/icon.png"
there $P/icon.png $P/notes
rm -r $root/run/steam-frame-nix
! steam-frame-nix-cleanup --all --keep debugger 2>/dev/null || fail "--all --keep accepted"
! steam-frame-nix-cleanup --orphans --keep bogus 2>/dev/null || fail "unknown --keep accepted"
echo "C ok"