init
This commit is contained in:
21
README.md
Normal file
21
README.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Steam Rom Manager NixOS Home Manager Configuration
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Nix Flake
|
||||||
|
* Inputs: steam-rom-manager.url = "github:mjallen18/nix-steam-rom-manager";
|
||||||
|
* ```nixosConfigurations = {
|
||||||
|
"<hostname>" = nixpkgs-unstable.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users.<username> = { pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
steam-rom-manager.homeManagerModules.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};```
|
||||||
@@ -239,13 +239,31 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
emulators = mkOption {
|
emulators = mkOption {
|
||||||
type = types.attrsOf (types.submodule {
|
type = types.attrsOf (types.submodule ({ name, ... }: {
|
||||||
options = {
|
options = {
|
||||||
enable = mkEnableOption "emulator configuration";
|
enable = mkEnableOption "emulator configuration";
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = null;
|
default =
|
||||||
description = "Emulator package (defaults to common configuration if not set)";
|
if name == "pcsx2" then pkgs.pcsx2
|
||||||
|
else if name == "citra" then pkgs.citra-nightly
|
||||||
|
else if name == "yuzu" then pkgs.yuzu
|
||||||
|
else if name == "ryujinx" then pkgs.ryujinx-greemdev
|
||||||
|
else if name == "rpcs3" then pkgs.rpcs3
|
||||||
|
else if name == "dolphin-emu" then pkgs.dolphinEmu
|
||||||
|
else if name == "duckstation" then pkgs.duckstation
|
||||||
|
else if name == "melonDS" then pkgs.melonDS
|
||||||
|
else if name == "cemu" then pkgs.cemu
|
||||||
|
else if name == "ppsspp" then pkgs.ppsspp
|
||||||
|
else if name == "mame" then pkgs.mame
|
||||||
|
else if name == "dosbox" then pkgs.dosbox
|
||||||
|
else if name == "snes9x" then pkgs.snes9x-gtk
|
||||||
|
else if name == "mgba" then pkgs.mgba
|
||||||
|
else if name == "mupen64plus" then pkgs.mupen64plus
|
||||||
|
else if name == "retroarch" then pkgs.retroarch
|
||||||
|
else if name == "flycast" then pkgs.flycast
|
||||||
|
else pkgs.${name};
|
||||||
|
description = "Emulator package";
|
||||||
};
|
};
|
||||||
binaryName = mkOption {
|
binaryName = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
@@ -268,7 +286,7 @@ in {
|
|||||||
description = "Additional emulator arguments";
|
description = "Additional emulator arguments";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
}));
|
||||||
default = {};
|
default = {};
|
||||||
description = "Emulator configurations";
|
description = "Emulator configurations";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,96 +35,118 @@ let
|
|||||||
romFolder = "switch";
|
romFolder = "switch";
|
||||||
fileTypes = [ ".nca" ".NCA" ".nro" ".NRO" ".nso" ".NSO" ".nsp" ".NSP" ".xci" ".XCI" ];
|
fileTypes = [ ".nca" ".NCA" ".nro" ".NRO" ".nso" ".NSO" ".nsp" ".NSP" ".xci" ".XCI" ];
|
||||||
package = pkgs.ryujinx;
|
package = pkgs.ryujinx;
|
||||||
|
binaryName = "Ryujinx";
|
||||||
};
|
};
|
||||||
yuzu = {
|
yuzu = {
|
||||||
romFolder = "switch";
|
romFolder = "switch";
|
||||||
fileTypes = [ ".nsp" ".NSP" ".xci" ".XCI" ];
|
fileTypes = [ ".nsp" ".NSP" ".xci" ".XCI" ];
|
||||||
package = pkgs.yuzu;
|
package = pkgs.yuzu;
|
||||||
|
binaryName = "yuzu";
|
||||||
};
|
};
|
||||||
pcsx2 = {
|
pcsx2 = {
|
||||||
romFolder = "ps2";
|
romFolder = "ps2";
|
||||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
||||||
package = pkgs.pcsx2;
|
package = pkgs.pcsx2;
|
||||||
|
binaryName = "pcsx2";
|
||||||
};
|
};
|
||||||
rpcs3 = {
|
rpcs3 = {
|
||||||
romFolder = "ps3";
|
romFolder = "ps3";
|
||||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".pkg" ".PKG" ];
|
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".pkg" ".PKG" ];
|
||||||
package = pkgs.rpcs3;
|
package = pkgs.rpcs3;
|
||||||
|
binaryName = "rpcs3";
|
||||||
};
|
};
|
||||||
dolphin-emu = {
|
dolphin-emu = {
|
||||||
romFolder = "gc";
|
romFolder = "gc";
|
||||||
fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" ];
|
fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" ];
|
||||||
package = pkgs.dolphinEmu;
|
package = pkgs.dolphin-emu;
|
||||||
|
binaryName = "dolphin-emu";
|
||||||
};
|
};
|
||||||
duckstation = {
|
duckstation = {
|
||||||
romFolder = "psx";
|
romFolder = "psx";
|
||||||
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ".pbp" ".PBP" ];
|
fileTypes = [ ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ".pbp" ".PBP" ];
|
||||||
package = pkgs.duckstation;
|
package = pkgs.duckstation;
|
||||||
|
binaryName = "duckstation";
|
||||||
};
|
};
|
||||||
melonDS = {
|
melonDS = {
|
||||||
romFolder = "nds";
|
romFolder = "nds";
|
||||||
fileTypes = [ ".nds" ".NDS" ];
|
fileTypes = [ ".nds" ".NDS" ];
|
||||||
package = pkgs.melonDS;
|
package = pkgs.melonDS;
|
||||||
|
binaryName = "melonDS";
|
||||||
};
|
};
|
||||||
cemu = {
|
cemu = {
|
||||||
romFolder = "wiiu";
|
romFolder = "wiiu";
|
||||||
fileTypes = [ ".wud" ".WUD" ".wux" ".WUX" ".rpx" ".RPX" ];
|
fileTypes = [ ".wud" ".WUD" ".wux" ".WUX" ".rpx" ".RPX" ];
|
||||||
package = pkgs.cemu;
|
package = pkgs.cemu;
|
||||||
|
binaryName = "cemu";
|
||||||
};
|
};
|
||||||
ppsspp = {
|
ppsspp = {
|
||||||
romFolder = "psp";
|
romFolder = "psp";
|
||||||
fileTypes = [ ".iso" ".ISO" ".cso" ".CSO" ".pbp" ".PBP" ];
|
fileTypes = [ ".iso" ".ISO" ".cso" ".CSO" ".pbp" ".PBP" ];
|
||||||
package = pkgs.ppsspp;
|
package = pkgs.ppsspp;
|
||||||
|
binaryName = "ppsspp";
|
||||||
};
|
};
|
||||||
mame = {
|
mame = {
|
||||||
romFolder = "arcade";
|
romFolder = "arcade";
|
||||||
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ];
|
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ];
|
||||||
package = pkgs.mame;
|
package = pkgs.mame;
|
||||||
|
binaryName = "mame";
|
||||||
};
|
};
|
||||||
dosbox = {
|
dosbox = {
|
||||||
romFolder = "dos";
|
romFolder = "dos";
|
||||||
fileTypes = [ ".exe" ".EXE" ".bat" ".BAT" ".com" ".COM" ];
|
fileTypes = [ ".exe" ".EXE" ".bat" ".BAT" ".com" ".COM" ];
|
||||||
package = pkgs.dosbox;
|
package = pkgs.dosbox;
|
||||||
|
binaryName = "dosbox";
|
||||||
};
|
};
|
||||||
snes9x = {
|
snes9x = {
|
||||||
romFolder = "snes";
|
romFolder = "snes";
|
||||||
fileTypes = [ ".smc" ".SMC" ".sfc" ".SFC" ".fig" ".FIG" ];
|
fileTypes = [ ".smc" ".SMC" ".sfc" ".SFC" ".fig" ".FIG" ];
|
||||||
package = pkgs.snes9x-gtk;
|
package = pkgs.snes9x-gtk;
|
||||||
|
binaryName = "snes9x";
|
||||||
};
|
};
|
||||||
mgba = {
|
mgba = {
|
||||||
romFolder = "gba";
|
romFolder = "gba";
|
||||||
fileTypes = [ ".gba" ".GBA" ];
|
fileTypes = [ ".gba" ".GBA" ];
|
||||||
package = pkgs.mgba;
|
package = pkgs.mgba;
|
||||||
|
binaryName = "mgba";
|
||||||
};
|
};
|
||||||
mupen64plus = {
|
mupen64plus = {
|
||||||
romFolder = "n64";
|
romFolder = "n64";
|
||||||
fileTypes = [ ".n64" ".N64" ".v64" ".V64" ".z64" ".Z64" ];
|
fileTypes = [ ".n64" ".N64" ".v64" ".V64" ".z64" ".Z64" ];
|
||||||
package = pkgs.mupen64plus;
|
package = pkgs.mupen64plus;
|
||||||
|
binaryName = "mupen64plus";
|
||||||
};
|
};
|
||||||
retroarch = {
|
retroarch = {
|
||||||
romFolder = "retroarch";
|
romFolder = "retroarch";
|
||||||
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
fileTypes = [ ".zip" ".ZIP" ".7z" ".7Z" ".iso" ".ISO" ".bin" ".BIN" ".chd" ".CHD" ];
|
||||||
package = pkgs.retroarch;
|
package = pkgs.retroarch;
|
||||||
|
binaryName = "retroarch";
|
||||||
};
|
};
|
||||||
flycast = {
|
flycast = {
|
||||||
romFolder = "dreamcast";
|
romFolder = "dreamcast";
|
||||||
fileTypes = [ ".gdi" ".GDI" ".cdi" ".CDI" ".chd" ".CHD" ];
|
fileTypes = [ ".gdi" ".GDI" ".cdi" ".CDI" ".chd" ".CHD" ];
|
||||||
package = pkgs.flycast;
|
package = pkgs.flycast;
|
||||||
|
binaryName = "flycast";
|
||||||
};
|
};
|
||||||
citra = {
|
citra = {
|
||||||
romFolder = "3ds";
|
romFolder = "3ds";
|
||||||
fileTypes = [ ".3ds" ".3DS" ".cia" ".CIA" ".cxi" ".CXI" ];
|
fileTypes = [ ".3ds" ".3DS" ".cia" ".CIA" ".cxi" ".CXI" ];
|
||||||
package = pkgs.citra-nightly;
|
package = pkgs.citra-nightly;
|
||||||
|
binaryName = "citra";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Create parser configuration
|
# Create parser configuration
|
||||||
mkParserConfig = name: emu:
|
mkParserConfig = name: emu:
|
||||||
let
|
let
|
||||||
# Use the provided package or fall back to the default
|
# Get the default config if it exists
|
||||||
package = if emu ? package then emu.package else commonEmulatorConfigs.${name}.package;
|
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
|
# Get the binary name dynamically
|
||||||
binaryName = findMainBinary package emu.binaryName;
|
binaryName = findMainBinary package (finalConfig.binaryName or "");
|
||||||
|
|
||||||
orderedConfig = [
|
orderedConfig = [
|
||||||
# Basic parser configuration
|
# Basic parser configuration
|
||||||
|
|||||||
Reference in New Issue
Block a user