blob: 3d0d3f8df6a7e579b72dad6689fdf3d4a971cc1b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
{ bionix }:
with bionix;
with lib;
let
attrsToGridssConfigString = attrsToGridssConfigStringPrepend "";
attrsToGridssConfigStringPrepend = prepend: attrs:
concatStringsSep "\n" (
attrValues (
mapAttrs
(name: attr: prepend + (iniLine name attr))
attrs));
iniLine = name: attr:
let attrType = builtins.typeOf attr;
in
if (iniLineByAttrType ? "${attrType}")
then (iniLineByAttrType."${attrType}" name attr)
else
builtins.throw (
"`gridssConfig` cannot convert attribute of type \"" + attrType + "\"."
);
iniLineByAttrType = {
string = name: attr: name + " = " + attr;
int = name: attr: name + " = " + builtins.toString attr;
float = name: attr: name + " = " + (
builtins.head (
builtins.match "([0-9]+\.0?[1-9]*)0+" (builtins.toString attr)
));
bool = name: attr: name + " = " + (if attr then "true" else "false");
set = name: attrsToGridssConfigStringPrepend (name + ".");
# Allows for repeated fields (e.g. for adapters):
list = name: attr: concatStringsSep "\n" (map (iniLine name) attr);
};
in
configAttrs: (pkgs.writeText
"gridss.properties.override"
((attrsToGridssConfigString configAttrs) + "\n"))
|