63 lines
1.8 KiB
Nix
63 lines
1.8 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
util,
|
|
...
|
|
}:
|
|
# RetroArch with the selected PlayStation and Sega Saturn cores.
|
|
let
|
|
cfg = config.modules.desktop.emulation.retroarch;
|
|
user = config.user.name;
|
|
in
|
|
{
|
|
options.modules.desktop.emulation.retroarch = {
|
|
enable = lib.mkEnableOption "RetroArch with PlayStation and Sega Saturn cores";
|
|
|
|
browserDirectory = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "";
|
|
description = "Directory where RetroArch starts its content browser.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home-manager.users.${user} = {
|
|
home.packages = [
|
|
(pkgs.wrapRetroArch {
|
|
cores = with pkgs.libretro; [
|
|
beetle-psx-hw
|
|
beetle-saturn
|
|
];
|
|
settings = {
|
|
savefiles_in_content_dir = "false";
|
|
savestates_in_content_dir = "false";
|
|
system_directory = "/home/${user}/.config/retroarch/system";
|
|
video_fullscreen = "true";
|
|
sort_savefiles_enable = "true";
|
|
sort_savestates_enable = "true";
|
|
cloud_sync_enable = "true";
|
|
cloud_sync_driver = "webdav";
|
|
webdav_url = "https://games.alexion.dev/api/sync/retroarch/";
|
|
cloud_sync_sync_saves = "true";
|
|
cloud_sync_sync_configs = "true";
|
|
cloud_sync_sync_thumbs = "false";
|
|
cloud_sync_sync_system = "false";
|
|
cloud_sync_sync_mode = "0";
|
|
cloud_sync_destructive = "false";
|
|
}
|
|
// lib.optionalAttrs (cfg.browserDirectory != "") {
|
|
rgui_browser_directory = cfg.browserDirectory;
|
|
};
|
|
})
|
|
];
|
|
|
|
};
|
|
|
|
registry.window-icon.${config.networking.hostName}.retroarch = {
|
|
class = "com.libretro.RetroArch";
|
|
icon = util.glyph "f11b";
|
|
};
|
|
};
|
|
}
|