Skip to content

Instantly share code, notes, and snippets.

@acuteaura
Created September 5, 2025 15:31
Show Gist options
  • Select an option

  • Save acuteaura/98fb2abc57af2d645124c78ffc0fe13c to your computer and use it in GitHub Desktop.

Select an option

Save acuteaura/98fb2abc57af2d645124c78ffc0fe13c to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# make a variety of standalone emulators work with a single folder
# in retrodeck format (retrodeck sold separately)
set -eou pipefail
EMU_ROOT="$HOME/retrodeck"
EDEN_SHARE="$HOME/.local/share/eden"
RYUJINX_SHARE="$HOME/.config/Ryujinx"
AZAHAR_SHARE="$HOME/.local/share/azahar-emu"
DOLPHIN_SHARE="$HOME/.local/share/dolphin-emu"
RETROARCH_SHARE="$HOME/.config/retroarch"
EMUDECK_FOLDER="$HOME/Emulation"
EPOCH=$(printf "%(%s)T\n")
function relink_folder() {
if [ -d "$1" ] && [ ! -L "$1" ]; then
echo "$1 folder exists and is not linked"
mv "$1" "$1.old.$EPOCH"
fi
if [ -L "$1" ]; then
rm $1
fi
if [ ! -L "$1" ]; then
echo "linking $1 -> $2"
ln -s --relative "$2" "$1"
fi
}
if [ ! -d "$EMU_ROOT" ]; then
echo "no $EMU_ROOT, exiting"
exit 1
fi
if [ -d "$EDEN_SHARE" ]; then
relink_folder "$EDEN_SHARE/nand" "$EMU_ROOT/custom_data/eden/nand"
relink_folder "$EDEN_SHARE/sdmc" "$EMU_ROOT/custom_data/eden/sdmc"
relink_folder "$EDEN_SHARE/load" "$EMU_ROOT/custom_data/eden/load"
relink_folder "$EDEN_SHARE/keys" "$EMU_ROOT/custom_data/eden/keys"
# emudeck trying to be a smartass
if [ -d "$EMUDECK_FOLDER" ]; then
relink_folder "$EMUDECK_FOLDER/storage/eden/nand" "$EMU_ROOT/custom_data/eden/nand"
relink_folder "$EMUDECK_FOLDER/storage/eden/sdmc" "$EMU_ROOT/custom_data/eden/sdmc"
relink_folder "$EMUDECK_FOLDER/storage/eden/load" "$EMU_ROOT/custom_data/eden/load"
fi
fi
if [ -d "$RYUJINX_SHARE" ]; then
relink_folder "$RYUJINX_SHARE/bis" "$EMU_ROOT/custom_data/ryujinx/bis"
relink_folder "$RYUJINX_SHARE/mods" "$EMU_ROOT/custom_data/ryujinx/mods"
relink_folder "$RYUJINX_SHARE/profiles" "$EMU_ROOT/custom_data/ryujinx/profiles"
relink_folder "$RYUJINX_SHARE/sdcard" "$EMU_ROOT/custom_data/ryujinx/sdcard"
relink_folder "$RYUJINX_SHARE/system" "$EMU_ROOT/custom_data/ryujinx/system"
fi
if [ -d "$AZAHAR_SHARE" ]; then
relink_folder "$AZAHAR_SHARE/nand" "$EMU_ROOT/custom_data/azahar/nand"
relink_folder "$AZAHAR_SHARE/load" "$EMU_ROOT/custom_data/azahar/load"
relink_folder "$AZAHAR_SHARE/sdmc" "$EMU_ROOT/custom_data/azahar/sdmc"
relink_folder "$AZAHAR_SHARE/states" "$EMU_ROOT/custom_data/azahar/states"
relink_folder "$AZAHAR_SHARE/sysdata" "$EMU_ROOT/custom_data/azahar/sysdata"
fi
if [ -d "$DOLPHIN_SHARE" ]; then
relink_folder "$DOLPHIN_SHARE/Wii" "$EMU_ROOT/saves/wii/dolphin"
relink_folder "$DOLPHIN_SHARE/GC" "$EMU_ROOT/saves/gc/dolphin"
relink_folder "$DOLPHIN_SHARE/StateSaves" "$EMU_ROOT/states/dolphin"
fi
if [ -d "$RETROARCH_SHARE" ]; then
relink_folder "$RETROARCH_SHARE/saves" "$EMU_ROOT/saves"
relink_folder "$RETROARCH_SHARE/states" "$EMU_ROOT/states"
fi
if [ -d "$EMUDECK_FOLDER" ]; then
relink_folder "$EMUDECK_FOLDER/bios" "$EMU_ROOT/bios"
relink_folder "$EMUDECK_FOLDER/roms" "$EMU_ROOT/roms"
relink_folder "$EMUDECK_FOLDER/storage/Vita3K" "$EMU_ROOT/bios/Vita3K"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment