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.
main
Jan Tojnar 2 years ago
parent 710fed5a24
commit 289a54ef8d
  1. 6
      pkgs/desktops/gnome/core/dconf-editor/default.nix
  2. 14
      pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch

@ -27,6 +27,12 @@ stdenv.mkDerivation rec {
sha256 = "sha256-Vxr0x9rU8Em1PmzXKLea3fCMJ92ra8V7OW0hGGbueeM=";
};
patches = [
# Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
# environment variable, to match what we patched GLib to do.
./schema-override-variable.patch
];
nativeBuildInputs = [
meson
ninja

@ -0,0 +1,14 @@
diff --git a/editor/source-manager.vala b/editor/source-manager.vala
index 27b2b17a..87f7ba86 100644
--- a/editor/source-manager.vala
+++ b/editor/source-manager.vala
@@ -121,6 +121,9 @@ private class SourceManager : Object
source = try_prepend_dir (source, Path.build_filename (system_data_dirs [i], "glib-2.0", "schemas"));
string user_data_dir = GLib.Environment.get_user_data_dir ();
source = try_prepend_dir (source, Path.build_filename (user_data_dir, "glib-2.0", "schemas"));
+ string? nix_var_schema_dir = GLib.Environment.get_variable ("NIX_GSETTINGS_OVERRIDES_DIR");
+ if (nix_var_schema_dir != null)
+ source = try_prepend_dir (source, (!) nix_var_schema_dir);
string? var_schema_dir = GLib.Environment.get_variable ("GSETTINGS_SCHEMA_DIR");
if (var_schema_dir != null)
source = try_prepend_dir (source, (!) var_schema_dir);
Loading…
Cancel
Save