{"slug": "one-step-installer-for-switch-emulators-on-linux-and-windows", "title": "One-step installer for switch emulators on Linux and Windows", "summary": "This article describes a collection of scripts that provide a one-step installer for Nintendo Switch emulators on Linux and Windows. The scripts automatically download and install emulators like Citron, Eden, and Ryujinx along with the latest firmware and decryption keys, and can optionally configure EmulationStation Desktop Edition (ES-DE) and Steam Gaming Mode. The project includes separate scripts for installation, ES-DE integration, firmware updates, and adding Steam shortcuts, with support for custom installation directories and specific firmware versions.", "body_md": "Switch Emulator Scripts One-step installer and ES-DE integration for Nintendo Switch emulators on Linux and Windows. Automatically downloads and installs your chosen emulator along with the latest firmware and decryption keys — then optionally configures EmulationStation Desktop Edition (ES-DE) and Steam Gaming Mode. Scripts Overview Script Platform Description installSwitchEmu.sh Linux Install emulator + firmware + keys installSwitchEmuWin.ps1 Windows Install emulator + firmware + keys setupESDESwitchEmu.sh Linux Configure ES-DE to use Switch emulators (EmuDeck-compatible) updateSwitchFirmware.sh Linux Update firmware/keys for all installed emulators addSteamShortcuts.sh Linux Add emulators to Steam Gaming Mode (Bazzite/SteamOS) Supported Emulators Citron — Yuzu fork Eden — Self-hosted Yuzu fork Ryujinx — Ryubing community fork Quick Start Full Setup (Linux — Bazzite / Steam Deck / Desktop) GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # 1. Install emulator curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --emulator eden # 2. Configure ES-DE to see it curl -fsSL $GIST/setupESDESwitchEmu.sh | bash # 3. (Optional) Add to Steam Gaming Mode curl -fsSL $GIST/addSteamShortcuts.sh | bash Windows $GIST = \"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" iwr -useb \"$GIST/installSwitchEmuWin.ps1\" -OutFile $env:TEMP\\install.ps1 & $env:TEMP\\install.ps1 --emulator eden 1. installSwitchEmu.sh / installSwitchEmuWin.ps1 Downloads and installs a Switch emulator with firmware and decryption keys. Options -e, --emulator EMU Specify emulator: citron (default), ryujinx, eden -f, --force Force reinstall even if already installed -s, --skip-keys Skip downloading prod.keys and firmware -d, --dir DIR Custom installation directory -v, --keys-version VER Specify firmware version (e.g., 20.4.0) -h, --help Show help message Linux Examples GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # Install Eden to default location curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --emulator eden # Install Ryujinx with custom directory curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --emulator ryujinx --dir /opt/ryujinx # Install Citron without keys/firmware curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --skip-keys # Force reinstall with specific firmware version curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --emulator eden --force --keys-version 20.4.0 Windows Examples $GIST = \"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" iwr -useb \"$GIST/installSwitchEmuWin.ps1\" -OutFile $env:TEMP\\install.ps1 # Install Eden & $env:TEMP\\install.ps1 --emulator eden # Install Ryujinx with custom directory & $env:TEMP\\install.ps1 --emulator ryujinx --dir \"C:\\Games\\Ryujinx\" # Force reinstall with specific firmware version & $env:TEMP\\install.ps1 --emulator eden --force --keys-version 20.4.0 2. setupESDESwitchEmu.sh Configures ES-DE (EmulationStation Desktop Edition) to recognize your installed Switch emulators. Follows EmuDeck directory conventions so it works alongside EmuDeck setups. What it does: Creates ~/Emulation/roms/switch/ for your ROM files Symlinks emulators into ~/Emulation/tools/ (EmuDeck convention) Writes es_find_rules.xml so ES-DE can auto-detect citron, eden, and ryujinx Writes es_systems.xml with all three as selectable launch options Options --emulator EMU Which emulator to configure (citron, ryujinx, eden, all). Default: all --emu-path PATH Path to emulator install (auto-detected if not specified) --roms-dir DIR Custom ROMs directory. Default: ~/Emulation/roms/switch --no-symlink Don't create symlinks in ~/Emulation/tools/ --uninstall Remove ES-DE custom configs added by this script -h, --help Show this help Examples GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # Auto-detect and configure all installed emulators curl -fsSL $GIST/setupESDESwitchEmu.sh | bash # Configure only Eden with a custom install path curl -fsSL $GIST/setupESDESwitchEmu.sh | bash -s -- --emulator eden --emu-path ~/Applications/eden # Use a custom ROMs directory curl -fsSL $GIST/setupESDESwitchEmu.sh | bash -s -- --roms-dir /mnt/games/switch # Remove the ES-DE configuration curl -fsSL $GIST/setupESDESwitchEmu.sh | bash -s -- --uninstall Directory Layout After Setup ~/Emulation/ ├── roms/ │ └── switch/ ← Place .nsp / .xci files here └── tools/ ├── citron/ ← Symlinks to installed emulator binaries ├── eden/ └── ryujinx/ After running, restart ES-DE. Change the default emulator in: Other Settings → Alternative Emulators → Nintendo Switch 3. updateSwitchFirmware.sh Updates firmware and decryption keys for all installed Switch emulators without needing to re-run the full installer. Detects which emulators are installed and updates each one. Options --version VER Firmware/keys version to install (e.g., 19.0.1). Default: latest --list-versions Show available versions and exit --keys-only Only update prod.keys --firmware-only Only update firmware -h, --help Show this help Examples GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # Update all emulators to latest firmware/keys curl -fsSL $GIST/updateSwitchFirmware.sh | bash # Update to a specific version curl -fsSL $GIST/updateSwitchFirmware.sh | bash -s -- --version 19.0.1 # Only update keys (faster) curl -fsSL $GIST/updateSwitchFirmware.sh | bash -s -- --keys-only # See what versions are available curl -fsSL $GIST/updateSwitchFirmware.sh | bash -s -- --list-versions 4. addSteamShortcuts.sh Creates desktop entries and launcher scripts for Steam Gaming Mode. Essential for Bazzite, SteamOS, and Steam Deck where Game Mode is the primary interface. What it does: Adds ES-DE as a non-Steam shortcut (launch your game library from Gaming Mode) Adds individual emulators as shortcuts for direct access Creates launcher scripts in ~/Emulation/tools/launchers/ Options --esde-only Only add ES-DE shortcut --emulators-only Only add emulator shortcuts --all Add both ES-DE and emulator shortcuts (default) --remove Remove all shortcuts added by this script -h, --help Show this help Examples GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # Add all shortcuts curl -fsSL $GIST/addSteamShortcuts.sh | bash # Only add ES-DE as a shortcut curl -fsSL $GIST/addSteamShortcuts.sh | bash -s -- --esde-only # Remove shortcuts curl -fsSL $GIST/addSteamShortcuts.sh | bash -s -- --remove After running, add shortcuts to Steam via: Open Steam in Desktop Mode Games → Add a Non-Steam Game to My Library Select the entries with \"(Switch\" in their name Switch to Gaming Mode — they'll appear in your library Recommended Workflow (Bazzite / Steam Deck) GIST=\"https://gist.githubusercontent.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf/raw\" # Step 1: Install your preferred emulator curl -fsSL $GIST/installSwitchEmu.sh | bash -s -- --emulator eden # Step 2: Hook it into ES-DE (EmuDeck-compatible) curl -fsSL $GIST/setupESDESwitchEmu.sh | bash # Step 3: Add to Steam for Gaming Mode access curl -fsSL $GIST/addSteamShortcuts.sh | bash # Step 4: Place your games # Copy .nsp / .xci files to ~/Emulation/roms/switch/ # Later: Update firmware when new games need it curl -fsSL $GIST/updateSwitchFirmware.sh | bash Notes These scripts depend on THZoria/NX_Firmware for firmware and keys. If the latest versions are mismatched, use --keys-version to specify explicitly. The ES-DE setup is fully compatible with existing EmuDeck installations — it uses the same directory layout and conventions. On Bazzite, you may need to chmod +x AppImage files if they weren't installed via the script.", "url": "https://wpnews.pro/news/one-step-installer-for-switch-emulators-on-linux-and-windows", "canonical_source": "https://gist.github.com/camcast3/0d8232b3c77cb0ea1d8279dbabd0eeaf", "published_at": "2026-05-01 02:16:24+00:00", "updated_at": "2026-05-22 13:49:20.597953+00:00", "lang": "en", "topics": ["open-source", "developer-tools", "products"], "entities": ["Citron", "Yuzu", "Ryujinx", "Ryubing", "EmulationStation Desktop Edition", "ES-DE", "Steam Gaming Mode", "Bazzite"], "alternates": {"html": "https://wpnews.pro/news/one-step-installer-for-switch-emulators-on-linux-and-windows", "markdown": "https://wpnews.pro/news/one-step-installer-for-switch-emulators-on-linux-and-windows.md", "text": "https://wpnews.pro/news/one-step-installer-for-switch-emulators-on-linux-and-windows.txt", "jsonld": "https://wpnews.pro/news/one-step-installer-for-switch-emulators-on-linux-and-windows.jsonld"}}