diff --git a/default.nix b/default.nix index 3b04744..bf1f569 100644 --- a/default.nix +++ b/default.nix @@ -7,7 +7,10 @@ with import ./lib.nix { inherit pkgs; inherit (pkgs) lib; }; let evalKubernetesModules = configuration: evalModules { - modules = [./kubernetes.nix ./modules.nix configuration]; + modules = [ + (import ./kubernetes.nix {}) + ./modules.nix configuration + ]; args = { inherit pkgs; name = "default"; diff --git a/kubernetes.nix b/kubernetes.nix index 7e87247..3f99d80 100644 --- a/kubernetes.nix +++ b/kubernetes.nix @@ -1,3 +1,5 @@ +{ customResourceDefinitions ? null }: + { config, lib, k8s, pkgs, ... }: with lib; @@ -282,7 +284,11 @@ let } // extraOptions; })); } - ) config.kubernetes.resources.customResourceDefinitions; + ) ( + if customResourceDefinitions == null + then config.kubernetes.resources.customResourceDefinitions + else customResourceDefinitions + ); in { inherit swaggerDefinitions definitions exportedDefinitions kubernetesResourceOptions customResourceOptions; }; diff --git a/modules.nix b/modules.nix index de09be3..715837f 100644 --- a/modules.nix +++ b/modules.nix @@ -8,7 +8,10 @@ let evalK8SModule = {module, name, configuration}: evalModules { modules = [ - ./kubernetes.nix ./modules.nix module configuration + (import ./kubernetes.nix { + customResourceDefinitions = config.kubernetes.resources.customResourceDefinitions; + }) + ./modules.nix module configuration ] ++ config.kubernetes.defaultModuleConfiguration; args = { inherit pkgs k8s name; @@ -88,6 +91,12 @@ in { ) config.kubernetes.modules ); + kubernetes.customResources = mkMerge ( + mapAttrsToList (name: module: + prefixResources (moduleToAttrs module.evaledModule.config.kubernetes.customResources) module.name + ) config.kubernetes.modules + ); + kubernetes.defaultModuleConfiguration = [{ config.kubernetes.version = mkDefault config.kubernetes.version; }]; diff --git a/test/modules.nix b/test/modules.nix index d05cce8..bdf2ef4 100644 --- a/test/modules.nix +++ b/test/modules.nix @@ -39,6 +39,11 @@ with lib; metadata.name = mkForce "${name}-nginx"; } ]; + + kubernetes.customResources.cron.my-awesome-cron-object = mkMerge [ + (k8s.loadJSON ./cr.json) + {metadata.name = name;} + ]; }; };