1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8with lib;
9
10let
11 cfg = config.services.xserver.desktopManager.retroarch;
12
13in
14{
15 options.services.xserver.desktopManager.retroarch = {
16 enable = mkEnableOption "RetroArch";
17
18 package = mkPackageOption pkgs "retroarch" {
19 example = "retroarch-full";
20 };
21
22 extraArgs = mkOption {
23 type = types.listOf types.str;
24 default = [ ];
25 example = [
26 "--verbose"
27 "--host"
28 ];
29 description = "Extra arguments to pass to RetroArch.";
30 };
31 };
32
33 config = mkIf cfg.enable {
34 services.xserver.desktopManager.session = [
35 {
36 name = "RetroArch";
37 start = ''
38 ${cfg.package}/bin/retroarch -f ${escapeShellArgs cfg.extraArgs} &
39 waitPID=$!
40 '';
41 }
42 ];
43
44 environment.systemPackages = [ cfg.package ];
45 };
46
47 meta.maintainers = with maintainers; [ j0hax ];
48}