nixos/zsa: init at unstable-2020-12-16

add support for ZSA keyboards

Co-authored-by: Julien Debon <julien.debon@pm.me>
This commit is contained in:
davidak 2020-06-21 00:41:09 +02:00
parent 0e01df647b
commit 0d0ff21f2f
4 changed files with 62 additions and 0 deletions

View file

@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkOption mkIf types;
cfg = config.hardware.keyboard.zsa;
in
{
# TODO: make group configurable like in https://github.com/NixOS/nixpkgs/blob/0b2b4b8c4e729535a61db56468809c5c2d3d175c/pkgs/tools/security/nitrokey-app/udev-rules.nix ?
options.hardware.keyboard.zsa = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enables udev rules for keyboards from ZSA like the ErgoDox EZ, Planck EZ and Moonlander Mark I.
You need it when you want to flash a new configuration on the keyboard
or use their live training in the browser.
Access to the keyboard is granted to users in the "plugdev" group.
You may want to install the wally-cli package.
'';
};
};
config = mkIf cfg.enable {
services.udev.packages = [ pkgs.zsa-udev-rules ];
users.groups.plugdev = {};
};
}

View file

@ -47,6 +47,7 @@
./hardware/digitalbitbox.nix
./hardware/device-tree.nix
./hardware/sensor/iio.nix
./hardware/keyboard/zsa.nix
./hardware/ksm.nix
./hardware/ledger.nix
./hardware/logitech.nix

View file

@ -0,0 +1,33 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation {
pname = "zsa-udev-rules";
version = "unstable-2020-12-16";
# TODO: use version and source from nixpkgs/pkgs/development/tools/wally-cli/default.nix after next release
src = fetchFromGitHub {
owner = "zsa";
repo = "wally";
rev = "e5dde3c700beab39fb941c6941e55535bf9b2af6";
sha256 = "0pkybi32r1hrmpa1mc8qlzhv7xy5n5rr5ah25lbr0cipp1bda417";
};
# it only installs files
dontConfigure = true;
dontBuild = true;
dontFixup = true;
installPhase = ''
mkdir -p $out/lib/udev/rules.d
cp dist/linux64/50-oryx.rules $out/lib/udev/rules.d/
cp dist/linux64/50-wally.rules $out/lib/udev/rules.d/
'';
meta = with stdenv.lib; {
description = "udev rules for ZSA devices";
license = licenses.mit;
maintainers = with maintainers; [ davidak ];
platforms = platforms.linux;
homepage = "https://github.com/zsa/wally/wiki/Linux-install#2-create-a-udev-rule-file";
};
}

View file

@ -16462,6 +16462,7 @@ in
waffle = callPackage ../development/libraries/waffle { };
wally-cli = callPackage ../development/tools/wally-cli { };
zsa-udev-rules = callPackage ../os-specific/linux/zsa-udev-rules { };
wavpack = callPackage ../development/libraries/wavpack { };