nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ pkgs, ... }:
2
3{
4 name = "retroarch";
5 meta = with pkgs.lib; {
6 maintainers = teams.libretro.members ++ [ maintainers.j0hax ];
7 };
8
9 nodes.machine =
10 { ... }:
11
12 {
13 imports = [ ./common/user-account.nix ];
14 services.xserver.enable = true;
15 services.xserver.desktopManager.retroarch = {
16 enable = true;
17 package = pkgs.retroarch-bare;
18 };
19 services.xserver.displayManager = {
20 sddm.enable = true;
21 defaultSession = "RetroArch";
22 autoLogin = {
23 enable = true;
24 user = "alice";
25 };
26 };
27 };
28
29 testScript =
30 { nodes, ... }:
31 let
32 user = nodes.machine.config.users.users.alice;
33 xdo = "${pkgs.xdotool}/bin/xdotool";
34 in
35 ''
36 with subtest("Wait for login"):
37 start_all()
38 machine.wait_for_file("/tmp/xauth_*")
39 machine.succeed("xauth merge /tmp/xauth_*")
40
41 with subtest("Check RetroArch started"):
42 machine.wait_until_succeeds("pgrep retroarch")
43 machine.wait_for_window("^RetroArch")
44
45 with subtest("Check configuration created"):
46 machine.wait_for_file("${user.home}/.config/retroarch/retroarch.cfg")
47
48 with subtest("Wait to get a screenshot"):
49 machine.execute(
50 "${xdo} key Alt+F1 sleep 10"
51 )
52 machine.screenshot("screen")
53 '';
54}