git.iko.soy/typeable/nixpkgs
on master help sign in
dconf-editor: Respect NIX_GSETTINGS_OVERRIDES_DIR variable

We patch GLib to recognize NIX_GSETTINGS_OVERRIDES_DIR environment variable as a high priority source of settings schemas. This is used by NixOS modules for desktop environments like GNOME to set default values for stuff like background image. Since dconf-editor uses custom GSettingsSchemaSource, it bypassed that patch, leading to the dconf-editor showing different values from what other apps using the GLib’s default source saw. Let’s mirror our GLib patch in dconf-editor to fix that.

commit289a54ef8dc95e90ba20bb73751c5291d1aee881 authorJan Tojnar <jtojnar@gmail.com> dateTue 29 Mar 2022, 11:01 (5 years ago) parent710fed5
2 files changed+20
pkgs/desktops/gnome/core/dconf-editor/default.nix+6 pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch+14
pkgs/desktops/gnome/core/dconf-editor/default.nix+6
@@ -27,6 +27,12 @@ stdenv.mkDerivation rec {
2727 sha256 = "sha256-Vxr0x9rU8Em1PmzXKLea3fCMJ92ra8V7OW0hGGbueeM=";
2828 };
2929
30+ patches = [
31+ # Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
32+ # environment variable, to match what we patched GLib to do.
33+ ./schema-override-variable.patch
34+ ];
35+
3036 nativeBuildInputs = [
3137 meson
3238 ninja
pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patchnew file+14
@@ -0,0 +1,14 @@
1+diff --git a/editor/source-manager.vala b/editor/source-manager.vala
2+index 27b2b17a..87f7ba86 100644
3+--- a/editor/source-manager.vala
4++++ b/editor/source-manager.vala
5+@@ -121,6 +121,9 @@ private class SourceManager : Object
6+ source = try_prepend_dir (source, Path.build_filename (system_data_dirs [i], "glib-2.0", "schemas"));
7+ string user_data_dir = GLib.Environment.get_user_data_dir ();
8+ source = try_prepend_dir (source, Path.build_filename (user_data_dir, "glib-2.0", "schemas"));
9++ string? nix_var_schema_dir = GLib.Environment.get_variable ("NIX_GSETTINGS_OVERRIDES_DIR");
10++ if (nix_var_schema_dir != null)
11++ source = try_prepend_dir (source, (!) nix_var_schema_dir);
12+ string? var_schema_dir = GLib.Environment.get_variable ("GSETTINGS_SCHEMA_DIR");
13+ if (var_schema_dir != null)
14+ source = try_prepend_dir (source, (!) var_schema_dir);