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
parent
2f677eae73
commit
1d82f62aef
@ -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 ]; |
||||||
|
}; |
||||||
|
} |
@ -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 ]; |
||||||
|
}; |
||||||
|
} |
Loading…
Reference in new issue