# Vial keyboards (lily58 pro r2g) expose a raw HID interface that vial.rocks # drives over WebHID; its /dev/hidraw* node is root-only by default. # The rule ships as 60-vial.rules because uaccess is only applied by # 73-seat-late.rules, and services.udev.extraRules lands at 99, too late. { pkgs, ... }: { services.udev.packages = [ (pkgs.writeTextFile { name = "vial-udev-rules"; destination = "/lib/udev/rules.d/60-vial.rules"; # the magic serial matches any vial board; uaccess grants the seat owner text = '' KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", TAG+="uaccess" ''; }) ]; environment.systemPackages = [ pkgs.vial ]; }