dconf: make settings have type gvariant

Closes #835, #1094, #1095
This commit is contained in:
Robert Helgesson 2020-03-09 23:25:45 +01:00
parent ac9e44a831
commit 0f11a79e02
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -9,22 +9,7 @@ let
toDconfIni = generators.toINI { mkKeyValue = mkIniKeyValue; };
mkIniKeyValue = key: value:
let
tweakVal = v:
if isString v then "'${v}'"
else if isList v then tweakList v
else if isBool v then (if v then "true" else "false")
else toString v;
# Assume empty list is a list of strings, see #769
tweakList = v:
if v == [] then "@as []"
else "[" + concatMapStringsSep "," tweakVal v + "]";
in
"${key}=${tweakVal value}";
primitive = with types; either bool (either int (either float str));
"${key}=${toString (hm.gvariant.mkValue value)}";
in
@ -43,8 +28,7 @@ in
};
settings = mkOption {
type = with types;
attrsOf (attrsOf (either primitive (listOf primitive)));
type = with types; attrsOf (attrsOf hm.types.gvariant);
default = {};
example = literalExample ''
{
@ -53,6 +37,7 @@ in
show-thousands = true;
base = 10;
word-size = 64;
window-position = lib.hm.gvariant.mkTuple [100 100];
};
}
'';