From 056358b26dc0c91ab8d49ec8c87df76b30f42d75 Mon Sep 17 00:00:00 2001 From: Alexis Hildebrandt Date: Sun, 27 Apr 2025 10:59:56 +0200 Subject: [PATCH] keymapp: add darwin platform --- pkgs/by-name/ke/keymapp/package.nix | 132 +++++++++++++++++----------- 1 file changed, 81 insertions(+), 51 deletions(-) diff --git a/pkgs/by-name/ke/keymapp/package.nix b/pkgs/by-name/ke/keymapp/package.nix index ab67776b821d..b2470135e5a9 100644 --- a/pkgs/by-name/ke/keymapp/package.nix +++ b/pkgs/by-name/ke/keymapp/package.nix @@ -9,66 +9,96 @@ 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"; - - src = fetchurl { - url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${version}.tar.gz"; - hash = "sha256-LWO4aeNmGgZ+T41pb6HwC3tnwaiGviDIq63QMsrlkEc="; - }; - - 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; [ jankaifer shawn8901 ]; - platforms = platforms.linux; + platforms = lib.platforms.linux ++ lib.platforms.darwin; license = lib.licenses.unfree; }; -} + + linux = stdenv.mkDerivation (finalAttrs: { + inherit pname version meta; + + src = fetchurl { + url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${finalAttrs.version}.tar.gz"; + hash = "sha256-LWO4aeNmGgZ+T41pb6HwC3tnwaiGviDIq63QMsrlkEc="; + }; + + 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"; + }; + }); + + darwin = stdenv.mkDerivation (finalAttrs: { + inherit pname version meta; + + src = fetchurl { + # Upstream does not provide archives of previous versions, + # therefore a capture using the wayback machine is used + url = "https://web.archive.org/web/20250427080926/https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-latest.dmg"; + hash = "sha256-sn8IkSV8AEqm8z/TiS1399hITBC9lnSSjQn/k0xWl6I="; + }; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + mv Keymapp.app $out/Applications + + runHook postInstall + ''; + }); +in +if stdenv.hostPlatform.isDarwin then darwin else linux