13ab2b4b10
zotero currently fails in pure environments with: .zotero-wrapped: line 12: readlink: command not found .zotero-wrapped: line 12: dirname: command not found .zotero-wrapped: line 13: /zotero-bin: No such file or directory Because the script assumes that readlink and dirname are available. Fix by adding coreutils to PATH using the wrapper.
147 lines
3.2 KiB
Nix
147 lines
3.2 KiB
Nix
{ stdenv, fetchurl, wrapGAppsHook, makeDesktopItem
|
|
, atk
|
|
, cairo
|
|
, coreutils
|
|
, curl
|
|
, cups
|
|
, dbus-glib
|
|
, dbus
|
|
, dconf
|
|
, fontconfig
|
|
, freetype
|
|
, gdk-pixbuf
|
|
, glib
|
|
, glibc
|
|
, gtk3
|
|
, libX11
|
|
, libXScrnSaver
|
|
, libxcb
|
|
, libXcomposite
|
|
, libXcursor
|
|
, libXdamage
|
|
, libXext
|
|
, libXfixes
|
|
, libXi
|
|
, libXinerama
|
|
, libXrender
|
|
, libXt
|
|
, libnotify
|
|
, gnome3
|
|
, libGLU, libGL
|
|
, nspr
|
|
, nss
|
|
, pango
|
|
, gsettings-desktop-schemas
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "zotero";
|
|
version = "5.0.89";
|
|
|
|
src = fetchurl {
|
|
url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
|
|
sha256 = "18p4qnnfx9f2frk7f2nk1d7jr4cjzg9z7lfzrk7vq11qgbjdpqbl";
|
|
};
|
|
|
|
nativeBuildInputs = [ wrapGAppsHook ];
|
|
buildInputs= [ gsettings-desktop-schemas glib gtk3 gnome3.adwaita-icon-theme dconf ];
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
dontStrip = true;
|
|
dontPatchELF = true;
|
|
|
|
libPath = stdenv.lib.makeLibraryPath
|
|
[ stdenv.cc.cc
|
|
atk
|
|
cairo
|
|
curl
|
|
cups
|
|
dbus-glib
|
|
dbus
|
|
fontconfig
|
|
freetype
|
|
gdk-pixbuf
|
|
glib
|
|
glibc
|
|
gtk3
|
|
libX11
|
|
libXScrnSaver
|
|
libXcomposite
|
|
libXcursor
|
|
libxcb
|
|
libXdamage
|
|
libXext
|
|
libXfixes
|
|
libXi
|
|
libXinerama
|
|
libXrender
|
|
libXt
|
|
libnotify
|
|
libGLU libGL
|
|
nspr
|
|
nss
|
|
pango
|
|
] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
|
|
stdenv.cc.cc
|
|
];
|
|
|
|
patchPhase = ''
|
|
sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' defaults/preferences/prefs.js
|
|
'';
|
|
|
|
desktopItem = makeDesktopItem {
|
|
name = "zotero-${version}";
|
|
exec = "zotero -url %U";
|
|
icon = "zotero";
|
|
type = "Application";
|
|
comment = meta.description;
|
|
desktopName = "Zotero";
|
|
genericName = "Reference Management";
|
|
categories = "Office;Database;";
|
|
startupNotify = "true";
|
|
mimeType = "text/plain";
|
|
};
|
|
|
|
installPhase =
|
|
''
|
|
mkdir -p "$prefix/usr/lib/zotero-bin-${version}"
|
|
cp -r * "$prefix/usr/lib/zotero-bin-${version}"
|
|
mkdir -p "$out/bin"
|
|
ln -s "$prefix/usr/lib/zotero-bin-${version}/zotero" "$out/bin/"
|
|
|
|
# install desktop file and icons.
|
|
mkdir -p $out/share/applications
|
|
cp ${desktopItem}/share/applications/* $out/share/applications/
|
|
for size in 16 32 48 256; do
|
|
install -Dm444 chrome/icons/default/default$size.png \
|
|
$out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
|
|
done
|
|
|
|
for executable in \
|
|
zotero-bin plugin-container \
|
|
updater minidump-analyzer
|
|
do
|
|
if [ -e "$out/usr/lib/zotero-bin-${version}/$executable" ]; then
|
|
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
"$out/usr/lib/zotero-bin-${version}/$executable"
|
|
fi
|
|
done
|
|
find . -executable -type f -exec \
|
|
patchelf --set-rpath "$libPath" \
|
|
"$out/usr/lib/zotero-bin-${version}/{}" \;
|
|
'';
|
|
|
|
preFixup = ''
|
|
gappsWrapperArgs+=(
|
|
--prefix PATH : ${stdenv.lib.makeBinPath [ coreutils ]}
|
|
)
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = "https://www.zotero.org";
|
|
description = "Collect, organize, cite, and share your research sources";
|
|
license = licenses.agpl3;
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|