Fix wolf.sh: mount /home/retro/.local/share, not just .config

Confirmed live: Dolphin's "data is corrupted" / "could not write
to/read from Wii system memory" was ~/.local/share/dolphin-emu (the
emulated Wii NAND) not existing at all inside the container —

  ls: cannot access '/home/retro/.local/share/dolphin-emu/':
  No such file or directory

Only /home/retro/.config had a persistent mount (retro-home, added
earlier this session for the RetroArch permission-denied fix) —
/home/retro/.local/share, the other half of the XDG base directory
split many apps use (config vs. actual data), was never addressed and
started completely empty on every container launch. Any NAND state
Dolphin wrote mid-session vanished the moment that container was torn
down, which is consistent with "corrupted" rather than merely "empty"
if a session ended mid-write.

Same fix as the earlier .config mount: a new retro-home-data host
directory mounted at /home/retro/.local/share in both the esde and
retroarch app profiles (both CATALOG copies), forced to 1000:1000
ownership like the other retro-home dirs since the container's retro
user is hardcoded to that uid regardless of the host account.
This commit is contained in:
Claude
2026-09-01 13:49:05 +00:00
parent bef88e654d
commit 85b13d07a7
+16 -8
View File
@@ -753,7 +753,7 @@ UDEV
"$GAME_STORAGE_DIR/steam-cache" \
"$GAME_STORAGE_DIR/bios" "$GAME_STORAGE_DIR/retroarch/cores" \
"$GAME_STORAGE_DIR/retroarch/shaders" "$GAME_STORAGE_DIR/retroarch/overlays" \
"$GAME_STORAGE_DIR/retro-home"
"$GAME_STORAGE_DIR/retro-home" "$GAME_STORAGE_DIR/retro-home-data"
# ── Wolf state folder on the game drive ───────────────────────────────────
# This is the clean way to keep Steam (and everything else) off the OS
@@ -805,13 +805,17 @@ UDEV
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$GAME_STORAGE_DIR" 2>/dev/null || true
# The GoW app containers' 'retro' user is hardcoded to uid 1000 regardless
# of what ACTUAL_USER's own uid happens to be — force these two directly
# onto 1000:1000 so they're writable inside the container even when
# ACTUAL_USER isn't uid 1000. Both are mounted at/under /home/retro/.config
# (see the esde/retroarch CATALOG mounts) — retro-home in particular is
# what /home/retro/.config itself binds to, so anything an app writes
# there directly (Waybar, Sway, RetroArch's own state) needs this.
chown -R 1000:1000 "$GAME_STORAGE_DIR/retro-home" "$GAME_STORAGE_DIR/retroarch" 2>/dev/null || true
# of what ACTUAL_USER's own uid happens to be — force these directly onto
# 1000:1000 so they're writable inside the container even when
# ACTUAL_USER isn't uid 1000. retro-home/retro-home-data back
# /home/retro/.config and /home/retro/.local/share respectively (see the
# esde/retroarch CATALOG mounts) — apps split state across both XDG dirs
# (Waybar/Sway/RetroArch's own config lives under .config; Dolphin's
# emulated Wii NAND in particular lives under .local/share/dolphin-emu —
# confirmed live: "data is corrupted" / "could not write to/read from Wii
# system memory" was this directory not existing at all, since only
# .config had a persistent mount before this).
chown -R 1000:1000 "$GAME_STORAGE_DIR/retro-home" "$GAME_STORAGE_DIR/retro-home-data" "$GAME_STORAGE_DIR/retroarch" 2>/dev/null || true
log_success "Storage layout: $GAME_STORAGE_DIR/{roms/<system>/,steam,saves,media,emulators,...}"
log_info "ES-DE ROM directories pre-created. Drop ROMs in the matching subfolder."
@@ -1444,6 +1448,7 @@ CATALOG = {
f'{games}/media:/media:rw',
f'{games}/bios:/home/retro/bioses:rw',
f'{games}/retro-home:/home/retro/.config:rw',
f'{games}/retro-home-data:/home/retro/.local/share:rw',
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
f'{games}/emulators:/mnt/games/emulators:rw',
f'{games}/emulators:/home/retro/Applications:rw'],
@@ -1469,6 +1474,7 @@ CATALOG = {
f'{games}/saves:/mnt/games/saves:rw',
f'{games}/bios:/home/retro/bioses:rw',
f'{games}/retro-home:/home/retro/.config:rw',
f'{games}/retro-home-data:/home/retro/.local/share:rw',
f'{games}/retroarch:/home/retro/.config/retroarch:rw'],
env=STD_ENV, cap_add=STD_CAP, security_opt=[], ipc_mode='host',
ulimits=[], privileged=False,
@@ -2743,6 +2749,7 @@ CATALOG = {
f'{games}/media:/media:rw',
f'{games}/bios:/home/retro/bioses:rw',
f'{games}/retro-home:/home/retro/.config:rw',
f'{games}/retro-home-data:/home/retro/.local/share:rw',
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
f'{games}/emulators:/mnt/games/emulators:rw',
f'{games}/emulators:/home/retro/Applications:rw'],
@@ -2768,6 +2775,7 @@ CATALOG = {
f'{games}/saves:/mnt/games/saves:rw',
f'{games}/bios:/home/retro/bioses:rw',
f'{games}/retro-home:/home/retro/.config:rw',
f'{games}/retro-home-data:/home/retro/.local/share:rw',
f'{games}/retroarch:/home/retro/.config/retroarch:rw'],
env=STD_ENV, cap_add=STD_CAP, security_opt=[], ipc_mode='host',
ulimits=[], privileged=False,