1{ lib, ... }:
2{
3 name = "dwl_test_vm";
4
5 meta = {
6 maintainers = with lib.maintainers; [ gurjaka ];
7 };
8
9 nodes.machine =
10 {
11 pkgs,
12 lib,
13 ...
14 }:
15 {
16 imports = [
17 ./common/user-account.nix
18 ./common/wayland-cage.nix
19 ];
20
21 environment.systemPackages = [ pkgs.foot ];
22
23 services.displayManager.defaultSession = lib.mkForce "dwl";
24
25 programs.dwl.enable = true;
26 };
27
28 testScript = ''
29 with subtest("ensure dwl starts"):
30 machine.wait_for_file("/run/user/1000/wayland-0")
31
32 with subtest("ensure foot is installed"):
33 machine.succeed("which foot")
34
35 with subtest("ensure we can open a new terminal"):
36 # sleep 3 is required to make sure dwl has started
37 # TODO: find better way to identify dwl session
38 machine.sleep(3)
39 machine.send_key("alt-shift-ret")
40 machine.sleep(3)
41 machine.screenshot("terminal")
42 '';
43}