From c130229c2cdc046131a39e6da7b7dae118206f16 Mon Sep 17 00:00:00 2001 From: Nick Hu Date: Wed, 30 Oct 2024 17:18:44 +0000 Subject: [PATCH] zotero: init darwin (#351227) --- pkgs/applications/office/zotero/darwin.nix | 33 +++++ pkgs/applications/office/zotero/default.nix | 130 ++++---------------- pkgs/applications/office/zotero/linux.nix | 118 ++++++++++++++++++ 3 files changed, 173 insertions(+), 108 deletions(-) create mode 100644 pkgs/applications/office/zotero/darwin.nix create mode 100644 pkgs/applications/office/zotero/linux.nix diff --git a/pkgs/applications/office/zotero/darwin.nix b/pkgs/applications/office/zotero/darwin.nix new file mode 100644 index 0000000000000..ad60ee9d409ef --- /dev/null +++ b/pkgs/applications/office/zotero/darwin.nix @@ -0,0 +1,33 @@ +{ + pname, + version, + meta, + stdenv, + fetchurl, + undmg, +}: + +stdenv.mkDerivation rec { + inherit pname version meta; + + src = fetchurl { + url = "https://download.zotero.org/client/release/${version}/Zotero-${version}.dmg"; + hash = "sha256-z1HAkHz4JGRfQJna2cINZTmYPzyj9ofp7mJHN/mNyOo="; + }; + sourceRoot = "."; + + nativeBuildInputs = [ undmg ]; + + dontConfigure = true; + dontBuild = true; + dontFixup = true; # breaks notarization + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + cp -r Zotero.app $out/Applications + + runHook postInstall + ''; +} diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index 01d6fe74c502e..f6117050c97fd 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -1,116 +1,30 @@ -{ lib -, stdenv -, fetchurl -, wrapGAppsHook3 -, makeDesktopItem -, alsa-lib -, atk -, cairo -, dbus-glib -, gdk-pixbuf -, glib -, gtk3 -, libGL -, libva -, xorg -, mesa -, pango -, pciutils +{ + lib, + stdenv, + callPackage, }: -stdenv.mkDerivation rec { +let pname = "zotero"; version = "7.0.8"; - - src = fetchurl { - url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2"; - hash = "sha256-utiqS4/PvlkQesqTOyEvj8uwW1sDxlqjnhv6GFfY5uk="; - }; - - 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}/{}" \; - ''; - - meta = with lib; { + meta = { 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" ]; - maintainers = with maintainers; [ atila justanotherariel ]; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + license = lib.licenses.agpl3Only; + platforms = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + maintainers = with lib.maintainers; [ + atila + justanotherariel + ]; }; -} +in +if stdenv.hostPlatform.isDarwin then + callPackage ./darwin.nix { inherit pname version meta; } +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 0000000000000..1b7d58f86883e --- /dev/null +++ b/pkgs/applications/office/zotero/linux.nix @@ -0,0 +1,118 @@ +{ + pname, + version, + meta, + lib, + stdenv, + fetchurl, + wrapGAppsHook3, + makeDesktopItem, + alsa-lib, + atk, + cairo, + dbus-glib, + gdk-pixbuf, + glib, + gtk3, + libGL, + libva, + xorg, + mesa, + pango, + pciutils, +}: + +stdenv.mkDerivation rec { + inherit pname version meta; + + src = fetchurl { + url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2"; + hash = "sha256-utiqS4/PvlkQesqTOyEvj8uwW1sDxlqjnhv6GFfY5uk="; + }; + + 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}/{}" \; + ''; +}