diff --git a/flake.nix b/flake.nix index 96da302..8049576 100644 --- a/flake.nix +++ b/flake.nix @@ -99,6 +99,7 @@ ./modules/nix/ld.nix ./modules/gpg.nix ./modules/flatpak.nix + ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; }) ./modules/wooting.nix ./modules/support/ntfs.nix ./systems/pc/configuration.nix diff --git a/modules/wooting.nix b/modules/wooting.nix index eec4356..7dcfda9 100644 --- a/modules/wooting.nix +++ b/modules/wooting.nix @@ -1,10 +1,30 @@ -{ pkgs, ...}: -{ - services.udev.extraRules = '' - SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", TAG+="uaccess" - SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", TAG+="uaccess" - ''; - +{ pkgs, lib, ...}: +let + wooting-udev = pkgs.stdenv.mkDerivation rec { + pname = "wooting-udev-rules"; + version = "unstable-2023-03-31"; + + # Source: https://help.wooting.io/en/article/wootility-configuring-device-access-for-wootility-under-linux-udev-rules-r6lb2o/ + src = [ ./wooting.rules ]; + + dontUnpack = true; + + installPhase = '' + install -Dpm644 $src $out/lib/udev/rules.d/70-wooting.rules + ''; + + meta = with lib; { + homepage = "https://help.wooting.io/en/article/wootility-configuring-device-access-for-wootility-under-linux-udev-rules-r6lb2o/"; + description = "udev rules that give NixOS permission to communicate with Wooting keyboards"; + platforms = platforms.linux; + license = "unknown"; + maintainers = with maintainers; [ davidtwco ]; + }; +}; +in +{ + services.udev.packages = [ wooting-udev ]; + environment.systemPackages = with pkgs; [ wootility ]; diff --git a/modules/wooting.rules b/modules/wooting.rules new file mode 100644 index 0000000..690484f --- /dev/null +++ b/modules/wooting.rules @@ -0,0 +1,12 @@ +# Wooting Two HE (ARM) +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1230", MODE:="0666", GROUP="input" +SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1230", MODE:="0666", GROUP="input" +# Wooting Two HE Alt-gamepad mode +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1231", MODE:="0666", GROUP="input" +SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1231", MODE:="0666", GROUP="input" +# Wooting Two HE 2nd Alt-gamepad mode +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1232", MODE:="0666", GROUP="input" +SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="1232", MODE:="0666", GROUP="input" + +# Wooting Two HE (ARM) update mode +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", ATTRS{idProduct}=="123f", MODE:="0666", GROUP="input"