diff options
author | Karl Hallsby <karl@hallsby.com> | 2024-05-03 10:28:01 -0500 |
---|---|---|
committer | Jonathan Brielmaier <jonathan.brielmaier@web.de> | 2024-07-23 18:12:15 +0200 |
commit | 3fb11bd107e06b186e2631f04e4c97933458a36c (patch) | |
tree | 3d6b0958a3780912a0e6a74c557081f27a702c6a /nongnu/packages/productivity.scm | |
parent | 05df998a0005393c31253e2168020b095d5a723f (diff) |
nongnu: Add zotero.
* nongnu/packages/productivity.scm (zotero): New variable.
Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
Diffstat (limited to 'nongnu/packages/productivity.scm')
-rw-r--r-- | nongnu/packages/productivity.scm | 120 |
1 files changed, 119 insertions, 1 deletions
diff --git a/nongnu/packages/productivity.scm b/nongnu/packages/productivity.scm index 1241d38..4bdc8fa 100644 --- a/nongnu/packages/productivity.scm +++ b/nongnu/packages/productivity.scm @@ -1,11 +1,13 @@ ;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2024 Karl Hallsby <karl@hallsby.com (define-module (nongnu packages productivity) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gl) + #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages linux) @@ -19,7 +21,8 @@ #:use-module (guix gexp) #:use-module (guix packages) #:use-module (nonguix build-system chromium-binary) - #:use-module ((nonguix licenses) #:prefix license:)) + #:use-module ((nonguix licenses) #:prefix license:) + #:use-module ((guix licenses) #:prefix free-license:)) (define-public anytype (package @@ -106,3 +109,118 @@ synchronization.") (home-page "https://anytype.io") (license (license:nonfree "https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md")))) + +(define-public zotero + (package + (name "zotero") + (version "6.0.35") + (source + (origin + ;; Can switch to git-fetch from Github too! + (method url-fetch) + (uri + (string-append "https://download.zotero.org/client/release/" + version "/Zotero-" version "_linux-x86_64.tar.bz2")) + (sha256 + (base32 + "17f9an43jwnqpcslbvnhg7hrzkvs2whzwg4ysdgy2gl4m6cln18w")) + (snippet + #~(begin + (use-modules (guix build utils)) + ;; Disable Zotero's automatic update feature. + (substitute* "defaults/preferences/prefs.js" + (("pref\\(\"app.update.enabled\", true\\)") + "pref(\"app.update.enabled\", false)") + (("pref\\(\"app.update.auto\", true\\)") + "pref(\"app.update.auto\", false)")))))) + (build-system chromium-binary-build-system) + (arguments + (list + ;; ~70 MiB + #:substitutable? #f + #:validate-runpath? #t + #:wrapper-plan + #~'("zotero-bin") + #:phases + #~(modify-phases %standard-phases + (add-before 'install-wrapper 'install-entrypoint + (lambda _ + (let* ((bin (string-append #$output "/bin"))) + (mkdir-p bin) + (symlink (string-append #$output "/zotero") + (string-append bin "/zotero"))))) + (add-after 'install 'create-desktop-file + (lambda _ + (make-desktop-entry-file + (string-append #$output "/share/applications/zotero.desktop") + #:name "Zotero" + #:type "Application" + #:generic-name "Reference Management" + #:exec (string-append #$output "/bin/zotero -url %U") + #:icon "zotero" + #:keywords '("zotero") + #:categories '("Office" "Database") + #:terminal #f + #:startup-notify #t + #:startup-w-m-class "zotero" + ;; MIME-type list taken from Zotero's shipped .desktop file + #:mime-type '("x-scheme-handler/zotero" "text/plain" + "application/x-research-info-systems" + "text/x-research-info-systems" + "text/ris" + "application/x-endnote-refer" + "application/x-inst-for-Scientific-info" + "application/mods+xml" + "application/rdf+xml" + "application/x-bibtex" + "text/x-bibtex" + "application/marc" + "application/vnd.citationstyles.style+xml") + #:comment + '(("en" "Collect, organize, cite, and share your research sources") + (#f "Collect, organize, cite, and share your research sources"))))) + (add-after 'install 'install-icons + (lambda _ + (let ((icon-sizes (list 16 32 48 256))) + (for-each + (lambda (size) + (mkdir-p (string-append #$output "/share/icons/hicolor/" + size "x" size "/apps")) + (copy-file + (string-append "chrome/icons/default/default" size ".png") + (string-append #$output "/share/icons/hicolor/" + size "x" size "/apps/zotero.png"))) + (map number->string icon-sizes)))))))) + ;; The zotero script that we wrap (which produces .zotero-real), has + ;; this open file limit step done for us. If that script ever goes + ;; away, then we can just uncomment this one. + ;; (add-after 'install-wrapper 'raise-open-file-limit + ;; (lambda _ + ;; (let ((file (string-append #$output "/bin/zotero"))) + ;; (with-output-to-file file + ;; (lambda _ + ;; (display + ;; (string-append + ;; "#!/bin/sh\n" + ;; ;; Raise the open files limit because Mozilla file + ;; ;; functions leave files open for a tiny bit longer than + ;; ;; necessary, so an installation with many translators and + ;; ;; styles can exceed the default 1024 file limit. ulimit + ;; ;; is a shell built-in, so we cannot use Guix's + ;; ;; program-file function. + ;; "ulimit -n 4096\n" + ;; #$output "/bin/zotero-bin" " -app " #$output "/application.ini" " \"$@\"")))) + ;; (chmod file #o755)))) + (inputs (list dbus-glib libxt)) + (synopsis "Collect, organize, cite, and share your research sources") + ;; If we build from source, then we may be able to support more + ;; architectures. But Zotero is a Firefox/Electron app that uses a lot of + ;; JavaScript, which may be problematic when packaging using Guix. + (supported-systems '("x86_64-linux")) + (description "Zotero is a research reference and bibliography tool. +Zotero helps you organize your research any way you want. You can sort items +into collections and tag them with keywords. Zotero instantly creates +references and bibliographies for any text editor, and directly inside Word, +LibreOffice, and Google Docs for over 10,000 citation styles.") + (home-page "https://www.zotero.org") + (license free-license:agpl3))) |