summary refs log tree commit diff
path: root/pkgs/applications/networking/mailreaders
diff options
context:
space:
mode:
authorDaniel Șerbănescu <daniel@serbanescu.dk>2020-09-01 19:35:34 +0200
committerSymphorien Gibol <symphorien+git@xlumurb.eu>2021-01-17 11:13:54 +0100
commite44b3c518793fcd742ed432dcfe1a700c4825716 (patch)
tree54e8018bd67814c6ba5adb651cf8ae8e68a81805 /pkgs/applications/networking/mailreaders
parent19e8aa6f133633d2fd1bf84db9f608bbf680b9af (diff)
downloadnixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar.gz
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar.bz2
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar.lz
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar.xz
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.tar.zst
nixpkgs-e44b3c518793fcd742ed432dcfe1a700c4825716.zip
evolution-with-plugins: added support for evolution-ews.
Diffstat (limited to 'pkgs/applications/networking/mailreaders')
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution/default.nix136
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch21
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix41
4 files changed, 200 insertions, 2 deletions
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
index fbd6d1d924c..8deb7e84a2c 100644
--- a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, gnome3, cmake, gettext, intltool, pkg-config, evolution-data-server
+{ lib, stdenv, fetchurl, gnome3, cmake, gettext, intltool, pkg-config, evolution-data-server, evolution
 , sqlite, gtk3, webkitgtk, libgdata, libmspack }:
 
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake gettext intltool pkg-config ];
 
   buildInputs = [
-    evolution-data-server gnome3.evolution
+    evolution-data-server evolution
     sqlite libgdata
     gtk3 webkitgtk
     libmspack
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
new file mode 100644
index 00000000000..c9fdbf3a913
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
@@ -0,0 +1,136 @@
+{ lib, stdenv
+, cmake
+, ninja
+, intltool
+, fetchurl
+, libxml2
+, webkitgtk
+, highlight
+, pkg-config
+, gtk3
+, glib
+, libnotify
+, gspell
+, evolution-data-server
+, libgdata
+, libgweather
+, glib-networking
+, gsettings-desktop-schemas
+, wrapGAppsHook
+, itstool
+, shared-mime-info
+, libical
+, db
+, gcr
+, sqlite
+, gnome3
+, librsvg
+, gdk-pixbuf
+, libsecret
+, nss
+, nspr
+, icu
+, libcanberra-gtk3
+, bogofilter
+, gst_all_1
+, procps
+, p11-kit
+, openldap
+, spamassassin
+}:
+
+stdenv.mkDerivation rec {
+  pname = "evolution";
+  version = "3.38.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1whjgfhcxpb5yhhvyqb8pv71vprw6fv02czin4k4z6dxrxsq32qx";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    intltool
+    itstool
+    libxml2
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gnome3.adwaita-icon-theme
+    bogofilter
+    db
+    evolution-data-server
+    gcr
+    gdk-pixbuf
+    glib
+    glib-networking
+    gnome3.gnome-desktop
+    gsettings-desktop-schemas
+    gst_all_1.gst-plugins-base
+    gst_all_1.gstreamer
+    gtk3
+    gspell
+    highlight
+    icu
+    libcanberra-gtk3
+    libgdata
+    libgweather
+    libical
+    libnotify
+    librsvg
+    libsecret
+    nspr
+    nss
+    openldap
+    p11-kit
+    procps
+    shared-mime-info
+    sqlite
+    webkitgtk
+  ];
+
+  propagatedUserEnvPkgs = [
+    evolution-data-server
+  ];
+
+  cmakeFlags = [
+    "-DENABLE_AUTOAR=OFF"
+    "-DENABLE_LIBCRYPTUI=OFF"
+    "-DENABLE_PST_IMPORT=OFF"
+    "-DENABLE_YTNEF=OFF"
+    "-DWITH_SPAMASSASSIN=${spamassassin}/bin/spamassassin"
+    "-DWITH_SA_LEARN=${spamassassin}/bin/sa-learn"
+    "-DWITH_BOGOFILTER=${bogofilter}/bin/bogofilter"
+    "-DWITH_OPENLDAP=${openldap}"
+  ];
+
+  requiredSystemFeatures = [
+    "big-parallel"
+  ];
+
+  doCheck = true;
+
+  patches = [
+    ./moduledir_from_env.patch
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "evolution";
+      attrPath = "gnome3.evolution";
+    };
+  };
+
+  PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules";
+
+  meta = with lib; {
+    homepage = "https://wiki.gnome.org/Apps/Evolution";
+    description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
+    maintainers = teams.gnome.members;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch b/pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch
new file mode 100644
index 00000000000..2a5edfb9a5a
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch
@@ -0,0 +1,21 @@
+diff --git a/src/shell/main.c b/src/shell/main.c
+index 5d089225ca..030908d684 100644
+--- a/src/shell/main.c
++++ b/src/shell/main.c
+@@ -407,7 +407,15 @@ create_default_shell (void)
+ 	}
+
+ 	/* Load all shared library modules. */
+-	module_types = e_module_load_all_in_directory (EVOLUTION_MODULEDIR);
++	const gchar *modules_directory = EVOLUTION_MODULEDIR;
++	const gchar *modules_directory_env;
++
++	modules_directory_env = g_getenv ("EVOLUTION_MODULEDIR");
++	if (modules_directory_env &&
++	    g_file_test (modules_directory_env, G_FILE_TEST_IS_DIR))
++		modules_directory = g_strdup (modules_directory_env);
++
++	module_types = e_module_load_all_in_directory (modules_directory);
+ 	g_list_free_full (module_types, (GDestroyNotify) g_type_module_unuse);
+
+ 	flags = G_APPLICATION_HANDLES_OPEN |
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix
new file mode 100644
index 00000000000..4f5278fce97
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix
@@ -0,0 +1,41 @@
+{ lib, makeWrapper, symlinkJoin, evolution, evolution-ews, gnome3 }:
+
+symlinkJoin {
+  name = "evolution-with-plugins";
+  paths = [ evolution evolution-ews gnome3.evolution-data-server];
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    for i in $out/bin/* $out/libexec/**; do
+    if [ ! -d $i ]; then
+      echo wrapping $i
+      wrapProgram $i \
+        --set LD_LIBRARY_PATH "$out/lib" \
+        --set EDS_ADDRESS_BOOK_MODULES "$out/lib/evolution-data-server/addressbook-backends/" \
+        --set EDS_CALENDAR_MODULES "$out/lib/evolution-data-server/calendar-backends/" \
+        --set EDS_CAMEL_PROVIDER_DIR "$out/lib/evolution-data-server/camel-providers/" \
+        --set EDS_REGISTRY_MODULES "$out/lib/evolution-data-server/registry-modules/" \
+        --set EVOLUTION_MODULEDIR "$out/lib/evolution/modules"
+    fi
+    done
+
+    fixSymlink () {
+     local link=$1
+     local target=$(readlink $link);
+     local newtarget=$(sed "s@/nix/store/[^/]*/@$out/@" <<< "$target")
+     if [[ $target != $newtarget ]] && [[ -d $newtarget ]]; then
+       echo fixing link to point to $newtarget instead of $target
+       rm $link
+       ln -s $newtarget $link
+     fi
+    }
+
+    fixSymlink $out/share/dbus-1/service
+    fixSymlink $out/lib/systemd/user
+    for i in $out/share/dbus-1/services/*.service $out/lib/systemd/user/*.service; do
+      echo fixing service file $i
+      sed -i "s@/nix/store/[^/]*/@$out/@" $i
+    done
+  '';
+}