diff --git a/pkgs/by-name/ke/keymapp/darwin.nix b/pkgs/by-name/ke/keymapp/darwin.nix new file mode 100644 index 000000000000..bc4e47ba76f9 --- /dev/null +++ b/pkgs/by-name/ke/keymapp/darwin.nix @@ -0,0 +1,34 @@ +{ + stdenv, + undmg, + pname, + version, + src, + meta, + ... +}: +stdenv.mkDerivation { + inherit + pname + version + src + meta + ; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + mv Keymapp.app $out/Applications + + runHook postInstall + ''; +} diff --git a/pkgs/by-name/ke/keymapp/linux.nix b/pkgs/by-name/ke/keymapp/linux.nix new file mode 100644 index 000000000000..07f93bb5075a --- /dev/null +++ b/pkgs/by-name/ke/keymapp/linux.nix @@ -0,0 +1,62 @@ +{ + stdenv, + copyDesktopItems, + autoPatchelfHook, + wrapGAppsHook4, + makeDesktopItem, + libusb1, + webkitgtk_4_1, + libsoup_3, + pname, + version, + src, + meta, + ... +}: +stdenv.mkDerivation { + inherit + pname + version + src + meta + ; + + nativeBuildInputs = [ + copyDesktopItems + autoPatchelfHook + wrapGAppsHook4 + ]; + + buildInputs = [ + libusb1 + webkitgtk_4_1 + libsoup_3 + ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + install -m755 -D keymapp "$out/bin/keymapp" + install -Dm644 icon.png "$out/share/pixmaps/keymapp.png" + + runHook postInstall + ''; + + preFixup = '' + gappsWrapperArgs+=(--set-default '__NV_PRIME_RENDER_OFFLOAD' 1) + ''; + + desktopItem = makeDesktopItem { + name = "keymapp"; + icon = "keymapp"; + desktopName = "Keymapp"; + categories = [ + "Settings" + "HardwareSettings" + ]; + type = "Application"; + exec = "keymapp"; + }; +} diff --git a/pkgs/by-name/ke/keymapp/package.nix b/pkgs/by-name/ke/keymapp/package.nix index ab67776b821d..afbeb5bd3c75 100644 --- a/pkgs/by-name/ke/keymapp/package.nix +++ b/pkgs/by-name/ke/keymapp/package.nix @@ -2,6 +2,7 @@ stdenv, lib, fetchurl, + callPackage, autoPatchelfHook, wrapGAppsHook4, libusb1, @@ -9,66 +10,67 @@ webkitgtk_4_1, makeDesktopItem, copyDesktopItems, + undmg, }: let - desktopItem = makeDesktopItem { - name = "keymapp"; - icon = "keymapp"; - desktopName = "Keymapp"; - categories = [ - "Settings" - "HardwareSettings" - ]; - type = "Application"; - exec = "keymapp"; - }; -in -stdenv.mkDerivation rec { pname = "keymapp"; - version = "1.3.6"; + version = "1.3.7"; + sources = rec { + aarch64-darwin = { + # Upstream does not provide archives of previous versions, + # therefore a capture using the wayback machine is used + url = "https://web.archive.org/web/20250520135916/https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-latest.dmg"; + hash = "sha256-H6xRau7pWuSF5Aa6lblwi/Lg5KxC+HM3rtUMjX+hEE8="; + }; + x86_64-darwin = aarch64-darwin; + aarch64-linux = { + url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${version}.tar.gz"; + hash = "sha256-qHvHCDzWRhuhDg2kuU8kmikQDXElQtVEmPAelHz4aPo="; + }; + x86_64-linux = aarch64-linux; + }; src = fetchurl { - url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${version}.tar.gz"; - hash = "sha256-LWO4aeNmGgZ+T41pb6HwC3tnwaiGviDIq63QMsrlkEc="; + inherit (sources.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}")) url hash; }; - nativeBuildInputs = [ - copyDesktopItems - autoPatchelfHook - wrapGAppsHook4 - ]; - - buildInputs = [ - libusb1 - webkitgtk_4_1 - libsoup_3 - ]; - - sourceRoot = "."; - - installPhase = '' - runHook preInstall - - install -m755 -D keymapp "$out/bin/keymapp" - install -Dm644 icon.png "$out/share/pixmaps/keymapp.png" - - runHook postInstall - ''; - - preFixup = '' - gappsWrapperArgs+=(--set-default '__NV_PRIME_RENDER_OFFLOAD' 1) - ''; - - desktopItems = [ desktopItem ]; - - meta = with lib; { + meta = { homepage = "https://www.zsa.io/flash/"; description = "Application for ZSA keyboards"; maintainers = with lib.maintainers; [ + afh jankaifer shawn8901 ]; - platforms = platforms.linux; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; license = lib.licenses.unfree; }; -} + +in +if stdenv.hostPlatform.isDarwin then + callPackage ./darwin.nix { + inherit + pname + version + src + meta + undmg + ; + } +else + callPackage ./linux.nix { + inherit + pname + version + src + meta + libusb1 + libsoup_3 + webkitgtk_4_1 + autoPatchelfHook + wrapGAppsHook4 + copyDesktopItems + makeDesktopItem + ; + }