at master 894 B view raw
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}