From 1f79b943c0543b8044441cf41a25ea54ed49d6cc Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 15 Nov 2017 03:36:35 +0100 Subject: [PATCH] glib: recognize NIX_GSETTINGS_OVERRIDES_DIR variable For some reason, the GNOME 3.26 update broke the overrides. It turns out the overrides now need to come before the overriden schemas in the XDG_DATA_DIRS variable. This is not possible in general due to applications prefixing the variable (e.g. in wrapGAppsHook). To fix this, a new environment variable NIX_GSETTINGS_OVERRIDES_DIR was introduced. It has greater priority than XDG_DATA_DIRS but lower than GSETTINGS_SCHEMA_DIR. A separate variable was chosen in order not to block the built-in one for users. --- pkgs/development/libraries/glib/default.nix | 3 ++- .../libraries/glib/schema-override-variable.patch | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/glib/schema-override-variable.patch diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index b82fd5f1e29..e270cd5ea7b 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -55,7 +55,8 @@ stdenv.mkDerivation rec { }; patches = optional stdenv.isDarwin ./darwin-compilation.patch - ++ optional doCheck ./skip-timer-test.patch; + ++ optional doCheck ./skip-timer-test.patch + ++ [ ./schema-override-variable.patch ]; outputs = [ "out" "dev" "devdoc" ]; outputBin = "dev"; diff --git a/pkgs/development/libraries/glib/schema-override-variable.patch b/pkgs/development/libraries/glib/schema-override-variable.patch new file mode 100644 index 00000000000..1cb5a730351 --- /dev/null +++ b/pkgs/development/libraries/glib/schema-override-variable.patch @@ -0,0 +1,12 @@ +--- a/gio/gsettingsschema.c ++++ b/gio/gsettingsschema.c +@@ -352,6 +352,9 @@ + + try_prepend_data_dir (g_get_user_data_dir ()); + ++ if ((path = g_getenv ("NIX_GSETTINGS_OVERRIDES_DIR")) != NULL) ++ try_prepend_dir (path); ++ + if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL) + try_prepend_dir (path); +