From 01dcd3bb62b55f2da96abc9f494e0209c370a403 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Fri, 2 Feb 2024 09:53:02 -0700 Subject: [PATCH] Upgrade to Zotero 7. --- hive/framework/default.nix | 2 +- services/notebook.nix | 4 +- users/jrpotter/zotero.nix | 150 +++++++++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 users/jrpotter/zotero.nix diff --git a/hive/framework/default.nix b/hive/framework/default.nix index 7f9d769..95d7391 100644 --- a/hive/framework/default.nix +++ b/hive/framework/default.nix @@ -76,7 +76,7 @@ virt-manager vlc wezterm - zotero + (callPackage ../../users/jrpotter/zotero.nix {}) ]; }; diff --git a/services/notebook.nix b/services/notebook.nix index 94be95b..40b166b 100644 --- a/services/notebook.nix +++ b/services/notebook.nix @@ -1,14 +1,14 @@ { system, ... }: let notebook = builtins.getFlake - "github:jrpotter/notebook/7ae8589742870b5b414445e5852cd9c8751480ca"; + "github:jrpotter/notebook/9bec3123b1816a0d1c04f42c40ed46baef5f3ce0"; in { services.nginx.virtualHosts."notebook.jrpotter.com" = { forceSSL = true; enableACME = true; locations."/" = { - root = notebook.packages.${system}.app; + root = "${notebook.packages.${system}.app}/share"; tryFiles = "$uri $uri.html $uri/ =404"; }; }; diff --git a/users/jrpotter/zotero.nix b/users/jrpotter/zotero.nix new file mode 100644 index 0000000..61ac99a --- /dev/null +++ b/users/jrpotter/zotero.nix @@ -0,0 +1,150 @@ +{ lib +, stdenv +, fetchurl +, wrapGAppsHook +, autoPatchelfHook +, 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 +, gnome +, libGLU +, libGL +, nspr +, nss +, pango +, gsettings-desktop-schemas +, alsa-lib +, libXtst +}: +stdenv.mkDerivation rec { + pname = "zotero"; + version = "7.0.0-beta"; + + src = fetchurl { + # To find the exact URL you should specify, run the following: + # ```bash + # $ URL=https://www.zotero.org/download/client/dl?platform=linux-x86_64&channel=beta + # $ curl -w "%{url_effective}\n" -I -L -s -S $URL -o /dev/null + # ``` + url = "https://download.zotero.org/client/beta/${version}.57%2B3acef799f/Zotero-${version}.57%2B3acef799f_linux-x86_64.tar.bz2"; + hash = "sha256-4Y/pheWtCW2Yu7s2RgQ1GqD+am/AuL4TGm9MifIqLKQ="; + }; + + nativeBuildInputs = [ + wrapGAppsHook + autoPatchelfHook + ]; + + buildInputs = [ + gsettings-desktop-schemas + glib + gtk3 + gnome.adwaita-icon-theme + dconf + libXtst + alsa-lib + 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 + ]; + + dontConfigure = true; + dontBuild = true; + dontStrip = true; + + 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 + + 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/ + + runHook postInstall + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PATH : ${lib.makeBinPath [ coreutils ]} + ) + ''; + + meta = with lib; { + homepage = "https://www.zotero.org"; + description = "Collect, organize, cite, and share your research sources"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.agpl3Only; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ atila ]; + }; +}