at master 1.4 kB view raw
1{ lib, ... }: 2 3{ 4 name = "kmonad"; 5 6 meta = { 7 maintainers = with lib.maintainers; [ linj ]; 8 }; 9 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 }; 35 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 }; 42 43 testScript = '' 44 service_name = "kmonad-defaultKbd" 45 machine.wait_for_unit(f"{service_name}.service") 46 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 ''; 52}