1{ pkgs, lib, ... }: 2 3{ 4 name = "lxqt"; 5 6 meta.maintainers = lib.teams.lxqt.members ++ [ lib.maintainers.bobby285271 ]; 7 8 nodes.machine = 9 { ... }: 10 11 { 12 imports = [ ./common/user-account.nix ]; 13 14 services.xserver.enable = true; 15 services.xserver.desktopManager.lxqt.enable = true; 16 17 services.displayManager = { 18 sddm.enable = true; 19 defaultSession = "lxqt"; 20 autoLogin = { 21 enable = true; 22 user = "alice"; 23 }; 24 }; 25 }; 26 27 enableOCR = true; 28 29 testScript = 30 { nodes, ... }: 31 let 32 user = nodes.machine.users.users.alice; 33 in 34 '' 35 machine.wait_for_unit("display-manager.service") 36 37 with subtest("Wait for login"): 38 machine.wait_for_x() 39 machine.wait_for_file("/tmp/xauth_*") 40 machine.wait_until_succeeds("test -s /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}