nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 pname,
3 version,
4 meta,
5 lib,
6 stdenv,
7 fetchurl,
8 wrapGAppsHook3,
9 makeDesktopItem,
10 atk,
11 cairo,
12 dbus-glib,
13 gdk-pixbuf,
14 glib,
15 gtk3,
16 libGL,
17 libva,
18 xorg,
19 libgbm,
20 pango,
21 pciutils,
22 alsaSupport ? true,
23 alsa-lib,
24 jackSupport ? true,
25 libjack2,
26 pulseSupport ? true,
27 libpulseaudio,
28 sndioSupport ? true,
29 sndio,
30}:
31
32stdenv.mkDerivation rec {
33 inherit pname version meta;
34
35 src = fetchurl {
36 url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
37 hash = "sha256-L2Mvi11X4YBU4ezHDJosl7qHClmzUwmghvXG8TChA8c=";
38 };
39
40 dontPatchELF = true;
41 nativeBuildInputs = [ wrapGAppsHook3 ];
42
43 libPath =
44 lib.makeLibraryPath (
45 [
46 atk
47 cairo
48 dbus-glib
49 gdk-pixbuf
50 glib
51 gtk3
52 libGL
53 libva
54 xorg.libX11
55 xorg.libXcomposite
56 xorg.libXcursor
57 xorg.libXdamage
58 xorg.libXext
59 xorg.libXfixes
60 xorg.libXi
61 xorg.libXrandr
62 xorg.libXtst
63 xorg.libxcb
64 libgbm
65 pango
66 pciutils
67 ]
68 ++ lib.optional alsaSupport alsa-lib
69 ++ lib.optional jackSupport libjack2
70 ++ lib.optional pulseSupport libpulseaudio
71 ++ lib.optional sndioSupport sndio
72 )
73 + ":"
74 + lib.makeSearchPathOutput "lib" "lib" [ stdenv.cc.cc ];
75
76 desktopItem = makeDesktopItem {
77 name = "zotero";
78 exec = "zotero -url %U";
79 icon = "zotero";
80 comment = meta.description;
81 desktopName = "Zotero";
82 genericName = "Reference Management";
83 categories = [
84 "Office"
85 "Database"
86 ];
87 startupNotify = true;
88 mimeTypes = [
89 "x-scheme-handler/zotero"
90 "text/plain"
91 ];
92 };
93
94 installPhase = ''
95 runHook preInstall
96
97 # Copy package contents to the output directory
98 mkdir -p "$prefix/usr/lib/zotero-bin-${version}"
99 cp -r * "$prefix/usr/lib/zotero-bin-${version}"
100 mkdir -p "$out/bin"
101 ln -s "$prefix/usr/lib/zotero-bin-${version}/zotero" "$out/bin/"
102
103 # Install desktop file and icons
104 mkdir -p $out/share/applications
105 cp ${desktopItem}/share/applications/* $out/share/applications/
106 for size in 32 64 128; do
107 install -Dm444 icons/icon''${size}.png \
108 $out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
109 done
110 install -Dm444 icons/symbolic.svg \
111 $out/share/icons/hicolor/symbolic/apps/zotero-symbolic.svg
112
113 runHook postInstall
114 '';
115
116 postFixup = ''
117 for executable in \
118 zotero-bin plugin-container updater vaapitest \
119 minidump-analyzer glxtest
120 do
121 if [ -e "$out/usr/lib/zotero-bin-${version}/$executable" ]; then
122 patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
123 "$out/usr/lib/zotero-bin-${version}/$executable"
124 fi
125 done
126 find . -executable -type f -exec \
127 patchelf --set-rpath "$libPath" \
128 "$out/usr/lib/zotero-bin-${version}/{}" \;
129 '';
130}