diff --git a/modules/steam-rom-manager/default.nix b/modules/steam-rom-manager/default.nix index 6849c68..ee94d85 100644 --- a/modules/steam-rom-manager/default.nix +++ b/modules/steam-rom-manager/default.nix @@ -114,6 +114,12 @@ let fileTypes = [ ".3ds" ".3DS" ".cia" ".CIA" ".cxi" ".CXI" ]; package = pkgs.citra-nightly; }; + "Non-SRM Shortcuts" = { + parserType = "Non-SRM Shortcuts"; + romFolder = ""; + fileTypes = [ ]; + package = pkgs.steam; + }; }; # Create parser configuration @@ -126,32 +132,32 @@ let orderedConfig = [ # Basic parser configuration - { name = "parserType"; value = "Glob"; } - { name = "configTitle"; value = name; } + { name = "parserType"; value = emu.parserType; } + { name = "configTitle"; value = emu.configTitle; } { name = "steamDirectory"; value = "\${steamdirglobal}"; } { name = "romDirectory"; value = "${cfg.environmentVariables.romsDirectory}/${if emu.romFolder != "" then emu.romFolder else commonEmulatorConfigs.${name}.romFolder}"; } - { name = "steamCategories"; value = [""]; } + { name = "steamCategories"; value = emu.steamCategories; } # Executable configuration { name = "executableArgs"; value = emu.extraArgs; } - { name = "executableModifier"; value = "\"\${exePath}\""; } + { name = "executableModifier"; value = emu.executableModifier; } { name = "startInDirectory"; value = "${cfg.environmentVariables.romsDirectory}/${if emu.romFolder != "" then emu.romFolder else commonEmulatorConfigs.${name}.romFolder}"; } - { name = "titleModifier"; value = "\${fuzzyTitle}"; } + { name = "titleModifier"; value = emu.titleModifier; } # Controller settings { name = "fetchControllerTemplatesButton"; value = null; } { name = "removeControllersButton"; value = null; } - { name = "steamInputEnabled"; value = "1"; } + { name = "steamInputEnabled"; value = if emu.steamInputEnabled then "1" else "0"; } # Image provider configuration { name = "imageProviders"; value = cfg.enabledProviders; } - { name = "onlineImageQueries"; value = [ "\${fuzzyTitle}" ]; } - { name = "imagePool"; value = "\${fuzzyTitle}"; } + { name = "onlineImageQueries"; value = emu.onlineImageQueries; } + { name = "imagePool"; value = emu.imagePool; } # DRM and user account settings - { name = "drmProtect"; value = false; } + { name = "drmProtect"; value = emu.drmProtected; } { name = "userAccounts"; value = { - specifiedAccounts = [ "Global" ]; + specifiedAccounts = emu.userAccounts; }; } # Parser-specific settings @@ -162,8 +168,8 @@ let # Executable details { name = "executable"; value = { path = "${package}/bin/${binaryName}"; - shortcutPassthrough = false; - appendArgsToExecutable = true; + shortcutPassthrough = emu.shortcutPassthrough; + appendArgsToExecutable = emu.appendArgsToExecutable; }; } # Title and fuzzy matching configuration diff --git a/modules/steam-rom-manager/options.nix b/modules/steam-rom-manager/options.nix index 6cf4f1b..e70f50f 100644 --- a/modules/steam-rom-manager/options.nix +++ b/modules/steam-rom-manager/options.nix @@ -262,24 +262,95 @@ in { else if name == "mupen64plus" then pkgs.mupen64plus else if name == "retroarch" then pkgs.retroarch else if name == "flycast" then pkgs.flycast + else if name == "Non-SRM Shortcuts" then pkgs.steam else pkgs.${name}; description = "Emulator package"; }; + parserType = mkOption { + type = types.str; + default = "Glob"; + description = "Parser type"; + }; + configTitle = mkOption { + type = types.str; + default = name; + description = "Configuration title"; + }; romFolder = mkOption { type = types.str; default = ""; description = "Name of the ROM folder (defaults to common configuration)"; }; - fileTypes = mkOption { + steamCategories = mkOption { type = types.listOf types.str; - default = []; - description = "List of ROM file types (defaults to common configuration)"; + default = [""]; + description = "List of Steam categories"; }; extraArgs = mkOption { type = types.str; default = "--fullscreen \"\${filePath}\""; description = "Additional emulator arguments"; }; + executableModifier = mkOption { + type = types.str; + default = "\"\${exePath}\""; + description = "Executable modifier"; + }; + titleModifier = mkOption { + type = types.str; + default = "\${fuzzyTitle}"; + description = "Title modifier"; + }; + # fetchControllerTemplatesButton = mkOption { + # type = types.str; + # default = null; + # description = "Fetch controller templates button"; + # }; + # removeControllersButton = mkOption { + # type = types.str; + # default = null; + # description = "Remove controller templates button"; + # }; + steamInputEnabled = mkOption { + type = types.bool; + default = false; + description = "Enable Steam input"; + }; + onlineImageQueries = mkOption { + type = types.listOf types.str; + default = [ "\${fuzzyTitle}" ]; + description = "List of online image queries"; + }; + imagePool = mkOption { + type = types.str; + default = "\${fuzzyTitle}"; + description = "image pool"; + }; + drmProtected = mkOption { + type = types.bool; + default = false; + description = "DRM protected"; + }; + userAccounts = mkOption { + type = types.listOf types.str; + default = [ "Global" ]; + description = "List of user accounts"; + }; + fileTypes = mkOption { + type = types.listOf types.str; + default = []; + description = "List of ROM file types (defaults to common configuration)"; + }; + shortcutPassthrough = mkOption { + type = types.bool; + default = false; + description = "Enable shortcut passthrough"; + }; + appendArgsToExecutable = mkOption { + type = types.bool; + default = true; + description = "Append arguments to executable"; + }; }; })); default = {};