diff options
author | Guillaume Girol <symphorien@users.noreply.github.com> | 2021-01-21 19:42:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-21 19:42:45 +0000 |
commit | 7ed3d2df76cd1f637c6163858ac0e1db9cdf7b00 (patch) | |
tree | 9a2f2f4aa90ee85db401809e848fb13b042c8bf6 /pkgs/applications/networking/mailreaders | |
parent | afa23b8a4be2e536cb6f905833a76f1434dffc65 (diff) | |
parent | f45f22d51901eb85a6bd4628681bcbf2732655af (diff) |
Merge pull request #103135 from symphorien/pr/92775
Evolution ews: wrap evolution and evolution data server, fix nixos module.
Diffstat (limited to 'pkgs/applications/networking/mailreaders')
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 fbd6d1d924cd9..8deb7e84a2c66 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 0000000000000..c9fdbf3a91337 --- /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 0000000000000..2a5edfb9a5a1b --- /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 0000000000000..050082c6f933e --- /dev/null +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix @@ -0,0 +1,41 @@ +{ lib, makeWrapper, symlinkJoin, gnome3, plugins }: + +symlinkJoin { + name = "evolution-with-plugins"; + paths = [ gnome3.evolution-data-server ] ++ plugins; + + 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 to point to $out + sed -i "s@/nix/store/[^/]*/@$out/@" $i + done + ''; +} |