python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / programs / dconf.nix
blob7261a143528ff0a8dd25b24e287cbb388c7dc516
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.programs.dconf;
7   cfgDir = pkgs.symlinkJoin {
8     name = "dconf-system-config";
9     paths = map (x: "${x}/etc/dconf") cfg.packages;
10     postBuild = ''
11       mkdir -p $out/profile
12       mkdir -p $out/db
13     '' + (
14       concatStringsSep "\n" (
15         mapAttrsToList (
16           name: path: ''
17             ln -s ${path} $out/profile/${name}
18           ''
19         ) cfg.profiles
20       )
21     ) + ''
22       ${pkgs.dconf}/bin/dconf update $out/db
23     '';
24   };
27   ###### interface
29   options = {
30     programs.dconf = {
31       enable = mkEnableOption (lib.mdDoc "dconf");
33       profiles = mkOption {
34         type = types.attrsOf types.path;
35         default = {};
36         description = lib.mdDoc "Set of dconf profile files, installed at {file}`/etc/dconf/profiles/«name»`.";
37         internal = true;
38       };
40       packages = mkOption {
41         type = types.listOf types.package;
42         default = [];
43         description = lib.mdDoc "A list of packages which provide dconf profiles and databases in {file}`/etc/dconf`.";
44       };
45     };
46   };
48   ###### implementation
50   config = mkIf (cfg.profiles != {} || cfg.enable) {
51     environment.etc.dconf = mkIf (cfg.profiles != {} || cfg.packages != []) {
52       source = cfgDir;
53     };
55     services.dbus.packages = [ pkgs.dconf ];
57     systemd.packages = [ pkgs.dconf ];
59     # For dconf executable
60     environment.systemPackages = [ pkgs.dconf ];
62     # Needed for unwrapped applications
63     environment.sessionVariables.GIO_EXTRA_MODULES = mkIf cfg.enable [ "${pkgs.dconf.lib}/lib/gio/modules" ];
64   };