clash-verge-rev: useFetchCargoVendor
[NixPkgs.git] / nixos / tests / kmonad.nix
blob0c880a99787efb805101dc1b79fe5c3a76782625
1 { lib, ... }:
4   name = "kmonad";
6   meta = {
7     maintainers = with lib.maintainers; [ linj ];
8   };
10   nodes = {
11     machine = {
12       services.kmonad = {
13         enable = true;
14         extraArgs = [
15           "--log-level=debug"
16         ];
17         keyboards = {
18           defaultKbd = {
19             device = "/dev/input/by-id/vm-default-kbd";
20             defcfg = {
21               enable = true;
22               fallthrough = true;
23             };
24             config = ''
25               (defsrc :name default-src
26                 1)
27               (deflayer default-layer :source default-src
28                 @T2)
29               (defalias
30                 T2 2)
31             '';
32           };
33         };
34       };
36       # make a determinate symlink to the default vm keyboard for kmonad to use
37       services.udev.extraRules = ''
38         ACTION=="add", KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="QEMU Virtio Keyboard", ATTRS{id/product}=="0001", ATTRS{id/vendor}=="0627", SYMLINK+="input/by-id/vm-default-kbd"
39       '';
40     };
41   };
43   testScript = ''
44     service_name = "kmonad-defaultKbd"
45     machine.wait_for_unit(f"{service_name}.service")
47     with subtest("kmonad is running"):
48          machine.succeed(f"systemctl status {service_name}")
49     with subtest("kmonad symlink is created"):
50          machine.wait_for_file(f"/dev/input/by-id/{service_name}", timeout=5)
51   '';