at master 2.5 kB view raw
1{ 2 name = "xfce-wayland"; 3 4 nodes.machine = 5 { pkgs, ... }: 6 7 { 8 imports = [ 9 ./common/user-account.nix 10 ]; 11 12 services.xserver.enable = true; 13 services.xserver.displayManager.lightdm.enable = true; 14 services.displayManager = { 15 defaultSession = "xfce-wayland"; 16 autoLogin = { 17 enable = true; 18 user = "alice"; 19 }; 20 }; 21 22 services.xserver.desktopManager.xfce.enable = true; 23 services.xserver.desktopManager.xfce.enableWaylandSession = true; 24 environment.systemPackages = [ pkgs.wlrctl ]; 25 }; 26 27 enableOCR = true; 28 29 testScript = 30 { nodes, ... }: 31 let 32 user = nodes.machine.users.users.alice; 33 rtdir = "XDG_RUNTIME_DIR=/run/user/${toString user.uid}"; 34 in 35 '' 36 machine.wait_for_unit("display-manager.service") 37 38 with subtest("Wait for Wayland server"): 39 machine.wait_for_file("/run/user/${toString user.uid}/wayland-0") 40 41 with subtest("Check that logging in has given the user ownership of devices"): 42 machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") 43 44 with subtest("Check if Xfce components actually start"): 45 for p in ["labwc", "xfdesktop", "xfce4-notifyd", "xfconfd", "xfce4-panel"]: 46 machine.wait_until_succeeds(f"pgrep {p}") 47 48 with subtest("Open Xfce terminal"): 49 machine.succeed("su - ${user.name} -c '${rtdir} xfce4-terminal >&2 &'") 50 machine.wait_until_succeeds("su - ${user.name} -c '${rtdir} wlrctl toplevel list | grep xfce4-terminal'") 51 52 with subtest("Open Thunar"): 53 machine.succeed("su - ${user.name} -c '${rtdir} thunar >&2 &'") 54 machine.wait_until_succeeds("su - ${user.name} -c '${rtdir} wlrctl toplevel list | grep Thunar'") 55 machine.wait_for_text('(Pictures|Public|Templates|Videos)') 56 57 with subtest("Check if various environment variables are set"): 58 cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf xfce4-panel)/environ" 59 machine.succeed(f"{cmd} | grep 'XDG_SESSION_TYPE' | grep 'wayland'") 60 machine.succeed(f"{cmd} | grep 'XFCE4_SESSION_COMPOSITOR' | grep 'labwc'") 61 machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'XFCE'") 62 63 with subtest("Check if any coredumps are found"): 64 machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") 65 machine.sleep(10) 66 machine.screenshot("screen") 67 ''; 68}