GSettings is a part of GLib library for handling application settings. It supports multiple storage backends, one of which is dconf database. This is a general Linux knowledge and we also briefly mention it in the NixOS manual.
GSettings is a bit more high level and it ensures the keys are set to correct values according to a schema. In contrast, dconf database will just store whatever GVariant value you give it.
dconf organizes values into a tree of named nodes. The inner nodes are called directories and leafs are keys. The root has an empty string as a name. Keys are GVariant typed values and can be referred to using paths, which consist of the sequence of names of nodes starting at the root, separated by /
.
Each GSettings schema has an id and a slash-separated path, which maps directly to a dconf directory path. Though, gsettings
command will expect you to just use schema ID for non-relocatable schemas, and will derive the path for a key as follows: /${builtins.replaceStrings [ "." ] [ "/" ] schemaId}/${keyName}
.
There is no such key in that schema.
Perhaps you meant org.gnome.desktop.session
. Though note that its type is uint32
.
The plan is to eventually add GSettings module, which will provide validation against schemas to warn against wrong use like this.
We should definitely document the new programs.dconf.profiles.<profile>.databases
in GNOME chapter of NixOS manual. It is on my to do list but I have not gotten around to it yet. I want to finish Support NixOS module · Issue #85 · nix-community/dconf2nix · GitHub first so that I can mention it there. It is also tied into the deprecation of extraGSettingsOverrides
in favour of declarative dconf
databases, which I want to do after proper documentation is ready.
GDM itself has no GSettings schemas, those are all from other GNOME components that only run as gdm
user, which uses the gdm
dconf profile.
The /etc/gdm/custom.conf
controlled by that NixOS option has nothing to do with any of that. <rant>This is why I do not like NixOS options for settings, they often abstract away what is actually being set, reducing the transferability of general Linux knowledge.</rant>