UHK-agent: Support for Ultimate Hacking Keyboard udev-rules and configuration application (#132420)

* maintainers: add ngiger

* uhk-agent: init at 1.5.17

* Apply suggestions from code review

* Update pkgs/os-specific/linux/uhk-agent/default.nix

* Apply suggestions from code review

* Update pkgs/os-specific/linux/uhk-agent/default.nix

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
main
Niklaus Giger 2 years ago committed by GitHub
parent 2f677eae73
commit 1d82f62aef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      maintainers/maintainer-list.nix
  2. 21
      nixos/modules/hardware/keyboard/uhk.nix
  3. 1
      nixos/modules/module-list.nix
  4. 39
      pkgs/os-specific/linux/uhk-agent/default.nix
  5. 20
      pkgs/os-specific/linux/uhk-udev-rules/default.nix
  6. 4
      pkgs/top-level/all-packages.nix

@ -9026,6 +9026,12 @@
email = "nfjinjing@gmail.com";
name = "Jinjing Wang";
};
ngiger = {
email = "niklaus.giger@member.fsf.org";
github = "ngiger";
githubId = 265800;
name = "Niklaus Giger";
};
nh2 = {
email = "mail@nh2.me";
matrix = "@nh2:matrix.org";

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.hardware.keyboard.uhk;
in
{
options.hardware.keyboard.uhk = {
enable = mkEnableOption ''
non-root access to the firmware of UHK keyboards.
You need it when you want to flash a new firmware on the keyboard.
Access to the keyboard is granted to users in the "input" group.
You may want to install the uhk-agent package.
'';
};
config = mkIf cfg.enable {
services.udev.packages = [ pkgs.uhk-udev-rules ];
};
}

@ -57,6 +57,7 @@
./hardware/sensor/hddtemp.nix
./hardware/sensor/iio.nix
./hardware/keyboard/teck.nix
./hardware/keyboard/uhk.nix
./hardware/keyboard/zsa.nix
./hardware/ksm.nix
./hardware/ledger.nix

@ -0,0 +1,39 @@
{ appimageTools, lib, fetchurl, polkit, udev }:
let
pname = "uhk-agent";
version = "1.5.17";
src = fetchurl {
url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage";
name = "${pname}-${version}.AppImage";
sha256 = "sha256-auOoTTRmkXVDDvcmRFzQIStNlbai8bTBLb/KUjk6EAc=";
};
appimageContents = appimageTools.extract {
name = "${pname}-${version}";
inherit src;
};
in appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: with pkgs; [ polkit udev ];
extraInstallCommands = ''
mv $out/bin/${pname}-${version} $out/bin/${pname}
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
install -m 644 -D ${appimageContents}/resources/rules/50-uhk60.rules $out/rules/50-uhk60.rules
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
cp -r ${appimageContents}/usr/share/icons $out/share
'';
# wrapType2 does not passthru pname+version
passthru.version = version;
meta = with lib; {
description = "Agent is the configuration application of the Ultimate Hacking Keyboard";
homepage = "https://github.com/UltimateHackingKeyboard/agent";
license = licenses.unfreeRedistributable;
maintainers = with maintainers; [ ngiger ];
platforms = [ "x86_64-linux" ];
};
}

@ -0,0 +1,20 @@
{ lib, stdenv, uhk-agent }:
stdenv.mkDerivation {
pname = "uhk-udev-rules";
inherit (uhk-agent) version;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -D -m 644 ${uhk-agent.out}/rules/50-uhk60.rules $out/lib/udev/rules.d/50-uhk60.rules
runHook postInstall
'';
meta = {
description = "udev rules for UHK keyboards from https://ultimatehackingkeyboard.com";
inherit (uhk-agent.meta) license;
maintainers = [ lib.maintainers.ngiger ];
};
}

@ -11147,6 +11147,10 @@ with pkgs;
ugrep = callPackage ../tools/text/ugrep { };
uhk-agent = callPackage ../os-specific/linux/uhk-agent { };
uhk-udev-rules = callPackage ../os-specific/linux/uhk-udev-rules { };
uif2iso = callPackage ../tools/cd-dvd/uif2iso { };
uivonim = callPackage ../applications/editors/uivonim { };

Loading…
Cancel
Save