···
{ config, lib, pkgs, ... }:
cfg = config.programs.dconf;
7
-
cfgDir = pkgs.symlinkJoin {
8
-
name = "dconf-system-config";
9
-
paths = map (x: "${x}/etc/dconf") cfg.packages;
11
-
mkdir -p $out/profile
14
-
concatStringsSep "\n" (
17
-
ln -s ${path} $out/profile/${name}
22
-
${pkgs.dconf}/bin/dconf update $out/db
6
+
# Generate dconf profile
7
+
mkDconfProfile = name: value:
8
+
pkgs.runCommand "dconf-profile" { } ''
9
+
mkdir -p $out/etc/dconf/profile/
10
+
cp ${value} $out/etc/dconf/profile/${name}
31
-
enable = mkEnableOption (lib.mdDoc "dconf");
16
+
enable = lib.mkEnableOption (lib.mdDoc "dconf");
33
-
profiles = mkOption {
34
-
type = types.attrsOf types.path;
36
-
description = lib.mdDoc "Set of dconf profile files, installed at {file}`/etc/dconf/profiles/«name»`.";
18
+
profiles = lib.mkOption {
19
+
type = with lib.types; attrsOf (oneOf [
23
+
description = lib.mdDoc "Attrset of dconf profiles.";
40
-
packages = mkOption {
41
-
type = types.listOf types.package;
26
+
packages = lib.mkOption {
27
+
type = lib.types.listOf lib.types.package;
description = lib.mdDoc "A list of packages which provide dconf profiles and databases in {file}`/etc/dconf`.";
48
-
###### implementation
34
+
config = lib.mkIf (cfg.profiles != { } || cfg.enable) {
35
+
programs.dconf.packages = lib.mapAttrsToList mkDconfProfile cfg.profiles;
50
-
config = mkIf (cfg.profiles != {} || cfg.enable) {
51
-
environment.etc.dconf = mkIf (cfg.profiles != {} || cfg.packages != []) {
37
+
environment.etc.dconf = lib.mkIf (cfg.packages != [ ]) {
38
+
source = pkgs.symlinkJoin {
39
+
name = "dconf-system-config";
40
+
paths = map (x: "${x}/etc/dconf") cfg.packages;
41
+
nativeBuildInputs = [ (lib.getBin pkgs.dconf) ];
43
+
if test -d $out/db; then
44
+
dconf update $out/db
services.dbus.packages = [ pkgs.dconf ];
···
environment.systemPackages = [ pkgs.dconf ];
62
-
# Needed for unwrapped applications
63
-
environment.sessionVariables.GIO_EXTRA_MODULES = mkIf cfg.enable [ "${pkgs.dconf.lib}/lib/gio/modules" ];
57
+
environment.sessionVariables = lib.mkIf cfg.enable {
58
+
# Needed for unwrapped applications
59
+
GIO_EXTRA_MODULES = [ "${pkgs.dconf.lib}/lib/gio/modules" ];