Nixpkgs: TLS support is not available in Evolution's calendar view

Created on 3 May 2018  路  7Comments  路  Source: NixOS/nixpkgs

Issue description

In Evolution, when adding CalDAV based calendars, remote iCals or even Google based calendars, and using TLS/SSL, Evolution refuses to sync, claiming that TLS(/SSL) support is not available, and that we should install glib-networking.

Since in the wrapper's GIO_EXTRA_MODULES definitions, glib-networking is there and pointing to an existing directory (and that mails using TLS/SSL works), my guess, is that Evolution is communicating to an external process?

Steps to reproduce

I have pkgs.gnome3.evolution in my users.extraUsers.minijackson.packages and I have services.gnome3.evolution-data-server enabled.

  • Launch evolution, go to the Calendar view, add either a Google account, a CalDAV based calendar or a remote iCal using a TLS/SSL connection (each of these three have different errors messages that boils down to the same)

Technical details

  • system: "x86_64-linux"
  • host os: Linux 4.14.38, NixOS, 18.03.132229.7cbf6ca1c84 (Impala)
  • multi-user?: yes
  • sandbox: no
  • version: nix-env (Nix) 2.0.1
  • channels(root): "nixos-18.03.132229.7cbf6ca1c84"
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs
bug GNOME

Most helpful comment

Perhaps a patch like this might work:

--- a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -1,6 +1,6 @@
 { fetchurl, stdenv, pkgconfig, gnome3, python3, dconf, gobjectIntrospection
 , intltool, libsoup, libxml2, libsecret, icu, sqlite
-, p11-kit, db, nspr, nss, libical, gperf, makeWrapper
+, p11-kit, db, nspr, nss, libical, gperf, wrapGAppsHook, glib-networking
 , vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib }:

 stdenv.mkDerivation rec {
@@ -15,12 +15,12 @@
   };

   nativeBuildInputs = [
-    cmake ninja pkgconfig intltool python3 gperf makeWrapper gobjectIntrospection vala
+    cmake ninja pkgconfig intltool python3 gperf wrapGAppsHook gobjectIntrospection vala
   ];
   buildInputs = with gnome3; [
     glib libsoup libxml2 gtk gnome-online-accounts
     gcr p11-kit libgweather libgdata libaccounts-glib json-glib
-    icu sqlite kerberos openldap webkitgtk
+    icu sqlite kerberos openldap webkitgtk glib-networking
   ];

   propagatedBuildInputs = [ libsecret nss nspr libical db ];
@@ -36,14 +36,6 @@
     cmakeFlags="-DINCLUDE_INSTALL_DIR=$dev/include $cmakeFlags"
   '';

-  preFixup = ''
-    for f in $(find $out/libexec/ -type f -executable); do
-      wrapProgram "$f" \
-        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
-        --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
-    done
-  '';
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = "evolution-data-server";

All 7 comments

Perhaps a patch like this might work:

--- a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -1,6 +1,6 @@
 { fetchurl, stdenv, pkgconfig, gnome3, python3, dconf, gobjectIntrospection
 , intltool, libsoup, libxml2, libsecret, icu, sqlite
-, p11-kit, db, nspr, nss, libical, gperf, makeWrapper
+, p11-kit, db, nspr, nss, libical, gperf, wrapGAppsHook, glib-networking
 , vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib }:

 stdenv.mkDerivation rec {
@@ -15,12 +15,12 @@
   };

   nativeBuildInputs = [
-    cmake ninja pkgconfig intltool python3 gperf makeWrapper gobjectIntrospection vala
+    cmake ninja pkgconfig intltool python3 gperf wrapGAppsHook gobjectIntrospection vala
   ];
   buildInputs = with gnome3; [
     glib libsoup libxml2 gtk gnome-online-accounts
     gcr p11-kit libgweather libgdata libaccounts-glib json-glib
-    icu sqlite kerberos openldap webkitgtk
+    icu sqlite kerberos openldap webkitgtk glib-networking
   ];

   propagatedBuildInputs = [ libsecret nss nspr libical db ];
@@ -36,14 +36,6 @@
     cmakeFlags="-DINCLUDE_INSTALL_DIR=$dev/include $cmakeFlags"
   '';

-  preFixup = ''
-    for f in $(find $out/libexec/ -type f -executable); do
-      wrapProgram "$f" \
-        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
-        --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
-    done
-  '';
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = "evolution-data-server";

Weird, that does not seem to wrap the files in ${evolution-data-server.out}/libexec at all. No idea why. Edit: Never mind, it does. Not sure what I was building.

@minijackson Does it work for you?

I'm sorry but could you give me quick directions on how to override <nixpkgs> ? When I try it, I have to recompile my whole system from source :-/

What I'm currently trying is to copy the directory: /nix/var/nix/profiles/per-user/root/channels/nixos/, applying the patch, and then nixos-rebuild test -I nixpkgs=/my/new/nixpkgs.

Well, quite a few packages depend on eds so rebuild of GNOME is to be expected. But since it is a systemd service, you might try to merge the following to your configuration:

let
  eds = pkgs.gnome3.evolution-data-server.overrideAttrs (super: {
    nativeBuildInputs = super.nativeBuildInputs ++ [ pkgs.wrapGAppsHook ];
    buildInputs = super.buildInputs ++ [ pkgs.glib-networking ];
    preFixup = "";
  });
in {
  services.gnome3.evolution-data-server.enable = false;

  environment.systemPackages = [ eds ];

  services.dbus.packages = [ eds ];

  systemd.packages = [ eds ];
}

You may need to reload the daemon definitions in systemd or restart your session or something to make the change express itself.

Yes, that works @jtojnar, thank you very much!

Closed in 4feaecc23de45b37a3ca1f4b886b951d0be6d8f1

Was this page helpful?
0 / 5 - 0 ratings