Fix wolf.sh: mount /home/retro/.config itself, not just .config/retroarch
Only .config/retroarch was mounted, so Docker still had to auto-create .config itself (one level up) as an intermediate directory for that bind mount to attach under — same root:root mode-755 stub problem as before, just one level higher. Confirmed live: RetroArch got past its own config.toml write this time, but then crashed on: mkdir: cannot create directory '/home/retro/.config/waybar': Permission denied (Waybar/Sway — the on-screen overlay GoW's app-runner wrapper spawns for every app, not RetroArch-specific.) Fix: add a second mount at /home/retro/.config itself, backed by a new retro-home/ host directory, alongside the existing more-specific .config/retroarch mount (Docker resolves nested/overlapping bind mounts correctly regardless of list order). Now nothing under .config is a Docker-auto-created stub — it's real host-backed content throughout, so anything an app writes directly under .config (Waybar, Sway state, RetroArch's own non-cores/shaders/overlays files) just works. Also force retro-home/ and the existing retroarch/ dir to 1000:1000 explicitly after the general ACTUAL_USER chown — the GoW app containers' 'retro' user is hardcoded to uid 1000 regardless of what uid the host account installing this actually has, so relying on the general chown alone silently breaks this fix on any box where those don't match.
This commit is contained in:
+14
-1
@@ -708,7 +708,8 @@ UDEV
|
||||
"$GAME_STORAGE_DIR/kodi" "$GAME_STORAGE_DIR/emulators" \
|
||||
"$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/retroarch/shaders" "$GAME_STORAGE_DIR/retroarch/overlays" \
|
||||
"$GAME_STORAGE_DIR/retro-home"
|
||||
|
||||
# ── Wolf state folder on the game drive ───────────────────────────────────
|
||||
# This is the clean way to keep Steam (and everything else) off the OS
|
||||
@@ -759,6 +760,14 @@ UDEV
|
||||
done
|
||||
|
||||
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
|
||||
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."
|
||||
|
||||
@@ -1316,6 +1325,7 @@ CATALOG = {
|
||||
f'{games}/saves:/mnt/games/saves:rw',
|
||||
f'{games}/media:/media:rw',
|
||||
f'{games}/bios:/home/retro/bioses:rw',
|
||||
f'{games}/retro-home:/home/retro/.config:rw',
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
|
||||
f'{games}/emulators:/mnt/games/emulators:rw',
|
||||
f'{games}/emulators:/home/retro/Applications:rw'],
|
||||
@@ -1340,6 +1350,7 @@ CATALOG = {
|
||||
mounts=[f'{games}/roms:/ROMs:rw',
|
||||
f'{games}/saves:/mnt/games/saves:rw',
|
||||
f'{games}/bios:/home/retro/bioses:rw',
|
||||
f'{games}/retro-home:/home/retro/.config:rw',
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw'],
|
||||
env=STD_ENV, cap_add=STD_CAP, security_opt=[], ipc_mode='host',
|
||||
ulimits=[], privileged=False,
|
||||
@@ -2613,6 +2624,7 @@ CATALOG = {
|
||||
f'{games}/saves:/mnt/games/saves:rw',
|
||||
f'{games}/media:/media:rw',
|
||||
f'{games}/bios:/home/retro/bioses:rw',
|
||||
f'{games}/retro-home:/home/retro/.config:rw',
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
|
||||
f'{games}/emulators:/mnt/games/emulators:rw',
|
||||
f'{games}/emulators:/home/retro/Applications:rw'],
|
||||
@@ -2637,6 +2649,7 @@ CATALOG = {
|
||||
mounts=[f'{games}/roms:/ROMs:rw',
|
||||
f'{games}/saves:/mnt/games/saves:rw',
|
||||
f'{games}/bios:/home/retro/bioses:rw',
|
||||
f'{games}/retro-home:/home/retro/.config:rw',
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw'],
|
||||
env=STD_ENV, cap_add=STD_CAP, security_opt=[], ipc_mode='host',
|
||||
ulimits=[], privileged=False,
|
||||
|
||||
Reference in New Issue
Block a user