# emulators.nix — single source of truth for built-in emulator metadata. # # Both default.nix (for romFolder/fileTypes fallbacks) and options.nix (for # package defaults) import this file directly, preventing the two files from # drifting out of sync. # # Each entry may contain: # package — nixpkgs derivation (required) # romFolder — sub-directory name under romsDirectory (required) # fileTypes — list of file extensions matched by the glob parser (required) # parserType — SRM parser type string; omit to use the default "Glob" pkgs: { ryujinx = { # ryujinx was removed from nixpkgs; ryubing is the maintained community fork package = pkgs.ryubing; romFolder = "switch"; fileTypes = [ ".nca" ".NCA" ".nro" ".NRO" ".nso" ".NSO" ".nsp" ".NSP" ".xci" ".XCI" ]; }; # yuzu was removed from nixpkgs after the Nintendo lawsuit; eden is the successor yuzu = { package = pkgs.eden; romFolder = "switch"; fileTypes = [ ".nsp" ".NSP" ".xci" ".XCI" ]; }; pcsx2 = { package = pkgs.pcsx2; romFolder = "ps2"; fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ]; }; rpcs3 = { package = pkgs.rpcs3; romFolder = "ps3"; fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".pkg" ".PKG" ]; }; dolphin-emu = { # Use pkgs.dolphin-emu (the user-facing wrapper), not pkgs.dolphinEmu package = pkgs.dolphin-emu; romFolder = "gc"; fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" ".rvz" ".RVZ" ".wbfs" ".WBFS" ]; }; duckstation = { package = pkgs.duckstation; romFolder = "psx"; fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ".pbp" ".PBP" ]; }; melonDS = { package = pkgs.melonDS; romFolder = "nds"; fileTypes = [ ".nds" ".NDS" ]; }; cemu = { package = pkgs.cemu; romFolder = "wiiu"; fileTypes = [ ".wud" ".WUD" ".wux" ".WUX" ".rpx" ".RPX" ]; }; ppsspp = { package = pkgs.ppsspp; romFolder = "psp"; fileTypes = [ ".iso" ".ISO" ".cso" ".CSO" ".pbp" ".PBP" ]; }; mame = { package = pkgs.mame; romFolder = "arcade"; fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ]; }; dosbox = { package = pkgs.dosbox; romFolder = "dos"; fileTypes = [ ".exe" ".EXE" ".bat" ".BAT" ".com" ".COM" ]; }; snes9x = { package = pkgs.snes9x-gtk; romFolder = "snes"; fileTypes = [ ".smc" ".SMC" ".sfc" ".SFC" ".fig" ".FIG" ]; }; mgba = { package = pkgs.mgba; romFolder = "gba"; fileTypes = [ ".gba" ".GBA" ]; }; mupen64plus = { package = pkgs.mupen64plus; romFolder = "n64"; fileTypes = [ ".n64" ".N64" ".v64" ".V64" ".z64" ".Z64" ]; }; retroarch = { package = pkgs.retroarch; romFolder = "retroarch"; fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ]; }; flycast = { package = pkgs.flycast; romFolder = "dreamcast"; fileTypes = [ ".gdi" ".GDI" ".cdi" ".CDI" ".chd" ".CHD" ]; }; # citra-nightly was removed from nixpkgs; azahar is the maintained successor citra = { package = pkgs.azahar; romFolder = "3ds"; fileTypes = [ ".3ds" ".3DS" ".cia" ".CIA" ".cxi" ".CXI" ]; }; "Non-SRM Shortcuts" = { package = pkgs.steam; parserType = "Non-SRM Shortcuts"; romFolder = ""; fileTypes = [ ]; }; }