Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / office / zotero / default.nix
blob32e42a8b944ff4ae97c7056b86100994410a0eb5
1 { lib
2 , stdenv
3 , fetchurl
4 , wrapGAppsHook
5 , makeDesktopItem
6 , atk
7 , cairo
8 , coreutils
9 , curl
10 , cups
11 , dbus-glib
12 , dbus
13 , dconf
14 , fontconfig
15 , freetype
16 , gdk-pixbuf
17 , glib
18 , glibc
19 , gtk3
20 , libX11
21 , libXScrnSaver
22 , libxcb
23 , libXcomposite
24 , libXcursor
25 , libXdamage
26 , libXext
27 , libXfixes
28 , libXi
29 , libXinerama
30 , libXrender
31 , libXt
32 , libnotify
33 , gnome
34 , libGLU
35 , libGL
36 , nspr
37 , nss
38 , pango
39 , gsettings-desktop-schemas
42 stdenv.mkDerivation rec {
43   pname = "zotero";
44   version = "6.0.30";
46   src = fetchurl {
47     url =
48       "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
49     hash = "sha256-4XQZ1xw9Qtk3SzHMsEUk+HuIYtHDAOMgpwzbAd5QQpU=";
50   };
52   nativeBuildInputs = [ wrapGAppsHook ];
53   buildInputs =
54     [ gsettings-desktop-schemas glib gtk3 gnome.adwaita-icon-theme dconf ];
56   dontConfigure = true;
57   dontBuild = true;
58   dontStrip = true;
59   dontPatchELF = true;
61   libPath = lib.makeLibraryPath [
62     stdenv.cc.cc
63     atk
64     cairo
65     curl
66     cups
67     dbus-glib
68     dbus
69     fontconfig
70     freetype
71     gdk-pixbuf
72     glib
73     glibc
74     gtk3
75     libX11
76     libXScrnSaver
77     libXcomposite
78     libXcursor
79     libxcb
80     libXdamage
81     libXext
82     libXfixes
83     libXi
84     libXinerama
85     libXrender
86     libXt
87     libnotify
88     libGLU
89     libGL
90     nspr
91     nss
92     pango
93   ] + ":" + lib.makeSearchPathOutput "lib" "lib64" [ stdenv.cc.cc ];
95   postPatch = ''
96     sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' defaults/preferences/prefs.js
97   '';
99   desktopItem = makeDesktopItem {
100     name = "zotero";
101     exec = "zotero -url %U";
102     icon = "zotero";
103     comment = meta.description;
104     desktopName = "Zotero";
105     genericName = "Reference Management";
106     categories = [ "Office" "Database" ];
107     startupNotify = true;
108     mimeTypes = [ "x-scheme-handler/zotero" "text/plain" ];
109   };
111   installPhase = ''
112     runHook preInstall
114     mkdir -p "$prefix/usr/lib/zotero-bin-${version}"
115     cp -r * "$prefix/usr/lib/zotero-bin-${version}"
116     mkdir -p "$out/bin"
117     ln -s "$prefix/usr/lib/zotero-bin-${version}/zotero" "$out/bin/"
119     # install desktop file and icons.
120     mkdir -p $out/share/applications
121     cp ${desktopItem}/share/applications/* $out/share/applications/
122     for size in 16 32 48 256; do
123       install -Dm444 chrome/icons/default/default$size.png \
124         $out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
125     done
127     for executable in \
128       zotero-bin plugin-container \
129       updater minidump-analyzer
130     do
131       if [ -e "$out/usr/lib/zotero-bin-${version}/$executable" ]; then
132         patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
133           "$out/usr/lib/zotero-bin-${version}/$executable"
134       fi
135     done
136     find . -executable -type f -exec \
137       patchelf --set-rpath "$libPath" \
138         "$out/usr/lib/zotero-bin-${version}/{}" \;
140     runHook postInstall
141   '';
143   preFixup = ''
144     gappsWrapperArgs+=(
145       --prefix PATH : ${lib.makeBinPath [ coreutils ]}
146     )
147   '';
149   meta = with lib; {
150     homepage = "https://www.zotero.org";
151     description = "Collect, organize, cite, and share your research sources";
152     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
153     license = licenses.agpl3Only;
154     platforms = platforms.linux;
155     maintainers = with maintainers; [ i077 ];
156   };