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