{ name, config, lib, kubenix, ... }: with lib; let cfg = config.submodules.instances.instance; inherit (cfg.config.submodule) args; in { imports = with kubenix.modules; [ test submodules ]; test = { name = "submodules-simple"; description = "Simple k8s submodule test"; assertions = [ { message = "Submodule name is set"; assertion = cfg.name == "instance"; } { message = "Submodule version is set"; assertion = cfg.version == null; } { message = "Submodule config has submodule definition"; assertion = cfg.config.submodule.name == "submodule"; } { message = "Should have argument set"; assertion = args.value == "test"; } { message = "Should have submodule name set"; assertion = args.name == "instance"; } { message = "should have tag set"; assertion = elem "tag" cfg.config.submodule.tags; } ]; }; submodules.propagate.enable = true; submodules.imports = [ { module = { submodule, ... }: { imports = [ kubenix.modules.submodule ]; options.submodule.args = { name = mkOption { description = "Submodule name"; type = types.str; default = submodule.name; }; value = mkOption { description = "Submodule argument"; type = types.str; }; }; config = { submodule.name = "submodule"; submodule.tags = [ "tag" ]; }; }; } ]; submodules.instances.instance = { submodule = "submodule"; args = { value = "test"; }; }; }