nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix

keymapp: split linux and darwin into separate files

+142 -75
+34
pkgs/by-name/ke/keymapp/darwin.nix
··· 1 + { 2 + stdenv, 3 + undmg, 4 + pname, 5 + version, 6 + src, 7 + meta, 8 + ... 9 + }: 10 + stdenv.mkDerivation { 11 + inherit 12 + pname 13 + version 14 + src 15 + meta 16 + ; 17 + 18 + dontPatch = true; 19 + dontConfigure = true; 20 + dontBuild = true; 21 + 22 + nativeBuildInputs = [ undmg ]; 23 + 24 + sourceRoot = "."; 25 + 26 + installPhase = '' 27 + runHook preInstall 28 + 29 + mkdir -p $out/Applications 30 + mv Keymapp.app $out/Applications 31 + 32 + runHook postInstall 33 + ''; 34 + }
+62
pkgs/by-name/ke/keymapp/linux.nix
··· 1 + { 2 + stdenv, 3 + copyDesktopItems, 4 + autoPatchelfHook, 5 + wrapGAppsHook4, 6 + makeDesktopItem, 7 + libusb1, 8 + webkitgtk_4_1, 9 + libsoup_3, 10 + pname, 11 + version, 12 + src, 13 + meta, 14 + ... 15 + }: 16 + stdenv.mkDerivation { 17 + inherit 18 + pname 19 + version 20 + src 21 + meta 22 + ; 23 + 24 + nativeBuildInputs = [ 25 + copyDesktopItems 26 + autoPatchelfHook 27 + wrapGAppsHook4 28 + ]; 29 + 30 + buildInputs = [ 31 + libusb1 32 + webkitgtk_4_1 33 + libsoup_3 34 + ]; 35 + 36 + sourceRoot = "."; 37 + 38 + installPhase = '' 39 + runHook preInstall 40 + 41 + install -m755 -D keymapp "$out/bin/keymapp" 42 + install -Dm644 icon.png "$out/share/pixmaps/keymapp.png" 43 + 44 + runHook postInstall 45 + ''; 46 + 47 + preFixup = '' 48 + gappsWrapperArgs+=(--set-default '__NV_PRIME_RENDER_OFFLOAD' 1) 49 + ''; 50 + 51 + desktopItem = makeDesktopItem { 52 + name = "keymapp"; 53 + icon = "keymapp"; 54 + desktopName = "Keymapp"; 55 + categories = [ 56 + "Settings" 57 + "HardwareSettings" 58 + ]; 59 + type = "Application"; 60 + exec = "keymapp"; 61 + }; 62 + }
+46 -75
pkgs/by-name/ke/keymapp/package.nix
··· 2 2 stdenv, 3 3 lib, 4 4 fetchurl, 5 + callPackage, 5 6 autoPatchelfHook, 6 7 wrapGAppsHook4, 7 8 libusb1, ··· 15 14 let 16 15 pname = "keymapp"; 17 16 version = "1.3.6"; 17 + 18 + sources = rec { 19 + aarch64-darwin = { 20 + # Upstream does not provide archives of previous versions, 21 + # therefore a capture using the wayback machine is used 22 + url = "https://web.archive.org/web/20250427080926/https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-latest.dmg"; 23 + hash = "sha256-sn8IkSV8AEqm8z/TiS1399hITBC9lnSSjQn/k0xWl6I="; 24 + }; 25 + x86_64-darwin = aarch64-darwin; 26 + aarch64-linux = { 27 + url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${version}.tar.gz"; 28 + hash = "sha256-LWO4aeNmGgZ+T41pb6HwC3tnwaiGviDIq63QMsrlkEc="; 29 + }; 30 + x86_64-linux = aarch64-linux; 31 + }; 32 + src = fetchurl { 33 + inherit (sources.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}")) url hash; 34 + }; 35 + 18 36 meta = { 19 37 homepage = "https://www.zsa.io/flash/"; 20 38 description = "Application for ZSA keyboards"; ··· 42 22 shawn8901 43 23 ]; 44 24 platforms = lib.platforms.linux ++ lib.platforms.darwin; 25 + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; 45 26 license = lib.licenses.unfree; 46 27 }; 47 28 48 - linux = stdenv.mkDerivation (finalAttrs: { 49 - inherit pname version meta; 50 - 51 - src = fetchurl { 52 - url = "https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-${finalAttrs.version}.tar.gz"; 53 - hash = "sha256-LWO4aeNmGgZ+T41pb6HwC3tnwaiGviDIq63QMsrlkEc="; 54 - }; 55 - 56 - nativeBuildInputs = [ 57 - copyDesktopItems 29 + in 30 + if stdenv.hostPlatform.isDarwin then 31 + callPackage ./darwin.nix { 32 + inherit 33 + pname 34 + version 35 + src 36 + meta 37 + undmg 38 + ; 39 + } 40 + else 41 + callPackage ./linux.nix { 42 + inherit 43 + pname 44 + version 45 + src 46 + meta 47 + libusb1 48 + libsoup_3 49 + webkitgtk_4_1 58 50 autoPatchelfHook 59 51 wrapGAppsHook4 60 - ]; 61 - 62 - buildInputs = [ 63 - libusb1 64 - webkitgtk_4_1 65 - libsoup_3 66 - ]; 67 - 68 - sourceRoot = "."; 69 - 70 - installPhase = '' 71 - runHook preInstall 72 - 73 - install -m755 -D keymapp "$out/bin/keymapp" 74 - install -Dm644 icon.png "$out/share/pixmaps/keymapp.png" 75 - 76 - runHook postInstall 77 - ''; 78 - 79 - preFixup = '' 80 - gappsWrapperArgs+=(--set-default '__NV_PRIME_RENDER_OFFLOAD' 1) 81 - ''; 82 - 83 - desktopItem = makeDesktopItem { 84 - name = "keymapp"; 85 - icon = "keymapp"; 86 - desktopName = "Keymapp"; 87 - categories = [ 88 - "Settings" 89 - "HardwareSettings" 90 - ]; 91 - type = "Application"; 92 - exec = "keymapp"; 93 - }; 94 - }); 95 - 96 - darwin = stdenv.mkDerivation (finalAttrs: { 97 - inherit pname version meta; 98 - 99 - src = fetchurl { 100 - # Upstream does not provide archives of previous versions, 101 - # therefore a capture using the wayback machine is used 102 - url = "https://web.archive.org/web/20250427080926/https://oryx.nyc3.cdn.digitaloceanspaces.com/keymapp/keymapp-latest.dmg"; 103 - hash = "sha256-sn8IkSV8AEqm8z/TiS1399hITBC9lnSSjQn/k0xWl6I="; 104 - }; 105 - 106 - dontPatch = true; 107 - dontConfigure = true; 108 - dontBuild = true; 109 - 110 - nativeBuildInputs = [ undmg ]; 111 - 112 - sourceRoot = "."; 113 - 114 - installPhase = '' 115 - runHook preInstall 116 - 117 - mkdir -p $out/Applications 118 - mv Keymapp.app $out/Applications 119 - 120 - runHook postInstall 121 - ''; 122 - }); 123 - in 124 - if stdenv.hostPlatform.isDarwin then darwin else linux 52 + copyDesktopItems 53 + makeDesktopItem 54 + ; 55 + }