From e1a797e37f61e1df0f316e33cd4501fe0e1df2be Mon Sep 17 00:00:00 2001 From: timor Date: Wed, 15 Nov 2017 13:59:33 +0100 Subject: [PATCH 1/2] zotero: 4.0.29 -> 5.0.25 This uses buildFHSUserenv. The source installation probably does not work until node2nix supports nodejs-8.x. --- pkgs/applications/office/zotero/default.nix | 104 +++++++------------- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 36 insertions(+), 72 deletions(-) diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index a4b15b6626e7..4d66d3dd349a 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -1,82 +1,48 @@ -{ stdenv, fetchurl, lib, bash, firefox, perl, unzipNLS, xorg }: +{ stdenv, fetchurl, buildFHSUserEnv, writeTextFile, bash, wrapGAppsHook, gsettings_desktop_schemas, gtk3, gnome3 }: let +version = "5.0.25"; +meta = with stdenv.lib; { + homepage = https://www.zotero.org; + description = "Collect, organize, cite, and share your research sources"; + license = licenses.agpl3; + platforms = platforms.linux; +}; - xpi = fetchurl { - url = "https://download.zotero.org/extension/zotero-${version}.xpi"; - sha256 = "1dyf578yfj3xr9kkhmsvbkvraw2arghmh67ksi5c8qlxczx5i1xy"; - }; - - version = "4.0.29"; - -in -stdenv.mkDerivation { - name = "zotero-${version}"; +zoteroSrc = stdenv.mkDerivation rec { inherit version; + name = "zotero-${version}-pkg"; src = fetchurl { - url = "https://github.com/zotero/zotero-standalone-build/archive/4.0.29.2.tar.gz"; - sha256 = "0pfip6s5dawp7wp8r5czvzlnxvvdwjja64g71h9dxyxrh49v2mxa"; + url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2"; + sha256 = "1y3q5582xp4inpz137x0r9iscs1g0cjlqcfjpzl3klsq3yas688k"; }; - nativeBuildInputs = [ perl unzipNLS ]; - - inherit bash firefox; - - phases = "unpackPhase installPhase fixupPhase"; + buildInputs= [ wrapGAppsHook gsettings_desktop_schemas gtk3 gnome3.adwaita-icon-theme gnome3.dconf ]; + phases = [ "unpackPhase" "installPhase" "fixupPhase"]; installPhase = '' - mkdir -p "$out/libexec/zotero" - unzip "${xpi}" -d "$out/libexec/zotero" - - BUILDID=`date +%Y%m%d` - GECKO_VERSION="${lib.removeSuffix "esr" firefox.passthru.version}" - UPDATE_CHANNEL="default" - - # Copy branding - cp -R assets/branding "$out/libexec/zotero/chrome/branding" - - # Adjust chrome.manifest - echo "" >> "$out/libexec/zotero/chrome.manifest" - cat assets/chrome.manifest >> "$out/libexec/zotero/chrome.manifest" - - # Copy updater.ini - cp assets/updater.ini "$out/libexec/zotero" - - # Adjust connector pref - perl -pi -e 's/pref\("extensions\.zotero\.httpServer\.enabled", false\);/pref("extensions.zotero.httpServer.enabled", true);/g' "$out/libexec/zotero/defaults/preferences/zotero.js" - perl -pi -e 's/pref\("extensions\.zotero\.connector\.enabled", false\);/pref("extensions.zotero.connector.enabled", true);/g' "$out/libexec/zotero/defaults/preferences/zotero.js" - - # Copy icons - cp -r assets/icons "$out/libexec/zotero/chrome/icons" - - # Copy application.ini and modify - cp assets/application.ini "$out/libexec/zotero/application.ini" - perl -pi -e "s/\{\{VERSION}}/$version/" "$out/libexec/zotero/application.ini" - perl -pi -e "s/\{\{BUILDID}}/$BUILDID/" "$out/libexec/zotero/application.ini" - perl -pi -e "s/^MaxVersion.*\$/MaxVersion=$GECKO_VERSION/" "$out/libexec/zotero/application.ini" - - # Copy prefs.js and modify - cp assets/prefs.js "$out/libexec/zotero/defaults/preferences" - perl -pi -e 's/pref\("app\.update\.channel", "[^"]*"\);/pref\("app\.update\.channel", "'"$UPDATE_CHANNEL"'");/' "$out/libexec/zotero/defaults/preferences/prefs.js" - perl -pi -e 's/%GECKO_VERSION%/'"$GECKO_VERSION"'/g' "$out/libexec/zotero/defaults/preferences/prefs.js" - - # Add platform-specific standalone assets - cp -R assets/unix "$out/libexec/zotero" - - mkdir -p "$out/bin" - substituteAll "${./zotero.sh}" "$out/bin/zotero" - chmod +x "$out/bin/zotero" + mkdir -p $out/data + cp -r * $out/data + mkdir $out/bin + ln -s $out/data/zotero $out/bin/zotero ''; +}; - doInstallCheck = true; - installCheckPhase = "$out/bin/zotero --version"; +fhsEnv = buildFHSUserEnv { + name = "zotero-fhs-env"; + targetPkgs = pkgs: with pkgs; with xlibs; [ + gtk3 dbus_glib + libXt nss + ]; +}; - meta = with stdenv.lib; { - homepage = https://www.zotero.org; - description = "Collect, organize, cite, and share your research sources"; - license = licenses.agpl3; - platforms = platforms.linux; - broken = true; # probably; see #20049 - }; -} +in writeTextFile { + name = "zotero"; + destination = "/bin/zotero"; + executable = true; + text = '' + #!${bash}/bin/bash + ${fhsEnv}/bin/zotero-fhs-env ${zoteroSrc}/bin/zotero + ''; +} // {inherit meta; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1492d308f316..51362f54cd0b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17627,9 +17627,7 @@ with pkgs; zoom-us = callPackage ../applications/networking/instant-messengers/zoom-us { }; - zotero = callPackage ../applications/office/zotero { - firefox = firefox-esr-unwrapped; - }; + zotero = callPackage ../applications/office/zotero { }; zscroll = callPackage ../applications/misc/zscroll {}; From 8a325c4dff5022c0ad3920818210d1c1ad955e72 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Thu, 16 Nov 2017 11:33:39 +0000 Subject: [PATCH 2/2] zotero: add desktop entry --- pkgs/applications/office/zotero/default.nix | 38 +++++++++++++++------ 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index 4d66d3dd349a..b259623bf91e 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, buildFHSUserEnv, writeTextFile, bash, wrapGAppsHook, gsettings_desktop_schemas, gtk3, gnome3 }: +{ stdenv, fetchurl, buildFHSUserEnv, makeDesktopItem, runCommand, bash, wrapGAppsHook, gsettings_desktop_schemas, gtk3, gnome3 }: let version = "5.0.25"; @@ -37,12 +37,30 @@ fhsEnv = buildFHSUserEnv { ]; }; -in writeTextFile { - name = "zotero"; - destination = "/bin/zotero"; - executable = true; - text = '' - #!${bash}/bin/bash - ${fhsEnv}/bin/zotero-fhs-env ${zoteroSrc}/bin/zotero - ''; -} // {inherit meta; } +desktopItem = makeDesktopItem rec { + name = "zotero-${version}"; + exec = "zotero -url %U"; + icon = "zotero"; + type = "Application"; + comment = meta.description; + desktopName = "Zotero"; + genericName = "Reference Management"; + categories = "Office;Database;"; + startupNotify = "true"; +}; + +in runCommand "zotero-${version}" { inherit meta; } '' + mkdir -p $out/bin $out/share/applications + cat >$out/bin/zotero <