Files
nix-steam-rom-manager/modules/steam-rom-manager/emulators.nix
mjallen18 2fbb4d1f1b upd
2026-03-15 19:30:48 -05:00

250 lines
3.9 KiB
Nix

# 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 = [ ];
};
}