diff options
Diffstat (limited to 'nixpkgs/nixos/modules/programs/dconf.nix')
-rw-r--r-- | nixpkgs/nixos/modules/programs/dconf.nix | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/programs/dconf.nix b/nixpkgs/nixos/modules/programs/dconf.nix new file mode 100644 index 000000000000..9c9765b06b6f --- /dev/null +++ b/nixpkgs/nixos/modules/programs/dconf.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.dconf; + + mkDconfProfile = name: path: + { source = path; target = "dconf/profile/${name}"; }; + +in +{ + ###### interface + + options = { + programs.dconf = { + enable = mkEnableOption "dconf"; + + profiles = mkOption { + type = types.attrsOf types.path; + default = {}; + description = "Set of dconf profile files."; + internal = true; + }; + + }; + }; + + ###### implementation + + config = mkIf (cfg.profiles != {} || cfg.enable) { + environment.etc = optionals (cfg.profiles != {}) + (mapAttrsToList mkDconfProfile cfg.profiles); + + services.dbus.packages = [ pkgs.gnome3.dconf ]; + + environment.variables.GIO_EXTRA_MODULES = optional cfg.enable + "${pkgs.gnome3.dconf.lib}/lib/gio/modules"; + # https://github.com/NixOS/nixpkgs/pull/31891 + #environment.variables.XDG_DATA_DIRS = optional cfg.enable + # "$(echo ${pkgs.gnome3.gsettings-desktop-schemas}/share/gsettings-schemas/gsettings-desktop-schemas-*)"; + }; + +} |