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; }; toDconfIni = generators.toINI { mkKeyValue = mkIniKeyValue; };
mkIniKeyValue = key: value: mkIniKeyValue = key: value:
let "${key}=${toString (hm.gvariant.mkValue value)}";
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));
in in
@ -43,8 +28,7 @@ in
}; };
settings = mkOption { settings = mkOption {
type = with types; type = with types; attrsOf (attrsOf hm.types.gvariant);
attrsOf (attrsOf (either primitive (listOf primitive)));
default = {}; default = {};
example = literalExample '' example = literalExample ''
{ {
@ -53,6 +37,7 @@ in
show-thousands = true; show-thousands = true;
base = 10; base = 10;
word-size = 64; word-size = 64;
window-position = lib.hm.gvariant.mkTuple [100 100];
}; };
} }
''; '';