diff --git a/pkgs/desktops/plasma-5/kde-gtk-config/0001-gsettings-schemas-path.patch b/pkgs/desktops/plasma-5/kde-gtk-config/0001-gsettings-schemas-path.patch new file mode 100644 index 000000000000..2fe4672f6757 --- /dev/null +++ b/pkgs/desktops/plasma-5/kde-gtk-config/0001-gsettings-schemas-path.patch @@ -0,0 +1,21 @@ +diff --git a/kded/gtkconfig.cpp b/kded/gtkconfig.cpp +index 5303636..199c4d5 100644 +--- a/kded/gtkconfig.cpp ++++ b/kded/gtkconfig.cpp +@@ -41,6 +41,16 @@ GtkConfig::GtkConfig(QObject *parent, const QVariantList&) : + kdeglobalsConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kdeglobals")))), + kwinConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kwinrc")))) + { ++ // Add GSETTINGS_SCHEMAS_PATH to the front of XDG_DATA_DIRS. ++ // Normally this would be done by wrapGAppsHook, but this plugin ++ // (shared object) cannot be wrapped. ++ QByteArray xdgdata = qgetenv("XDG_DATA_DIRS"); ++ if (!xdgdata.isEmpty()) { ++ xdgdata.push_front(":"); ++ } ++ xdgdata.push_front(QByteArray(GSETTINGS_SCHEMAS_PATH)); ++ qputenv("XDG_DATA_DIRS", xdgdata); ++ + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerService(QStringLiteral("org.kde.GtkConfig")); + dbus.registerObject(QStringLiteral("/GtkConfig"), this, QDBusConnection::ExportScriptableSlots); diff --git a/pkgs/desktops/plasma-5/kde-gtk-config/default.nix b/pkgs/desktops/plasma-5/kde-gtk-config/default.nix index a631efcc9533..c1ed6dbd6c6e 100644 --- a/pkgs/desktops/plasma-5/kde-gtk-config/default.nix +++ b/pkgs/desktops/plasma-5/kde-gtk-config/default.nix @@ -18,6 +18,9 @@ mkDerivation { "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" "-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/" ]; + # The gtkconfig KDED module will crash the daemon if the GSettings schemas + # aren't found. + patches = [ ./0001-gsettings-schemas-path.patch ]; preConfigure = '' NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\"" '';