flake: format

This commit is contained in:
Bryton Hall 2023-06-03 03:11:07 -04:00
parent eb3ec20f46
commit baa1a6c949
16 changed files with 86 additions and 72 deletions

View file

@ -1,8 +1,8 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
module = { kubenix, ... }: { module = {kubenix, ...}: {
# instead of defining everything inline, let's import it # instead of defining everything inline, let's import it
imports = [ ./module.nix ]; imports = [./module.nix];
# annotate the generated resources with a project name # annotate the generated resources with a project name
kubenix.project = "example"; kubenix.project = "example";

View file

@ -1,5 +1,5 @@
{ kubenix, ... }: { {kubenix, ...}: {
imports = [ kubenix.modules.k8s ]; imports = [kubenix.modules.k8s];
kubernetes.resources = { kubernetes.resources = {
deployments.nginx.spec = { deployments.nginx.spec = {
@ -51,10 +51,12 @@
services.nginx.spec = { services.nginx.spec = {
selector.app = "nginx"; selector.app = "nginx";
ports = [{ ports = [
name = "http"; {
port = 80; name = "http";
}]; port = 80;
}
];
}; };
}; };
} }

View file

@ -1,7 +1,7 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
module = { kubenix, ... }: { module = {kubenix, ...}: {
imports = [ kubenix.modules.helm ]; imports = [kubenix.modules.helm];
kubernetes.helm.releases.example = { kubernetes.helm.releases.example = {
chart = kubenix.lib.helm.fetch { chart = kubenix.lib.helm.fetch {
repo = "https://charts.bitnami.com/bitnami"; repo = "https://charts.bitnami.com/bitnami";

View file

@ -1,10 +1,15 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
module = { kubenix, config, pkgs, ... }: { module = {
imports = with kubenix.modules; [ k8s docker ]; kubenix,
config,
pkgs,
...
}: {
imports = with kubenix.modules; [k8s docker];
docker = { docker = {
registry.url = "docker.somewhere.io"; registry.url = "docker.somewhere.io";
images.example.image = pkgs.callPackage ./image.nix { }; images.example.image = pkgs.callPackage ./image.nix {};
}; };
kubernetes.resources.pods.example.spec.containers = { kubernetes.resources.pods.example.spec.containers = {
custom.image = config.docker.images.example.path; custom.image = config.docker.images.example.path;

View file

@ -1,7 +1,10 @@
{ dockerTools, nginx }: {
dockerTools,
nginx,
}:
dockerTools.buildLayeredImage { dockerTools.buildLayeredImage {
name = "nginx"; name = "nginx";
contents = [ nginx ]; contents = [nginx];
extraCommands = '' extraCommands = ''
mkdir -p etc mkdir -p etc
chmod u+w etc chmod u+w etc
@ -9,9 +12,9 @@ dockerTools.buildLayeredImage {
echo "nginx:x:1000:nginx" > etc/group echo "nginx:x:1000:nginx" > etc/group
''; '';
config = { config = {
Cmd = [ "nginx" "-c" "/etc/nginx/nginx.conf" ]; Cmd = ["nginx" "-c" "/etc/nginx/nginx.conf"];
ExposedPorts = { ExposedPorts = {
"80/tcp" = { }; "80/tcp" = {};
}; };
}; };
} }

View file

@ -1,7 +1,7 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
module = { kubenix, ... }: { module = {kubenix, ...}: {
imports = [ ./module.nix ]; imports = [./module.nix];
kubenix.project = "multi-namespace-example"; kubenix.project = "multi-namespace-example";
kubernetes.version = "1.24"; kubernetes.version = "1.24";

View file

@ -54,9 +54,9 @@
kubernetes = lib.mkMerge [ kubernetes = lib.mkMerge [
# Use instance name as namespace # Use instance name as namespace
{ namespace = name; } {namespace = name;}
# Create namespace object # Create namespace object
{ resources.namespaces.${name} = {}; } {resources.namespaces.${name} = {};}
# All resources defined here will use the above namespace # All resources defined here will use the above namespace
args.kubernetes args.kubernetes
]; ];

View file

@ -1,11 +1,11 @@
# let's creata a function whose only input is the kubenix package # let's creata a function whose only input is the kubenix package
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
# evalModules is our main entrypoint # evalModules is our main entrypoint
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
# to it, we pass a module that accepts a (different) kubenix object # to it, we pass a module that accepts a (different) kubenix object
module = { kubenix, ... }: { module = {kubenix, ...}: {
# in order to define options, we need to import their definitions # in order to define options, we need to import their definitions
imports = [ kubenix.modules.k8s ]; imports = [kubenix.modules.k8s];
# now we have full access to define Kubernetes resources # now we have full access to define Kubernetes resources
kubernetes.resources.pods = { kubernetes.resources.pods = {
# "example" is the name of our pod # "example" is the name of our pod

View file

@ -1,7 +1,7 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.${builtins.currentSystem} { kubenix.evalModules.${builtins.currentSystem} {
module = { kubenix, ... }: { module = {kubenix, ...}: {
imports = [ kubenix.modules.k8s ]; imports = [kubenix.modules.k8s];
kubernetes.resources.secrets.example.stringData = { kubernetes.resources.secrets.example.stringData = {
password = "ref+file:///path/to/secret"; password = "ref+file:///path/to/secret";
}; };

View file

@ -1,15 +1,17 @@
{ kubenix ? import ../../../.. }: {kubenix ? import ../../../..}:
kubenix.evalModules.x86_64-linux { kubenix.evalModules.x86_64-linux {
module = { kubenix, ... }: { module = {kubenix, ...}: {
imports = [ kubenix.modules.testing ]; imports = [kubenix.modules.testing];
testing = { testing = {
tests = [ ./test.nix ]; tests = [./test.nix];
common = [{ common = [
features = [ "k8s" ]; {
options = { features = ["k8s"];
kubernetes.version = "1.24"; options = {
}; kubernetes.version = "1.24";
}]; };
}
];
}; };
}; };
} }

View file

@ -1,5 +1,9 @@
{ kubenix, test, ... }: { {
imports = [ kubenix.modules.test ]; kubenix,
test,
...
}: {
imports = [kubenix.modules.test];
test = { test = {
name = "example"; name = "example";

View file

@ -13,19 +13,13 @@
}; };
}; };
outputs = { outputs = inputs @ {self, ...}:
self,
nixpkgs,
...
} @ inputs:
(inputs.flake-utils.lib.eachDefaultSystem ( (inputs.flake-utils.lib.eachDefaultSystem (
system: let system: let
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
overlays = [
self.overlays.default
];
config.allowUnsupportedSystem = true;
inherit system; inherit system;
overlays = [self.overlays.default];
config.allowUnsupportedSystem = true;
}; };
inherit (pkgs) lib; inherit (pkgs) lib;

View file

@ -170,21 +170,25 @@ with lib; let
else else
# make it an attribute set of submodules if only x-kubernetes-patch-merge-key is present, or # make it an attribute set of submodules if only x-kubernetes-patch-merge-key is present, or
# x-kubernetes-patch-merge-key == x-kubernetes-list-map-keys. # x-kubernetes-patch-merge-key == x-kubernetes-list-map-keys.
if hasAttr "properties" swagger.definitions.${refDefinition property.items} && if
hasAttr "name" swagger.definitions.${refDefinition property.items}.properties hasAttr "properties" swagger.definitions.${refDefinition property.items}
&& hasAttr "name" swagger.definitions.${refDefinition property.items}.properties
then let then let
mergeKey = "name"; mergeKey = "name";
in { in {
type = requiredOrNot (coerceAttrsOfSubmodulesToListByKey (refDefinition property.items) mergeKey (if hasAttr "x-kubernetes-list-map-keys" property then property."x-kubernetes-list-map-keys" else [])); type = requiredOrNot (coerceAttrsOfSubmodulesToListByKey (refDefinition property.items) mergeKey (
if hasAttr "x-kubernetes-list-map-keys" property
then property."x-kubernetes-list-map-keys"
else []
));
apply = attrsToList; apply = attrsToList;
} }
else {
else { type =
type = if (refDefinition property.items) == _name
if (refDefinition property.items) == _name then types.unspecified # do not allow self-referential values
then types.unspecified # do not allow self-referential values else requiredOrNot (types.listOf (submoduleOf definitions (refDefinition property.items)));
else requiredOrNot (types.listOf (submoduleOf definitions (refDefinition property.items))); }
}
# in other case it only references a simple type # in other case it only references a simple type
else { else {
type = requiredOrNot (types.listOf (mapType property.items)); type = requiredOrNot (types.listOf (mapType property.items));

View file

@ -19,7 +19,7 @@ with lib;
# kubernetes version to template chart for # kubernetes version to template chart for
kubeVersion ? null, kubeVersion ? null,
# whether to include CRD # whether to include CRD
includeCRDs ? false includeCRDs ? false,
}: let }: let
valuesJsonFile = builtins.toFile "${name}-values.json" (builtins.toJSON values); valuesJsonFile = builtins.toFile "${name}-values.json" (builtins.toJSON values);
in in
@ -31,7 +31,7 @@ with lib;
${optionalString (kubeVersion != null) "--kube-version ${kubeVersion}"} \ ${optionalString (kubeVersion != null) "--kube-version ${kubeVersion}"} \
${optionalString (namespace != null) "--namespace ${namespace}"} \ ${optionalString (namespace != null) "--namespace ${namespace}"} \
${optionalString (values != {}) "-f ${valuesJsonFile}"} \ ${optionalString (values != {}) "-f ${valuesJsonFile}"} \
${optionalString (includeCRDs) "--include-crds"} \ ${optionalString includeCRDs "--include-crds"} \
${chart} >resources.yaml ${chart} >resources.yaml
# split multy yaml file into multiple files # split multy yaml file into multiple files

View file

@ -335,12 +335,12 @@ in {
customTypes = mkOption { customTypes = mkOption {
description = "Custom resource types to make API for"; description = "Custom resource types to make API for";
example = { example = {
helmchartconfig = { helmchartconfig = {
attrName = "helmchartconfig"; attrName = "helmchartconfig";
kind = "HelmChartConfig"; kind = "HelmChartConfig";
version = "v1"; version = "v1";
group = "helm.cattle.io"; group = "helm.cattle.io";
}; };
}; };
type = type =
coerceListOfSubmodulesToAttrs coerceListOfSubmodulesToAttrs