From e44b3c518793fcd742ed432dcfe1a700c4825716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20=C8=98erb=C4=83nescu?= Date: Tue, 1 Sep 2020 19:35:34 +0200 Subject: [PATCH 1/4] evolution-with-plugins: added support for evolution-ews. --- .../desktops/gnome3/evolution-data-server.nix | 13 +++--- .../evolution/evolution-ews/default.nix | 4 +- .../evolution}/evolution/default.nix | 10 +++-- .../evolution/moduledir_from_env.patch | 21 ++++++++++ .../evolution/evolution/wrapper.nix | 41 +++++++++++++++++++ pkgs/desktops/gnome-3/default.nix | 2 - pkgs/top-level/all-packages.nix | 2 + 7 files changed, 78 insertions(+), 15 deletions(-) rename pkgs/{desktops/gnome-3/apps => applications/networking/mailreaders/evolution}/evolution/default.nix (95%) create mode 100644 pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch create mode 100644 pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix diff --git a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix index bd62d16f61c..b8ad7a343c9 100644 --- a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix +++ b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix @@ -32,14 +32,13 @@ with lib; ###### implementation - config = mkIf config.services.gnome3.evolution-data-server.enable { + config = + let evolution-with-plugins = (import ../../../../.. {}).evolution-with-plugins; in + mkIf config.services.gnome3.evolution-data-server.enable { + environment.systemPackages = [ evolution-with-plugins ]; - environment.systemPackages = [ pkgs.gnome3.evolution-data-server ]; - - services.dbus.packages = [ pkgs.gnome3.evolution-data-server ]; - - systemd.packages = [ pkgs.gnome3.evolution-data-server ]; + services.dbus.packages = [ evolution-with-plugins ]; + systemd.packages = [ evolution-with-plugins ]; }; - } 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/desktops/gnome-3/apps/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix similarity index 95% rename from pkgs/desktops/gnome-3/apps/evolution/default.nix rename to pkgs/applications/networking/mailreaders/evolution/evolution/default.nix index 4bede93ebb7..c9fdbf3a913 100644 --- a/pkgs/desktops/gnome-3/apps/evolution/default.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix @@ -12,8 +12,6 @@ , libnotify , gspell , evolution-data-server -, adwaita-icon-theme -, gnome-desktop , libgdata , libgweather , glib-networking @@ -61,7 +59,7 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - adwaita-icon-theme + gnome3.adwaita-icon-theme bogofilter db evolution-data-server @@ -69,7 +67,7 @@ stdenv.mkDerivation rec { gdk-pixbuf glib glib-networking - gnome-desktop + gnome3.gnome-desktop gsettings-desktop-schemas gst_all_1.gst-plugins-base gst_all_1.gstreamer @@ -115,6 +113,10 @@ stdenv.mkDerivation rec { doCheck = true; + patches = [ + ./moduledir_from_env.patch + ]; + passthru = { updateScript = gnome3.updateScript { packageName = "evolution"; 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 + ''; +} diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix index 2bc825d8149..c4e203913be 100644 --- a/pkgs/desktops/gnome-3/default.nix +++ b/pkgs/desktops/gnome-3/default.nix @@ -158,8 +158,6 @@ lib.makeScope pkgs.newScope (self: with self; { cheese = callPackage ./apps/cheese { }; - evolution = callPackage ./apps/evolution { }; - file-roller = callPackage ./apps/file-roller { }; gedit = callPackage ./apps/gedit { }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 313cfa208d7..f130c92f3b9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21822,6 +21822,8 @@ in inherit (gnome3) evince; evolution-data-server = gnome3.evolution-data-server; evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { }; + evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { }; + evolution-with-plugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { }; keepass = callPackage ../applications/misc/keepass { }; From d671677eab09fcd18c3cdac72849b8eb86efe2f4 Mon Sep 17 00:00:00 2001 From: Symphorien Gibol Date: Sun, 25 Oct 2020 16:09:56 +0100 Subject: [PATCH 2/4] nixos: rework evolution-data-server module --- .../desktops/gnome3/evolution-data-server.nix | 46 ++++++++++++------- .../evolution/evolution/wrapper.nix | 6 +-- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix index b8ad7a343c9..12f13f72979 100644 --- a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix +++ b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix @@ -15,30 +15,44 @@ with lib; options = { services.gnome3.evolution-data-server = { - - enable = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable Evolution Data Server, a collection of services for - storing addressbooks and calendars. - ''; + enable = mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars."; + plugins = mkOption { + type = types.listOf types.package; + default = [ ]; + description = "Plugins for Evolution Data Server."; + }; + }; + programs.evolution = { + enable = mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality."; + plugins = mkOption { + type = types.listOf types.package; + default = [ ]; + example = literalExample "[ pkgs.evolution-ews ]"; + description = "Plugins for Evolution."; }; }; - }; - ###### implementation config = - let evolution-with-plugins = (import ../../../../.. {}).evolution-with-plugins; in - mkIf config.services.gnome3.evolution-data-server.enable { - environment.systemPackages = [ evolution-with-plugins ]; + let + bundle = pkgs.evolutionWithPlugins.override { inherit (config.services.gnome3.evolution-data-server) plugins; }; + in + mkMerge [ + (mkIf config.services.gnome3.evolution-data-server.enable { + environment.systemPackages = [ bundle ]; - services.dbus.packages = [ evolution-with-plugins ]; + services.dbus.packages = [ bundle ]; - systemd.packages = [ evolution-with-plugins ]; - }; + systemd.packages = [ bundle ]; + }) + (mkIf config.programs.evolution.enable { + services.gnome3.evolution-data-server = { + enable = true; + plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins; + }; + }) + ]; } diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix index 4f5278fce97..050082c6f93 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix @@ -1,8 +1,8 @@ -{ lib, makeWrapper, symlinkJoin, evolution, evolution-ews, gnome3 }: +{ lib, makeWrapper, symlinkJoin, gnome3, plugins }: symlinkJoin { name = "evolution-with-plugins"; - paths = [ evolution evolution-ews gnome3.evolution-data-server]; + paths = [ gnome3.evolution-data-server ] ++ plugins; buildInputs = [ makeWrapper ]; @@ -34,7 +34,7 @@ symlinkJoin { 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 + echo fixing service file $i to point to $out sed -i "s@/nix/store/[^/]*/@$out/@" $i done ''; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f130c92f3b9..b6a9a0cf192 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21823,7 +21823,7 @@ in evolution-data-server = gnome3.evolution-data-server; evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { }; evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { }; - evolution-with-plugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { }; + evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; }; keepass = callPackage ../applications/misc/keepass { }; From b241f7fc58d2ec2b61dfa3819acc04a9bd23c867 Mon Sep 17 00:00:00 2001 From: Symphorien Gibol Date: Sun, 8 Nov 2020 14:36:54 +0100 Subject: [PATCH 3/4] almanah: fix evaluation --- pkgs/applications/misc/almanah/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/misc/almanah/default.nix b/pkgs/applications/misc/almanah/default.nix index 3a5c3756320..b8029b6229d 100644 --- a/pkgs/applications/misc/almanah/default.nix +++ b/pkgs/applications/misc/almanah/default.nix @@ -4,6 +4,7 @@ , cairo , desktop-file-utils , evolution-data-server +, evolution , gcr , gettext , glib @@ -48,7 +49,7 @@ stdenv.mkDerivation rec { evolution-data-server gcr glib - gnome3.evolution + evolution gpgme gtk3 gtksourceview3 From f45f22d51901eb85a6bd4628681bcbf2732655af Mon Sep 17 00:00:00 2001 From: Symphorien Gibol Date: Wed, 20 Jan 2021 19:51:32 +0100 Subject: [PATCH 4/4] nixos/evolution: enable gnome-keyring --- nixos/modules/services/desktops/gnome3/evolution-data-server.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix index 12f13f72979..749f12b86bc 100644 --- a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix +++ b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix @@ -53,6 +53,7 @@ with lib; enable = true; plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins; }; + services.gnome3.gnome-keyring.enable = true; }) ]; }