diff --git a/pkgs/applications/office/zotero/darwin.nix b/pkgs/applications/office/zotero/darwin.nix new file mode 100644 index 000000000000000..c3f5199f58dbb19 --- /dev/null +++ b/pkgs/applications/office/zotero/darwin.nix @@ -0,0 +1,29 @@ +{ stdenv +, fetchurl +, undmg +, pname +, version}: + +stdenv.mkDerivation { + inherit pname version; + src = fetchurl + { + url = "https://download.zotero.org/client/release/${version}/Zotero-${version}.dmg"; + sha256 = "sha256-5AhOUCCL1/JUEXuPC9lkjNAHRPjiCqOV9nPb7eU+YdI="; + }; + + dontBuild = true; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + cp -r *.app $out/Applications + + runHook postInstall + ''; +} diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index 1a71c08c1f87b9f..2b491c747b7937e 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -1,116 +1,19 @@ -{ lib -, stdenv -, fetchurl -, wrapGAppsHook3 -, makeDesktopItem -, alsa-lib -, atk -, cairo -, dbus-glib -, gdk-pixbuf -, glib -, gtk3 -, libGL -, libva -, xorg -, mesa -, pango -, pciutils -}: +{ stdenv +, callPackage +, lib}: -stdenv.mkDerivation rec { +let pname = "zotero"; - version = "7.0"; - - src = fetchurl { - url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2"; - hash = "sha256-0CAiK8HY/udup51zB6I2o4jvOHvSJGm+5JehHk8F/Io="; - }; - - dontPatchELF = true; - nativeBuildInputs = [ wrapGAppsHook3 ]; - - libPath = lib.makeLibraryPath [ - alsa-lib - atk - cairo - dbus-glib - gdk-pixbuf - glib - gtk3 - libGL - libva - xorg.libX11 - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrandr - xorg.libXtst - xorg.libxcb - mesa - pango - pciutils - ] + ":" + lib.makeSearchPathOutput "lib" "lib64" [ stdenv.cc.cc ]; - - desktopItem = makeDesktopItem { - name = "zotero"; - exec = "zotero -url %U"; - icon = "zotero"; - comment = meta.description; - desktopName = "Zotero"; - genericName = "Reference Management"; - categories = [ "Office" "Database" ]; - startupNotify = true; - mimeTypes = [ "x-scheme-handler/zotero" "text/plain" ]; - }; - - installPhase = '' - runHook preInstall - - # Copy package contents to the output directory - 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 32 64 128; do - install -Dm444 icons/icon''${size}.png \ - $out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png - done - install -Dm444 icons/symbolic.svg \ - $out/share/icons/hicolor/symbolic/apps/zotero-symbolic.svg - - runHook postInstall - ''; - - postFixup = '' - for executable in \ - zotero-bin plugin-container updater vaapitest \ - minidump-analyzer glxtest - 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}/{}" \; - ''; - + version = "7.0.5"; meta = with lib; { homepage = "https://www.zotero.org"; description = "Collect, organize, cite, and share your research sources"; mainProgram = "zotero"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.agpl3Only; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "aarch64-darwin" ]; maintainers = with maintainers; [ atila justanotherariel ]; }; -} +in + if stdenv.isDarwin then callPackage ./darwin.nix { inherit pname version; } + else callPackage ./linux.nix { inherit pname version meta; } diff --git a/pkgs/applications/office/zotero/linux.nix b/pkgs/applications/office/zotero/linux.nix new file mode 100644 index 000000000000000..ab641477935464f --- /dev/null +++ b/pkgs/applications/office/zotero/linux.nix @@ -0,0 +1,107 @@ +{ lib +, stdenv +, fetchurl +, wrapGAppsHook3 +, makeDesktopItem +, alsa-lib +, atk +, cairo +, dbus-glib +, gdk-pixbuf +, glib +, gtk3 +, libGL +, libva +, xorg +, mesa +, pango +, pciutils +, pname +, version +, meta}: + +stdenv.mkDerivation rec { + inherit pname version; + src = fetchurl { + url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2"; + hash = "sha256-Ljn2IUMXGhlv/RYpRyzxpdETxQOHWdw70KwPjrcmIT0="; + }; + + dontPatchELF = true; + nativeBuildInputs = [ wrapGAppsHook3 ]; + + libPath = lib.makeLibraryPath [ + alsa-lib + atk + cairo + dbus-glib + gdk-pixbuf + glib + gtk3 + libGL + libva + xorg.libX11 + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXtst + xorg.libxcb + mesa + pango + pciutils + ] + ":" + lib.makeSearchPathOutput "lib" "lib64" [ stdenv.cc.cc ]; + + desktopItem = makeDesktopItem { + name = "zotero"; + exec = "zotero -url %U"; + icon = "zotero"; + comment = meta.description; + desktopName = "Zotero"; + genericName = "Reference Management"; + categories = [ "Office" "Database" ]; + startupNotify = true; + mimeTypes = [ "x-scheme-handler/zotero" "text/plain" ]; + }; + + installPhase = '' + runHook preInstall + + # Copy package contents to the output directory + 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 32 64 128; do + install -Dm444 icons/icon''${size}.png \ + $out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png + done + install -Dm444 icons/symbolic.svg \ + $out/share/icons/hicolor/symbolic/apps/zotero-symbolic.svg + + runHook postInstall + ''; + + postFixup = '' + for executable in \ + zotero-bin plugin-container updater vaapitest \ + minidump-analyzer glxtest + 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}/{}" \; + ''; + +}