diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 2365b765..6f58da47 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -4,6 +4,7 @@ ./programs/distrobox.nix ./programs/gnome-session ./programs/pop-launcher.nix + ./programs/retroarch.nix ./programs/sessiond ./programs/wezterm.nix ./services/archivebox.nix diff --git a/modules/nixos/programs/retroarch.nix b/modules/nixos/programs/retroarch.nix new file mode 100644 index 00000000..b87c85cb --- /dev/null +++ b/modules/nixos/programs/retroarch.nix @@ -0,0 +1,51 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.programs.retroarch; + + finalPkg = cfg.package.override { + inherit (cfg) cores settings; + }; +in +{ + options.programs.retroarch = { + enable = lib.mkEnableOption "configuring Retroarch"; + + package = lib.mkPackageOption pkgs "retroarch" { }; + + cores = lib.mkOption { + type = with lib.types; listOf package; + default = [ ]; + description = '' + List of Retroarch cores to be included with the package. + ''; + example = lib.literalExpression '' + with pkgs.libretro; [ + ppsspp + desmume + pcsx2 + ] + ''; + }; + + settings = lib.mkOption { + type = with lib.types; attrsOf anything; + default = { }; + description = '' + Additional settings to be configured with the Retroarch nixpkgs + wrapper. + ''; + example = lib.literalExpression '' + { + assets_directory = "''${pkgs.retroarch-assets}/share/retroarch-assets"; + joypad_autoconfig_dir = "''${pkgs.retroarch-joypad-autoconfig}/share/libretro/autoconfig"; + libretro_info_path = "''${pkgs.libretro-core-info}/share/retroarch/cores"; + } + ''; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ finalPkg ]; + }; +}