diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix index a7d4673158b5..5885d788e0d1 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix +++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix @@ -11,14 +11,14 @@ , python3 , gobject-introspection , gettext -, libsoup +, libsoup_3 , libxml2 , libsecret , icu , sqlite , tzdata , libcanberra-gtk3 -, gcr +, gcr_4 , p11-kit , db , nspr @@ -33,29 +33,32 @@ , ninja , libkrb5 , openldap -, webkitgtk +, webkitgtk_4_1 +, webkitgtk_5_0 , libaccounts-glib , json-glib , glib , gtk3 +, gtk4 +, withGtk3 ? true +, withGtk4 ? false , libphonenumber , gnome-online-accounts , libgweather , libgdata -, gsettings-desktop-schemas , boost , protobuf }: stdenv.mkDerivation rec { pname = "evolution-data-server"; - version = "3.44.4"; + version = "3.45.1"; outputs = [ "out" "dev" ]; src = fetchurl { url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "wMZliDjVi6RgQqS55Qo7sRKWkeTNuEteugvzMLLMsus="; + sha256 = "M0t2QR8hDzcEYDsSpCwU/DKY+hL/6abk+/uYeeP+SyI="; }; patches = [ @@ -67,8 +70,7 @@ stdenv.mkDerivation rec { prePatch = '' substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \ - --subst-var-by EDS_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} \ - --subst-var-by GDS_GSETTINGS_PATH ${glib.getSchemaPath gsettings-desktop-schemas} + --subst-var-by EDS_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} patches="$patches $PWD/hardcode-gsettings.patch" ''; @@ -86,11 +88,9 @@ stdenv.mkDerivation rec { buildInputs = [ glib - libsoup - libxml2 - gtk3 + libsoup_3 gnome-online-accounts - gcr + gcr_4 p11-kit libgweather libgdata @@ -100,13 +100,18 @@ stdenv.mkDerivation rec { sqlite libkrb5 openldap - webkitgtk glib-networking libcanberra-gtk3 pcre libphonenumber boost protobuf + ] ++ lib.optionals withGtk3 [ + gtk3 + webkitgtk_4_1 + ] ++ lib.optionals withGtk4 [ + gtk4 + webkitgtk_5_0 ]; propagatedBuildInputs = [ @@ -116,7 +121,8 @@ stdenv.mkDerivation rec { nspr libical libgdata # needed for GObject inspection, https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/57/diffs - libsoup + libsoup_3 + libxml2 ]; cmakeFlags = [ @@ -125,7 +131,10 @@ stdenv.mkDerivation rec { "-DENABLE_INTROSPECTION=ON" "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include" "-DWITH_PHONENUMBER=ON" - "-DWITH_GWEATHER4=ON" + "-DENABLE_GTK=${lib.boolToString withGtk3}" + "-DENABLE_EXAMPLES=${lib.boolToString withGtk3}" + "-DENABLE_CANBERRA=${lib.boolToString withGtk3}" + "-DENABLE_GTK4=${lib.boolToString withGtk4}" ]; passthru = { diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci index 9e60e892b711..8f72e4f5d94b 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci +++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci @@ -24,7 +24,6 @@ e_s_d_schema_constants = [ ] g_d_s_schema_constants = [ - "\"org.gnome.system.proxy\"", ] def get_schema_directory(schema_path): diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch index c756b4bcc2ac..c3e0ef8359e5 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch +++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch @@ -127,8 +127,32 @@ index 8dfff6d..cd88392 100644 uid = g_settings_get_string (settings, SELF_UID_KEY); g_object_unref (settings); +diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c b/src/addressbook/libedata-book/e-book-meta-backend.c +index d3f130e..9e8edd4 100644 +--- a/src/addressbook/libedata-book/e-book-meta-backend.c ++++ b/src/addressbook/libedata-book/e-book-meta-backend.c +@@ -135,7 +135,18 @@ ebmb_is_power_saver_enabled (void) + GSettings *settings; + gboolean enabled = FALSE; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ g_autoptr(GSettingsSchemaSource) schema_source; ++ g_autoptr(GSettingsSchema) schema; ++ schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ } + + if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) { + GPowerProfileMonitor *power_monitor; diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c -index e696861..52af238 100644 +index 42f3457..faac410 100644 --- a/src/calendar/backends/contacts/e-cal-backend-contacts.c +++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c @@ -1387,7 +1387,18 @@ e_cal_backend_contacts_init (ECalBackendContacts *cbc) @@ -152,10 +176,10 @@ index e696861..52af238 100644 cbc->priv->update_alarms_id = 0; cbc->priv->alarm_enabled = FALSE; diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c -index a24ede2..5d2a032 100644 +index 52095a4..e839991 100644 --- a/src/calendar/libecal/e-reminder-watcher.c +++ b/src/calendar/libecal/e-reminder-watcher.c -@@ -2477,7 +2477,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher) +@@ -2555,7 +2555,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher) watcher->priv = e_reminder_watcher_get_instance_private (watcher); watcher->priv->cancellable = g_cancellable_new (); @@ -176,6 +200,30 @@ index a24ede2..5d2a032 100644 watcher->priv->scheduled = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_reminder_watcher_free_rd_slist); watcher->priv->default_zone = e_cal_util_copy_timezone (zone); watcher->priv->timers_enabled = TRUE; +diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c +index 94a875f..1f914a9 100644 +--- a/src/calendar/libedata-cal/e-cal-meta-backend.c ++++ b/src/calendar/libedata-cal/e-cal-meta-backend.c +@@ -149,7 +149,18 @@ ecmb_is_power_saver_enabled (void) + GSettings *settings; + gboolean enabled = FALSE; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ g_autoptr(GSettingsSchemaSource) schema_source; ++ g_autoptr(GSettingsSchema) schema; ++ schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ } + + if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) { + GPowerProfileMonitor *power_monitor; diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c index 8013ba7..ba74769 100644 --- a/src/camel/camel-cipher-context.c @@ -201,10 +249,10 @@ index 8013ba7..ba74769 100644 g_clear_object (&settings); diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c -index 685d3ab..521d91f 100644 +index 205372e..2023704 100644 --- a/src/camel/camel-gpg-context.c +++ b/src/camel/camel-gpg-context.c -@@ -571,7 +571,18 @@ gpg_ctx_get_executable_name (void) +@@ -582,7 +582,18 @@ gpg_ctx_get_executable_name (void) GSettings *settings; gchar *path; @@ -249,6 +297,30 @@ index e61160c..d17871a 100644 g_signal_connect (mi_user_headers_settings, "changed::camel-message-info-user-headers", G_CALLBACK (mi_user_headers_settings_changed_cb), NULL); G_UNLOCK (mi_user_headers); +diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c +index 1eeff8d..6d1d58b 100644 +--- a/src/camel/providers/imapx/camel-imapx-server.c ++++ b/src/camel/providers/imapx/camel-imapx-server.c +@@ -5573,7 +5573,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store) + if (!skip_old_flags_update) { + GSettings *eds_settings; + +- eds_settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ g_autoptr(GSettingsSchemaSource) schema_source; ++ g_autoptr(GSettingsSchema) schema; ++ schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ eds_settings = g_settings_new_full(schema, NULL, NULL); ++ } + + if (g_settings_get_boolean (eds_settings, "limit-operations-in-power-saver-mode")) { + GPowerProfileMonitor *power_monitor; diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c index f535ad6..30130b9 100644 --- a/src/camel/providers/smtp/camel-smtp-transport.c @@ -298,10 +370,10 @@ index 188f276..7c4db94 100644 settings, "network-monitor-gio-name", object, "gio-name", diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c -index f9d9056..115d344 100644 +index f215388..3b67126 100644 --- a/src/libedataserver/e-oauth2-service-google.c +++ b/src/libedataserver/e-oauth2-service-google.c -@@ -70,7 +70,18 @@ eos_google_read_settings (EOAuth2Service *service, +@@ -71,7 +71,18 @@ eos_google_read_settings (EOAuth2Service *service, if (!value) { GSettings *settings; @@ -322,10 +394,10 @@ index f9d9056..115d344 100644 g_object_unref (settings); diff --git a/src/libedataserver/e-oauth2-service-outlook.c b/src/libedataserver/e-oauth2-service-outlook.c -index 687c10d..ac1deae 100644 +index 9cff0d0..fd95f0b 100644 --- a/src/libedataserver/e-oauth2-service-outlook.c +++ b/src/libedataserver/e-oauth2-service-outlook.c -@@ -70,7 +70,18 @@ eos_outlook_read_settings (EOAuth2Service *service, +@@ -71,7 +71,18 @@ eos_outlook_read_settings (EOAuth2Service *service, if (!value) { GSettings *settings; @@ -346,10 +418,10 @@ index 687c10d..ac1deae 100644 g_object_unref (settings); diff --git a/src/libedataserver/e-oauth2-service-yahoo.c b/src/libedataserver/e-oauth2-service-yahoo.c -index 329a38c..f541393 100644 +index 8e4ee81..bb8f8f7 100644 --- a/src/libedataserver/e-oauth2-service-yahoo.c +++ b/src/libedataserver/e-oauth2-service-yahoo.c -@@ -66,7 +66,18 @@ eos_yahoo_read_settings (EOAuth2Service *service, +@@ -67,7 +67,18 @@ eos_yahoo_read_settings (EOAuth2Service *service, if (!value) { GSettings *settings; @@ -370,10 +442,10 @@ index 329a38c..f541393 100644 g_object_unref (settings); diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c -index 979095b..ecac6bb 100644 +index 290534d..36331b6 100644 --- a/src/libedataserver/e-oauth2-service.c +++ b/src/libedataserver/e-oauth2-service.c -@@ -89,7 +89,18 @@ eos_default_guess_can_process (EOAuth2Service *service, +@@ -90,7 +90,18 @@ eos_default_guess_can_process (EOAuth2Service *service, name_len = strlen (name); hostname_len = strlen (hostname); @@ -393,51 +465,11 @@ index 979095b..ecac6bb 100644 values = g_settings_get_strv (settings, "oauth2-services-hint"); g_object_unref (settings); -diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c -index bcd07f9..17db26c 100644 ---- a/src/libedataserver/e-proxy.c -+++ b/src/libedataserver/e-proxy.c -@@ -957,8 +957,33 @@ e_proxy_init (EProxy *proxy) - - proxy->priv->type = PROXY_TYPE_SYSTEM; - -- proxy->priv->evolution_proxy_settings = g_settings_new ("org.gnome.evolution.shell.network-config"); -- proxy->priv->proxy_settings = g_settings_new ("org.gnome.system.proxy"); -+ { -+ g_autoptr(GSettingsSchemaSource) schema_source; -+ g_autoptr(GSettingsSchema) schema; -+ schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@", -+ g_settings_schema_source_get_default(), -+ TRUE, -+ NULL); -+ schema = g_settings_schema_source_lookup(schema_source, -+ "org.gnome.evolution.shell.network-config", -+ FALSE); -+ proxy->priv->evolution_proxy_settings = g_settings_new_full(schema, -+ NULL, -+ NULL); -+ } -+ { -+ g_autoptr(GSettingsSchemaSource) schema_source; -+ g_autoptr(GSettingsSchema) schema; -+ schema_source = g_settings_schema_source_new_from_directory("@GDS_GSETTINGS_PATH@", -+ g_settings_schema_source_get_default(), -+ TRUE, -+ NULL); -+ schema = g_settings_schema_source_lookup(schema_source, -+ "org.gnome.system.proxy", -+ FALSE); -+ proxy->priv->proxy_settings = g_settings_new_full(schema, -+ NULL, NULL); -+ } - proxy->priv->proxy_http_settings = g_settings_get_child (proxy->priv->proxy_settings, "http"); - proxy->priv->proxy_https_settings = g_settings_get_child (proxy->priv->proxy_settings, "https"); - proxy->priv->proxy_socks_settings = g_settings_get_child (proxy->priv->proxy_settings, "socks"); diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c -index 837e940..4bbd00d 100644 +index 6701a3a..6b8ee33 100644 --- a/src/libedataserver/e-source-registry.c +++ b/src/libedataserver/e-source-registry.c -@@ -1769,7 +1769,19 @@ e_source_registry_init (ESourceRegistry *registry) +@@ -1764,7 +1764,19 @@ e_source_registry_init (ESourceRegistry *registry) g_mutex_init (®istry->priv->sources_lock); @@ -459,10 +491,10 @@ index 837e940..4bbd00d 100644 g_signal_connect ( registry->priv->settings, "changed", diff --git a/src/libedataserverui/e-reminders-widget.c b/src/libedataserverui/e-reminders-widget.c -index d18474d..418ccc2 100644 +index c0c1aea..14e6806 100644 --- a/src/libedataserverui/e-reminders-widget.c +++ b/src/libedataserverui/e-reminders-widget.c -@@ -1874,7 +1874,19 @@ static void +@@ -1956,7 +1956,19 @@ static void e_reminders_widget_init (ERemindersWidget *reminders) { reminders->priv = e_reminders_widget_get_instance_private (reminders); diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 15f0867c9f86..616a046061fe 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27850,6 +27850,7 @@ with pkgs; inherit (gnome) evince; evolution-data-server = gnome.evolution-data-server; + evolution-data-server-gtk4 = evolution-data-server.override { withGtk3 = false; withGtk4 = true; }; evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { }; evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { }; evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; };