at master 1.4 kB view raw
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.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.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("/run/sddm/xauth_*") 39 machine.wait_until_succeeds("test -s /run/sddm/xauth_*") 40 machine.succeed("xauth merge /run/sddm/xauth_*") 41 42 with subtest("Check RetroArch started"): 43 machine.wait_until_succeeds("pgrep retroarch") 44 machine.wait_for_window("^RetroArch") 45 46 with subtest("Check configuration created"): 47 machine.wait_for_file("${user.home}/.config/retroarch/retroarch.cfg") 48 49 with subtest("Wait to get a screenshot"): 50 machine.execute( 51 "${xdo} key Alt+F1 sleep 10" 52 ) 53 machine.screenshot("screen") 54 ''; 55}