parent
f80278219f
commit
d282f448ff
@ -0,0 +1,40 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let cfg = config.services.xserver.desktopManager.retroarch; |
||||
|
||||
in { |
||||
options.services.xserver.desktopManager.retroarch = { |
||||
enable = mkEnableOption "RetroArch"; |
||||
|
||||
package = mkOption { |
||||
type = types.package; |
||||
default = pkgs.retroarch; |
||||
defaultText = literalExpression "pkgs.retroarch"; |
||||
example = literalExpression "pkgs.retroarch-full"; |
||||
description = "RetroArch package to use."; |
||||
}; |
||||
|
||||
extraArgs = mkOption { |
||||
type = types.listOf types.str; |
||||
default = [ ]; |
||||
example = [ "--verbose" "--host" ]; |
||||
description = "Extra arguments to pass to RetroArch."; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
services.xserver.desktopManager.session = [{ |
||||
name = "RetroArch"; |
||||
start = '' |
||||
${cfg.package}/bin/retroarch -f ${escapeShellArgs cfg.extraArgs} & |
||||
waitPID=$! |
||||
''; |
||||
}]; |
||||
|
||||
environment.systemPackages = [ cfg.package ]; |
||||
}; |
||||
|
||||
meta.maintainers = with maintainers; [ j0hax ]; |
||||
} |
@ -0,0 +1,49 @@ |
||||
import ./make-test-python.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "retroarch"; |
||||
meta = with pkgs.lib.maintainers; { maintainers = [ j0hax ]; }; |
||||
|
||||
machine = { ... }: |
||||
|
||||
{ |
||||
imports = [ ./common/user-account.nix ]; |
||||
services.xserver.enable = true; |
||||
services.xserver.desktopManager.retroarch = { |
||||
enable = true; |
||||
package = pkgs.retroarchFull; |
||||
}; |
||||
services.xserver.displayManager = { |
||||
sddm.enable = true; |
||||
defaultSession = "RetroArch"; |
||||
autoLogin = { |
||||
enable = true; |
||||
user = "alice"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
testScript = { nodes, ... }: |
||||
let |
||||
user = nodes.machine.config.users.users.alice; |
||||
xdo = "${pkgs.xdotool}/bin/xdotool"; |
||||
in '' |
||||
with subtest("Wait for login"): |
||||
start_all() |
||||
machine.wait_for_file("${user.home}/.Xauthority") |
||||
machine.succeed("xauth merge ${user.home}/.Xauthority") |
||||
|
||||
with subtest("Check RetroArch started"): |
||||
machine.wait_until_succeeds("pgrep retroarch") |
||||
machine.wait_for_window("^RetroArch ") |
||||
|
||||
with subtest("Check configuration created"): |
||||
machine.wait_for_file("${user.home}/.config/retroarch/retroarch.cfg") |
||||
|
||||
with subtest("Wait to get a screenshot"): |
||||
machine.execute( |
||||
"${xdo} key Alt+F1 sleep 10" |
||||
) |
||||
machine.screenshot("screen") |
||||
''; |
||||
}) |
Loading…
Reference in new issue