Merge pull request #103135 from symphorien/pr/92775

Evolution ews: wrap evolution and evolution data server, fix nixos module.

authored by Guillaume Girol and committed by GitHub 7ed3d2df afa23b8a

+106 -27
+32 -18
nixos/modules/services/desktops/gnome3/evolution-data-server.nix
··· 15 options = { 16 17 services.gnome3.evolution-data-server = { 18 - 19 - enable = mkOption { 20 - type = types.bool; 21 - default = false; 22 - description = '' 23 - Whether to enable Evolution Data Server, a collection of services for 24 - storing addressbooks and calendars. 25 - ''; 26 }; 27 28 }; 29 - 30 }; 31 - 32 33 ###### implementation 34 35 - config = mkIf config.services.gnome3.evolution-data-server.enable { 36 37 - environment.systemPackages = [ pkgs.gnome3.evolution-data-server ]; 38 39 - services.dbus.packages = [ pkgs.gnome3.evolution-data-server ]; 40 - 41 - systemd.packages = [ pkgs.gnome3.evolution-data-server ]; 42 - 43 - }; 44 - 45 }
··· 15 options = { 16 17 services.gnome3.evolution-data-server = { 18 + enable = mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars."; 19 + plugins = mkOption { 20 + type = types.listOf types.package; 21 + default = [ ]; 22 + description = "Plugins for Evolution Data Server."; 23 + }; 24 + }; 25 + programs.evolution = { 26 + enable = mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality."; 27 + plugins = mkOption { 28 + type = types.listOf types.package; 29 + default = [ ]; 30 + example = literalExample "[ pkgs.evolution-ews ]"; 31 + description = "Plugins for Evolution."; 32 }; 33 34 }; 35 }; 36 37 ###### implementation 38 39 + config = 40 + let 41 + bundle = pkgs.evolutionWithPlugins.override { inherit (config.services.gnome3.evolution-data-server) plugins; }; 42 + in 43 + mkMerge [ 44 + (mkIf config.services.gnome3.evolution-data-server.enable { 45 + environment.systemPackages = [ bundle ]; 46 47 + services.dbus.packages = [ bundle ]; 48 49 + systemd.packages = [ bundle ]; 50 + }) 51 + (mkIf config.programs.evolution.enable { 52 + services.gnome3.evolution-data-server = { 53 + enable = true; 54 + plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins; 55 + }; 56 + services.gnome3.gnome-keyring.enable = true; 57 + }) 58 + ]; 59 }
+2 -1
pkgs/applications/misc/almanah/default.nix
··· 4 , cairo 5 , desktop-file-utils 6 , evolution-data-server 7 , gcr 8 , gettext 9 , glib ··· 48 evolution-data-server 49 gcr 50 glib 51 - gnome3.evolution 52 gpgme 53 gtk3 54 gtksourceview3
··· 4 , cairo 5 , desktop-file-utils 6 , evolution-data-server 7 + , evolution 8 , gcr 9 , gettext 10 , glib ··· 49 evolution-data-server 50 gcr 51 glib 52 + evolution 53 gpgme 54 gtk3 55 gtksourceview3
+2 -2
pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
··· 1 - { lib, stdenv, fetchurl, gnome3, cmake, gettext, intltool, pkg-config, evolution-data-server 2 , sqlite, gtk3, webkitgtk, libgdata, libmspack }: 3 4 stdenv.mkDerivation rec { ··· 13 nativeBuildInputs = [ cmake gettext intltool pkg-config ]; 14 15 buildInputs = [ 16 - evolution-data-server gnome3.evolution 17 sqlite libgdata 18 gtk3 webkitgtk 19 libmspack
··· 1 + { lib, stdenv, fetchurl, gnome3, cmake, gettext, intltool, pkg-config, evolution-data-server, evolution 2 , sqlite, gtk3, webkitgtk, libgdata, libmspack }: 3 4 stdenv.mkDerivation rec { ··· 13 nativeBuildInputs = [ cmake gettext intltool pkg-config ]; 14 15 buildInputs = [ 16 + evolution-data-server evolution 17 sqlite libgdata 18 gtk3 webkitgtk 19 libmspack
+21
pkgs/applications/networking/mailreaders/evolution/evolution/moduledir_from_env.patch
···
··· 1 + diff --git a/src/shell/main.c b/src/shell/main.c 2 + index 5d089225ca..030908d684 100644 3 + --- a/src/shell/main.c 4 + +++ b/src/shell/main.c 5 + @@ -407,7 +407,15 @@ create_default_shell (void) 6 + } 7 + 8 + /* Load all shared library modules. */ 9 + - module_types = e_module_load_all_in_directory (EVOLUTION_MODULEDIR); 10 + + const gchar *modules_directory = EVOLUTION_MODULEDIR; 11 + + const gchar *modules_directory_env; 12 + + 13 + + modules_directory_env = g_getenv ("EVOLUTION_MODULEDIR"); 14 + + if (modules_directory_env && 15 + + g_file_test (modules_directory_env, G_FILE_TEST_IS_DIR)) 16 + + modules_directory = g_strdup (modules_directory_env); 17 + + 18 + + module_types = e_module_load_all_in_directory (modules_directory); 19 + g_list_free_full (module_types, (GDestroyNotify) g_type_module_unuse); 20 + 21 + flags = G_APPLICATION_HANDLES_OPEN |
+41
pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix
···
··· 1 + { lib, makeWrapper, symlinkJoin, gnome3, plugins }: 2 + 3 + symlinkJoin { 4 + name = "evolution-with-plugins"; 5 + paths = [ gnome3.evolution-data-server ] ++ plugins; 6 + 7 + buildInputs = [ makeWrapper ]; 8 + 9 + postBuild = '' 10 + for i in $out/bin/* $out/libexec/**; do 11 + if [ ! -d $i ]; then 12 + echo wrapping $i 13 + wrapProgram $i \ 14 + --set LD_LIBRARY_PATH "$out/lib" \ 15 + --set EDS_ADDRESS_BOOK_MODULES "$out/lib/evolution-data-server/addressbook-backends/" \ 16 + --set EDS_CALENDAR_MODULES "$out/lib/evolution-data-server/calendar-backends/" \ 17 + --set EDS_CAMEL_PROVIDER_DIR "$out/lib/evolution-data-server/camel-providers/" \ 18 + --set EDS_REGISTRY_MODULES "$out/lib/evolution-data-server/registry-modules/" \ 19 + --set EVOLUTION_MODULEDIR "$out/lib/evolution/modules" 20 + fi 21 + done 22 + 23 + fixSymlink () { 24 + local link=$1 25 + local target=$(readlink $link); 26 + local newtarget=$(sed "s@/nix/store/[^/]*/@$out/@" <<< "$target") 27 + if [[ $target != $newtarget ]] && [[ -d $newtarget ]]; then 28 + echo fixing link to point to $newtarget instead of $target 29 + rm $link 30 + ln -s $newtarget $link 31 + fi 32 + } 33 + 34 + fixSymlink $out/share/dbus-1/service 35 + fixSymlink $out/lib/systemd/user 36 + for i in $out/share/dbus-1/services/*.service $out/lib/systemd/user/*.service; do 37 + echo fixing service file $i to point to $out 38 + sed -i "s@/nix/store/[^/]*/@$out/@" $i 39 + done 40 + ''; 41 + }
+6 -4
pkgs/desktops/gnome-3/apps/evolution/default.nix pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
··· 12 , libnotify 13 , gspell 14 , evolution-data-server 15 - , adwaita-icon-theme 16 - , gnome-desktop 17 , libgdata 18 , libgweather 19 , glib-networking ··· 61 ]; 62 63 buildInputs = [ 64 - adwaita-icon-theme 65 bogofilter 66 db 67 evolution-data-server ··· 69 gdk-pixbuf 70 glib 71 glib-networking 72 - gnome-desktop 73 gsettings-desktop-schemas 74 gst_all_1.gst-plugins-base 75 gst_all_1.gstreamer ··· 114 ]; 115 116 doCheck = true; 117 118 passthru = { 119 updateScript = gnome3.updateScript {
··· 12 , libnotify 13 , gspell 14 , evolution-data-server 15 , libgdata 16 , libgweather 17 , glib-networking ··· 59 ]; 60 61 buildInputs = [ 62 + gnome3.adwaita-icon-theme 63 bogofilter 64 db 65 evolution-data-server ··· 67 gdk-pixbuf 68 glib 69 glib-networking 70 + gnome3.gnome-desktop 71 gsettings-desktop-schemas 72 gst_all_1.gst-plugins-base 73 gst_all_1.gstreamer ··· 112 ]; 113 114 doCheck = true; 115 + 116 + patches = [ 117 + ./moduledir_from_env.patch 118 + ]; 119 120 passthru = { 121 updateScript = gnome3.updateScript {
-2
pkgs/desktops/gnome-3/default.nix
··· 158 159 cheese = callPackage ./apps/cheese { }; 160 161 - evolution = callPackage ./apps/evolution { }; 162 - 163 file-roller = callPackage ./apps/file-roller { }; 164 165 gedit = callPackage ./apps/gedit { };
··· 158 159 cheese = callPackage ./apps/cheese { }; 160 161 file-roller = callPackage ./apps/file-roller { }; 162 163 gedit = callPackage ./apps/gedit { };
+2
pkgs/top-level/all-packages.nix
··· 21688 inherit (gnome3) evince; 21689 evolution-data-server = gnome3.evolution-data-server; 21690 evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { }; 21691 21692 keepass = callPackage ../applications/misc/keepass { }; 21693
··· 21688 inherit (gnome3) evince; 21689 evolution-data-server = gnome3.evolution-data-server; 21690 evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { }; 21691 + evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { }; 21692 + evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; }; 21693 21694 keepass = callPackage ../applications/misc/keepass { }; 21695