utils: add mkArionProject helper function

Changed files
+36
docs
src
global
+15
docs/src/utils/mkArionProject.md
···
+
# `_utils.mkArionProject`
+
`(lambda: freeformAttrset) -> freeformAttrset`
+
+
Flattened Arion project configuration
+
+
## Example
+
```nix
+
{_utils, ...}: {
+
virtualisation.arion.projects."cop" = _utils.mkArionProject (config': {
+
networks.main.enable_ipv6 = true;
+
});
+
}
+
```
+
+
See <https://docs.hercules-ci.com/arion/options> for more information.
+21
global/utils.nix
···
content = builtins.toJSON attrset;
}
);
+
+
# mkArionProject = options: let
+
# directOptions = ["serviceName"];
+
# in lib.filterAttrs (key: _: builtins.elem key directOptions) options // {
+
# settings = builtins.removeAttrs options directOptions;
+
# };
+
+
mkArionProject = func: let
+
directOptions = ["serviceName"];
+
fixed = lib.fix func;
+
in
+
lib.filterAttrs (key: _: builtins.elem key directOptions) fixed
+
// {
+
settings.imports = [
+
(
+
f: builtins.trace f builtins.removeAttrs fixed directOptions
+
)
+
];
+
};
+
+
# mkArionProject = lib.fix _mkArionProject;
}