fix bin name search
This commit is contained in:
@@ -6,16 +6,16 @@ let
|
||||
cfg = config.programs.steam-rom-manager;
|
||||
|
||||
# Function to find the main binary in a package
|
||||
findMainBinary = pkg: name:
|
||||
findMainBinary = pkg:
|
||||
let
|
||||
pkgName = pkg.pname or (builtins.parseDrvName pkg.name).name;
|
||||
binPath = "${pkg}/bin/${pkgName}";
|
||||
|
||||
commonVariants = [
|
||||
pkgName
|
||||
"${pkgName}-qt"
|
||||
"${pkgName}-gtk"
|
||||
"${pkgName}-emu"
|
||||
"Ryujinx"
|
||||
];
|
||||
|
||||
existingVariant = findFirst
|
||||
@@ -23,9 +23,7 @@ let
|
||||
null
|
||||
commonVariants;
|
||||
in
|
||||
if name != ""
|
||||
then name
|
||||
else if existingVariant != null
|
||||
if existingVariant != null
|
||||
then existingVariant
|
||||
else pkgName;
|
||||
|
||||
@@ -35,118 +33,96 @@ let
|
||||
romFolder = "switch";
|
||||
fileTypes = [ ".nca" ".NCA" ".nro" ".NRO" ".nso" ".NSO" ".nsp" ".NSP" ".xci" ".XCI" ];
|
||||
package = pkgs.ryujinx;
|
||||
binaryName = "Ryujinx";
|
||||
};
|
||||
yuzu = {
|
||||
romFolder = "switch";
|
||||
fileTypes = [ ".nsp" ".NSP" ".xci" ".XCI" ];
|
||||
package = pkgs.yuzu;
|
||||
binaryName = "yuzu";
|
||||
};
|
||||
pcsx2 = {
|
||||
romFolder = "ps2";
|
||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
||||
package = pkgs.pcsx2;
|
||||
binaryName = "pcsx2";
|
||||
};
|
||||
rpcs3 = {
|
||||
romFolder = "ps3";
|
||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".pkg" ".PKG" ];
|
||||
package = pkgs.rpcs3;
|
||||
binaryName = "rpcs3";
|
||||
};
|
||||
dolphin-emu = {
|
||||
romFolder = "gc";
|
||||
fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" ];
|
||||
package = pkgs.dolphin-emu;
|
||||
binaryName = "dolphin-emu";
|
||||
};
|
||||
duckstation = {
|
||||
romFolder = "psx";
|
||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ".pbp" ".PBP" ];
|
||||
package = pkgs.duckstation;
|
||||
binaryName = "duckstation";
|
||||
};
|
||||
melonDS = {
|
||||
romFolder = "nds";
|
||||
fileTypes = [ ".nds" ".NDS" ];
|
||||
package = pkgs.melonDS;
|
||||
binaryName = "melonDS";
|
||||
};
|
||||
cemu = {
|
||||
romFolder = "wiiu";
|
||||
fileTypes = [ ".wud" ".WUD" ".wux" ".WUX" ".rpx" ".RPX" ];
|
||||
package = pkgs.cemu;
|
||||
binaryName = "cemu";
|
||||
};
|
||||
ppsspp = {
|
||||
romFolder = "psp";
|
||||
fileTypes = [ ".iso" ".ISO" ".cso" ".CSO" ".pbp" ".PBP" ];
|
||||
package = pkgs.ppsspp;
|
||||
binaryName = "ppsspp";
|
||||
};
|
||||
mame = {
|
||||
romFolder = "arcade";
|
||||
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ];
|
||||
package = pkgs.mame;
|
||||
binaryName = "mame";
|
||||
};
|
||||
dosbox = {
|
||||
romFolder = "dos";
|
||||
fileTypes = [ ".exe" ".EXE" ".bat" ".BAT" ".com" ".COM" ];
|
||||
package = pkgs.dosbox;
|
||||
binaryName = "dosbox";
|
||||
};
|
||||
snes9x = {
|
||||
romFolder = "snes";
|
||||
fileTypes = [ ".smc" ".SMC" ".sfc" ".SFC" ".fig" ".FIG" ];
|
||||
package = pkgs.snes9x-gtk;
|
||||
binaryName = "snes9x";
|
||||
};
|
||||
mgba = {
|
||||
romFolder = "gba";
|
||||
fileTypes = [ ".gba" ".GBA" ];
|
||||
package = pkgs.mgba;
|
||||
binaryName = "mgba";
|
||||
};
|
||||
mupen64plus = {
|
||||
romFolder = "n64";
|
||||
fileTypes = [ ".n64" ".N64" ".v64" ".V64" ".z64" ".Z64" ];
|
||||
package = pkgs.mupen64plus;
|
||||
binaryName = "mupen64plus";
|
||||
};
|
||||
retroarch = {
|
||||
romFolder = "retroarch";
|
||||
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
||||
package = pkgs.retroarch;
|
||||
binaryName = "retroarch";
|
||||
};
|
||||
flycast = {
|
||||
romFolder = "dreamcast";
|
||||
fileTypes = [ ".gdi" ".GDI" ".cdi" ".CDI" ".chd" ".CHD" ];
|
||||
package = pkgs.flycast;
|
||||
binaryName = "flycast";
|
||||
};
|
||||
citra = {
|
||||
romFolder = "3ds";
|
||||
fileTypes = [ ".3ds" ".3DS" ".cia" ".CIA" ".cxi" ".CXI" ];
|
||||
package = pkgs.citra-nightly;
|
||||
binaryName = "citra";
|
||||
};
|
||||
};
|
||||
|
||||
# Create parser configuration
|
||||
mkParserConfig = name: emu:
|
||||
let
|
||||
# Get the default config if it exists
|
||||
defaultConfig = commonEmulatorConfigs.${name} or {};
|
||||
# Merge the provided config with defaults
|
||||
finalConfig = defaultConfig // emu;
|
||||
|
||||
# Use the provided package or fall back to the default if available
|
||||
package = emu.package;
|
||||
# Get the binary name dynamically
|
||||
binaryName = findMainBinary package (finalConfig.binaryName or "");
|
||||
binaryName = findMainBinary package;
|
||||
|
||||
orderedConfig = [
|
||||
# Basic parser configuration
|
||||
@@ -339,7 +315,7 @@ in {
|
||||
configs = mapAttrsToList (name: emu:
|
||||
mkParserConfig name (emu // {
|
||||
romFolder = if emu.romFolder != "" then emu.romFolder else commonEmulatorConfigs.${name}.romFolder;
|
||||
binaryName = if emu.binaryName != "" then emu.binaryName else commonEmulatorConfigs.${name}.binaryName;
|
||||
# binaryName = if emu.binaryName != "" then emu.binaryName else commonEmulatorConfigs.${name}.binaryName;
|
||||
})
|
||||
) (filterAttrs (_: v: v.enable) cfg.emulators);
|
||||
|
||||
|
||||
@@ -265,11 +265,6 @@ in {
|
||||
else pkgs.${name};
|
||||
description = "Emulator package";
|
||||
};
|
||||
binaryName = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "Name of the emulator binary (defaults to automatically detected from package)";
|
||||
};
|
||||
romFolder = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
|
||||
Reference in New Issue
Block a user