mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config.git
synced 2025-01-08 00:51:23 +00:00
feat: Filter userdata.json input so we don't pass undefined items
This commit is contained in:
parent
8276d8c8ce
commit
af2f0014c5
28
flake.nix
28
flake.nix
|
@ -25,9 +25,32 @@
|
|||
deployment
|
||||
./configuration.nix
|
||||
selfprivacy-api.nixosModules.default
|
||||
{
|
||||
(
|
||||
let
|
||||
deepFilter = ref: attrset:
|
||||
builtins.foldl'
|
||||
(acc: key:
|
||||
if builtins.hasAttr key ref then
|
||||
let
|
||||
value = attrset.${key};
|
||||
refValue = ref.${key};
|
||||
in
|
||||
acc // {
|
||||
${key} =
|
||||
if builtins.isAttrs value && builtins.isAttrs refValue then
|
||||
deepFilter refValue value
|
||||
else
|
||||
value;
|
||||
}
|
||||
else
|
||||
acc
|
||||
)
|
||||
{ }
|
||||
(builtins.attrNames attrset);
|
||||
in
|
||||
{ options, ... }: {
|
||||
# pass userdata (parsed from JSON) options to selfprivacy module
|
||||
selfprivacy = userdata;
|
||||
selfprivacy = deepFilter options.selfprivacy userdata;
|
||||
|
||||
# embed top-level flake source folder into the build
|
||||
environment.etc."selfprivacy/nixos-config-source".source =
|
||||
|
@ -47,6 +70,7 @@
|
|||
cp -r --no-preserve=all ${top-level-flake}/ -T /etc/nixos/
|
||||
'';
|
||||
}
|
||||
)
|
||||
]
|
||||
++
|
||||
# add SP modules, but constrain available config attributes for each
|
||||
|
|
Loading…
Reference in a new issue