at 23.11-beta 159 lines 3.4 kB view raw
1{ lib 2, stdenv 3, fetchurl 4, makeDesktopItem 5, wrapGAppsHook 6, atk 7, at-spi2-atk 8, at-spi2-core 9, alsa-lib 10, cairo 11, cups 12, dbus 13, expat 14, gdk-pixbuf 15, glib 16, gtk3 17, freetype 18, fontconfig 19, nss 20, nspr 21, pango 22, udev 23, libuuid 24, libX11 25, libxcb 26, libXi 27, libXcursor 28, libXdamage 29, libXrandr 30, libXcomposite 31, libXext 32, libXfixes 33, libXrender 34, libXtst 35, libXScrnSaver 36, libxkbcommon 37, libdrm 38, mesa 39# It's unknown which version of openssl that postman expects but it seems that 40# OpenSSL 3+ seems to work fine (cf. 41# https://github.com/NixOS/nixpkgs/issues/254325). If postman breaks apparently 42# around OpenSSL stuff then try changing this dependency version. 43, openssl 44, xorg 45, pname 46, version 47, meta 48, copyDesktopItems 49, makeWrapper 50}: 51 52let 53 dist = { 54 aarch64-linux = { 55 arch = "arm64"; 56 sha256 = "sha256-shiUW7o6H0aaGCgHm3oVqjLZNsB4KIn7EIxWRVCAWi0="; 57 }; 58 59 x86_64-linux = { 60 arch = "64"; 61 sha256 = "sha256-R6mejxuxSZv37nyjnt/oGvgqCw1pULCHCWnlw+pq8iY="; 62 }; 63 }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); 64 65in 66stdenv.mkDerivation rec { 67 inherit pname version meta; 68 69 src = fetchurl { 70 url = "https://dl.pstmn.io/download/version/${version}/linux${dist.arch}"; 71 inherit (dist) sha256; 72 name = "${pname}-${version}.tar.gz"; 73 }; 74 75 dontConfigure = true; 76 77 desktopItems = [ 78 (makeDesktopItem { 79 name = "postman"; 80 exec = "postman"; 81 icon = "postman"; 82 comment = "API Development Environment"; 83 desktopName = "Postman"; 84 genericName = "Postman"; 85 categories = [ "Development" ]; 86 }) 87 ]; 88 89 buildInputs = [ 90 stdenv.cc.cc.lib 91 atk 92 at-spi2-atk 93 at-spi2-core 94 alsa-lib 95 cairo 96 cups 97 dbus 98 expat 99 gdk-pixbuf 100 glib 101 gtk3 102 freetype 103 fontconfig 104 mesa 105 nss 106 nspr 107 pango 108 udev 109 libdrm 110 libuuid 111 libX11 112 libxcb 113 libXi 114 libXcursor 115 libXdamage 116 libXrandr 117 libXcomposite 118 libXext 119 libXfixes 120 libXrender 121 libXtst 122 libXScrnSaver 123 libxkbcommon 124 xorg.libxshmfence 125 ]; 126 127 nativeBuildInputs = [ wrapGAppsHook copyDesktopItems ]; 128 129 installPhase = '' 130 runHook preInstall 131 mkdir -p $out/share/postman 132 cp -R app/* $out/share/postman 133 rm $out/share/postman/Postman 134 135 mkdir -p $out/bin 136 ln -s $out/share/postman/postman $out/bin/postman 137 138 source "${makeWrapper}/nix-support/setup-hook" 139 wrapProgram $out/bin/${pname} \ 140 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}" 141 142 mkdir -p $out/share/icons/hicolor/128x128/apps 143 ln -s $out/share/postman/resources/app/assets/icon.png $out/share/icons/postman.png 144 ln -s $out/share/postman/resources/app/assets/icon.png $out/share/icons/hicolor/128x128/apps/postman.png 145 runHook postInstall 146 ''; 147 148 postFixup = '' 149 pushd $out/share/postman 150 patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" postman 151 patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" chrome_crashpad_handler 152 for file in $(find . -type f \( -name \*.node -o -name postman -o -name \*.so\* \) ); do 153 ORIGIN=$(patchelf --print-rpath $file); \ 154 patchelf --set-rpath "${lib.makeLibraryPath buildInputs}:$ORIGIN" $file 155 done 156 popd 157 wrapProgram $out/bin/postman --set PATH ${lib.makeBinPath [ openssl ]} 158 ''; 159}