From f2b3d33421acc6a1a8642cb46c2616724c5e4f2e Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 10 Jun 2021 03:14:49 +0200 Subject: [PATCH] pkgs: package kaleidoscope udev rules --- pkgs/default.nix | 1 + .../60-kaleidoscope.rules | 16 ++++++++++++ pkgs/kaleidoscope-udev-rules/default.nix | 25 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 pkgs/kaleidoscope-udev-rules/60-kaleidoscope.rules create mode 100644 pkgs/kaleidoscope-udev-rules/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 4b0dc52..e7e4804 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,5 @@ { pkgs }: { sddm-sugar-candy = pkgs.callPackage ./sddm-sugar-candy {}; + kaleidoscope-udev-rules = pkgs.callPackage ./kaleidoscope-udev-rules {}; } diff --git a/pkgs/kaleidoscope-udev-rules/60-kaleidoscope.rules b/pkgs/kaleidoscope-udev-rules/60-kaleidoscope.rules new file mode 100644 index 0000000..6462d5a --- /dev/null +++ b/pkgs/kaleidoscope-udev-rules/60-kaleidoscope.rules @@ -0,0 +1,16 @@ +## This file sets up a few things for selected Kaleidoscope-powered keyboards: +## - We first symlink the device to a more friendly name, based on the product +## name. +## - We then ask ModemManager to ignore the serial ports on the device, and not +## consider them a candidate. +## - We also tell systemd to grant access to the device (via ACLs) to the user +## at-seat. +## +## For more information about the access part, see the following resources: +## - https://github.com/systemd/systemd/issues/4288 +## - https://www.freedesktop.org/software/systemd/man/sd-login.html + +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2300", SYMLINK+="model01", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0", TAG+="uaccess", TAG+="seat" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2301", SYMLINK+="model01", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0", TAG+="uaccess", TAG+="seat" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", SYMLINK+="Atreus2", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0", TAG+="uaccess", TAG+="seat" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2303", SYMLINK+="Atreus2", ENV{ID_MM_DEVICE_IGNORE}:="1", ENV{ID_MM_CANDIDATE}:="0", TAG+="uaccess", TAG+="seat" diff --git a/pkgs/kaleidoscope-udev-rules/default.nix b/pkgs/kaleidoscope-udev-rules/default.nix new file mode 100644 index 0000000..211b96f --- /dev/null +++ b/pkgs/kaleidoscope-udev-rules/default.nix @@ -0,0 +1,25 @@ +{ stdenv, lib }: + +let + pname = "kaleidoscope-udev-rules"; + version = "0.8.4"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + dontBuild = true; + + src = ./.; + + # FIXME: fetch from GitHub properly + installPhase = '' + mkdir -p $out/lib/udev/rules.d + cp ./60-kaleidoscope.rules $out/lib/udev/rules.d/ + ''; + + meta = with lib; { + description = "udev rules for kaleidoscope firmware keyboards"; + homepage = "https://github.com/keyboardio/Chrysalis"; + license = licenses.gpl3; + platforms = [ "x86_64-linux" ]; + }; +}