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>
This commit is contained in:
@@ -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 { };
|
||||
|
||||
Reference in New Issue
Block a user