diff --git a/services/wolf.sh b/services/wolf.sh index 5629dac..74ca723 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -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//,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,