1import ./make-test-python.nix (
2 { pkgs, lib, ... }:
3
4 {
5 name = "lxqt";
6
7 meta.maintainers = lib.teams.lxqt.members ++ [ lib.maintainers.bobby285271 ];
8
9 nodes.machine =
10 { ... }:
11
12 {
13 imports = [ ./common/user-account.nix ];
14
15 services.xserver.enable = true;
16 services.xserver.desktopManager.lxqt.enable = true;
17
18 services.displayManager = {
19 sddm.enable = true;
20 defaultSession = "lxqt";
21 autoLogin = {
22 enable = true;
23 user = "alice";
24 };
25 };
26 };
27
28 enableOCR = true;
29
30 testScript =
31 { nodes, ... }:
32 let
33 user = nodes.machine.users.users.alice;
34 in
35 ''
36 machine.wait_for_unit("display-manager.service")
37
38 with subtest("Wait for login"):
39 machine.wait_for_x()
40 machine.wait_for_file("/tmp/xauth_*")
41 machine.succeed("xauth merge /tmp/xauth_*")
42 machine.succeed("su - ${user.name} -c 'xauth merge /tmp/xauth_*'")
43
44 with subtest("Check that logging in has given the user ownership of devices"):
45 machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
46
47 with subtest("Check if LXQt components actually start"):
48 for i in ["openbox", "lxqt-session", "pcmanfm-qt", "lxqt-panel", "lxqt-runner"]:
49 machine.wait_until_succeeds(f"pgrep {i}")
50 machine.wait_for_window("pcmanfm-desktop0")
51 machine.wait_for_window("lxqt-panel")
52 machine.wait_for_text("(Computer|Network|Trash)")
53
54 with subtest("Open QTerminal"):
55 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 qterminal >&2 &'")
56 machine.wait_until_succeeds("pgrep qterminal")
57 machine.wait_for_window("${user.name}@machine: ~")
58
59 with subtest("Open PCManFM-Qt"):
60 machine.succeed("mkdir -p /tmp/test/test")
61 machine.succeed("su - ${user.name} -c 'DISPLAY=:0 QT_SCALE_FACTOR=2 pcmanfm-qt /tmp/test >&2 &'")
62 machine.wait_for_window("test")
63 machine.wait_for_text("(test|Bookmarks|Reload)")
64
65 with subtest("Check if various environment variables are set"):
66 cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf /run/current-system/sw/bin/lxqt-panel)/environ"
67 machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP=LXQt'")
68 machine.succeed(f"{cmd} | grep 'QT_PLATFORM_PLUGIN=lxqt'")
69 # From login shell.
70 machine.succeed(f"{cmd} | grep '__NIXOS_SET_ENVIRONMENT_DONE=1'")
71 # See the nixos/lxqt module.
72 machine.succeed(f"{cmd} | grep 'XDG_CONFIG_DIRS' | grep '${nodes.machine.system.path}'")
73
74 with subtest("Check if any coredumps are found"):
75 machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'")
76 machine.sleep(10)
77 machine.screenshot("screen")
78 '';
79 }
80)