nixlets/lib/default.nix

81 lines
1.5 KiB
Nix
Raw Normal View History

2024-03-06 10:23:25 +00:00
{
inputs,
lib,
...
} @ attrs:
with lib; {
mkValues = file: {rawValues, ...} @ args:
(lib.evalModules {
specialArgs = {
utils = import ./. attrs;
};
modules = [
file
({...}: {
# pass through all args to the values.nix module
config =
rawValues
// {
_module.args = args;
};
})
];
})
.config;
mkNestedOption = options:
mkOption {
type = types.submodule {
inherit options;
};
default = {};
};
mkNixlet = path: let
utils = import ./. attrs;
in
{
rawValues,
project,
...
} @ args: {
kubenix,
lib,
...
} @ attrs: let
values = utils.mkValues "${path}/values.nix" args;
in {
imports = [path];
# make values accessible from every imported file
_module.args = {inherit values;};
};
renderNixlet = {
system,
project,
nixlet,
2024-03-20 15:39:22 +01:00
values ? {},
2024-03-06 10:23:25 +00:00
overrides ? {...}: {},
}:
(inputs.kubenix.evalModules.${system} {
module = {kubenix, ...}: {
imports = with kubenix.modules; [
k8s
helm
docker
2024-03-20 15:48:21 +01:00
files
2024-03-06 10:23:25 +00:00
(nixlet {
# all these args are available in values.nix
inherit project;
rawValues = values;
})
overrides
];
kubenix.project = project;
};
})
.config
.kubernetes
.resultYAML;
}