1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-05 10:49:44 +01:00

dconf: add module

This module allows unified configuration of dconf settings.
This commit is contained in:
Robert Helgesson 2018-11-04 19:51:40 +01:00
parent 235a6617c4
commit b2cc186d22
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
3 changed files with 91 additions and 0 deletions

83
modules/misc/dconf.nix Normal file
View file

@ -0,0 +1,83 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dconf;
dag = config.lib.dag;
toDconfIni = generators.toINI { mkKeyValue = mkIniKeyValue; };
mkIniKeyValue = key: value:
let
tweakVal = v:
if isString v then "'${v}'"
else if isList v then "[" + concatMapStringsSep "," tweakVal v + "]"
else if isBool v then (if v then "true" else "false")
else toString v;
in
"${key}=${tweakVal value}";
primitive = with types; either bool (either int str);
in
{
meta.maintainers = [ maintainers.gnidorah maintainers.rycee ];
options = {
dconf = {
enable = mkOption {
type = types.bool;
default = true;
visible = false;
description = ''
Whether to enable dconf settings.
'';
};
settings = mkOption {
type = with types;
attrsOf (attrsOf (either primitive (listOf primitive)));
default = {};
example = literalExample ''
{
"org/gnome/calculator" = {
button-mode = "programming";
show-thousands = true;
base = 10;
word-size = 64;
};
}
'';
description = ''
Settings to write to the dconf configuration system.
'';
};
};
};
config = mkIf (cfg.enable && cfg.settings != {}) {
home.activation.dconfSettings = dag.entryAfter ["installPackages"] (
let
iniFile = pkgs.writeText "hm-dconf.ini" (toDconfIni cfg.settings);
in
''
if [[ -v DBUS_SESSION_BUS_ADDRESS ]]; then
DCONF_DBUS_RUN_SESSION=""
else
DCONF_DBUS_RUN_SESSION="${pkgs.dbus}/bin/dbus-run-session"
fi
if [[ -v DRY_RUN ]]; then
echo $DCONF_DBUS_RUN_SESSION ${pkgs.gnome3.dconf}/bin/dconf load / "<" ${iniFile}
else
$DCONF_DBUS_RUN_SESSION ${pkgs.gnome3.dconf}/bin/dconf load / < ${iniFile}
fi
unset DCONF_DBUS_RUN_SESSION
''
);
};
}

View file

@ -904,6 +904,13 @@ in
A new module is available: 'programs.jq'. A new module is available: 'programs.jq'.
''; '';
} }
{
time = "2018-12-24T16:26:16+00:00";
message = ''
A new module is available: 'dconf'.
'';
}
]; ];
}; };
} }

View file

@ -25,6 +25,7 @@ let
(loadModule ./files.nix { }) (loadModule ./files.nix { })
(loadModule ./home-environment.nix { }) (loadModule ./home-environment.nix { })
(loadModule ./manual.nix { }) (loadModule ./manual.nix { })
(loadModule ./misc/dconf.nix { })
(loadModule ./misc/fontconfig.nix { }) (loadModule ./misc/fontconfig.nix { })
(loadModule ./misc/gtk.nix { }) (loadModule ./misc/gtk.nix { })
(loadModule ./misc/lib.nix { }) (loadModule ./misc/lib.nix { })