From 510d2360dfe904bea47a8f1a164d509ff08f0f47 Mon Sep 17 00:00:00 2001 From: Zynh Ludwig <zynh0722@gmail.com> Date: Mon, 3 Feb 2025 20:10:02 -0800 Subject: [PATCH] uhk-agent: custom package --- builders.nix | 13 +++++++ pkgs/default.nix | 1 + pkgs/uhk-agent/default.nix | 79 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 pkgs/uhk-agent/default.nix diff --git a/builders.nix b/builders.nix index 52bdc14..23186ff 100644 --- a/builders.nix +++ b/builders.nix @@ -39,6 +39,19 @@ let }; }); }) + + (final: prev: { + uhk-agent = prev.uhk-agent.overrideAttrs (old: rec { + pname = "uhk-agent"; + version = "5.0.2"; + + src = prev.fetchurl { + url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage"; + name = "${pname}-${version}.AppImage"; + sha256 = "sha256-A0ALw5noXeeCGvWEFJMyYeNb9mMHyr3DC3T0yK1MQoM="; + }; + }); + }) ]; }); diff --git a/pkgs/default.nix b/pkgs/default.nix index f34c8fe..5bc1938 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -11,4 +11,5 @@ in zenBrowser = callDefaultPackage ./zenBrowser; rose-pine-grub = callDefaultPackage ./rosePineGrub; dwm-msg = callDefaultPackage ./dwm-msg; + uhk-agent = callDefaultPackage ./uhk-agent; } diff --git a/pkgs/uhk-agent/default.nix b/pkgs/uhk-agent/default.nix new file mode 100644 index 0000000..d708551 --- /dev/null +++ b/pkgs/uhk-agent/default.nix @@ -0,0 +1,79 @@ +{ lib +, stdenv +, stdenvNoCC +, fetchurl +, appimageTools +, electron +, makeWrapper +, asar +, autoPatchelfHook +, libusb1 +}: + +let + pname = "uhk-agent"; + version = "5.0.2"; + + 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-A0ALw5noXeeCGvWEFJMyYeNb9mMHyr3DC3T0yK1MQoM="; + }; + + appimageContents = appimageTools.extract { + inherit pname version src; + }; +in +stdenvNoCC.mkDerivation { + inherit pname version src; + + dontUnpack = true; + + nativeBuildInputs = [ + asar + makeWrapper + autoPatchelfHook + ]; + + buildInputs = [ + (lib.getLib stdenv.cc.cc) + libusb1 + ]; + + autoPatchelfIgnoreMissingDeps = [ + "libc.musl-x86_64.so.1" + ]; + + installPhase = '' + runHook preInstall + + mkdir -p "$out"/{opt,share/applications} + + cp -r --no-preserve=mode "${appimageContents}/resources" "$out/opt/${pname}" + cp -r --no-preserve=mode "${appimageContents}/usr/share/icons" "$out/share/icons" + cp -r --no-preserve=mode "${appimageContents}/${pname}.desktop" "$out/share/applications/${pname}.desktop" + + substituteInPlace "$out/share/applications/${pname}.desktop" \ + --replace "Exec=AppRun" "Exec=${pname}" + + asar extract "$out/opt/${pname}/app.asar" "$out/opt/${pname}/app.asar.unpacked" + rm "$out/opt/${pname}/app.asar" + + makeWrapper "${electron}/bin/electron" "$out/bin/${pname}" \ + --add-flags "$out/opt/${pname}/app.asar.unpacked" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + --set-default ELECTRON_IS_DEV 0 \ + --inherit-argv0 + + runHook postInstall + ''; + + 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 nickcao ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + }; +}