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, xorg
40, pname
41, version
42, meta
43, copyDesktopItems
44}:
45
46stdenv.mkDerivation rec {
47 inherit pname version meta;
48
49 src = fetchurl {
50 url = "https://dl.pstmn.io/download/version/${version}/linux64";
51 sha256 = "sha256-ZCfPE+bvPEQjEvUO/FQ1iNR9TG6GtI4vmj6yJ7B62iw=";
52 name = "${pname}.tar.gz";
53 };
54
55 dontConfigure = true;
56
57 desktopItems = [
58 (makeDesktopItem {
59 name = "postman";
60 exec = "postman";
61 icon = "postman";
62 comment = "API Development Environment";
63 desktopName = "Postman";
64 genericName = "Postman";
65 categories = [ "Development" ];
66 })
67 ];
68
69 buildInputs = [
70 stdenv.cc.cc.lib
71 atk
72 at-spi2-atk
73 at-spi2-core
74 alsa-lib
75 cairo
76 cups
77 dbus
78 expat
79 gdk-pixbuf
80 glib
81 gtk3
82 freetype
83 fontconfig
84 mesa
85 nss
86 nspr
87 pango
88 udev
89 libdrm
90 libuuid
91 libX11
92 libxcb
93 libXi
94 libXcursor
95 libXdamage
96 libXrandr
97 libXcomposite
98 libXext
99 libXfixes
100 libXrender
101 libXtst
102 libXScrnSaver
103 libxkbcommon
104 xorg.libxshmfence
105 ];
106
107 nativeBuildInputs = [ wrapGAppsHook copyDesktopItems ];
108
109 installPhase = ''
110 runHook preInstall
111 mkdir -p $out/share/postman
112 cp -R app/* $out/share/postman
113 rm $out/share/postman/Postman
114
115 mkdir -p $out/bin
116 ln -s $out/share/postman/postman $out/bin/postman
117
118 mkdir -p $out/share/icons/hicolor/128x128/apps
119 ln -s $out/share/postman/resources/app/assets/icon.png $out/share/icons/postman.png
120 ln -s $out/share/postman/resources/app/assets/icon.png $out/share/icons/hicolor/128x128/apps/postman.png
121 runHook postInstall
122 '';
123
124 postFixup = ''
125 pushd $out/share/postman
126 patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" postman
127 for file in $(find . -type f \( -name \*.node -o -name postman -o -name \*.so\* \) ); do
128 ORIGIN=$(patchelf --print-rpath $file); \
129 patchelf --set-rpath "${lib.makeLibraryPath buildInputs}:$ORIGIN" $file
130 done
131 popd
132 '';
133}