mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
63 lines
1.7 KiB
Nix
63 lines
1.7 KiB
Nix
{ config, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
globalConfig = config;
|
|
in {
|
|
options.docker.registry.url = mkOption {
|
|
description = "Default registry url where images are published";
|
|
type = types.str;
|
|
default = "";
|
|
};
|
|
|
|
options.docker.images = mkOption {
|
|
description = "Attribute set of docker images that should be published";
|
|
type = types.attrsOf (types.submodule ({ name, config, ... }: {
|
|
options = {
|
|
image = mkOption {
|
|
description = "Docker image to publish";
|
|
type = types.nullOr types.package;
|
|
default = null;
|
|
};
|
|
|
|
name = mkOption {
|
|
description = "Desired docker image name";
|
|
type = types.str;
|
|
default = builtins.unsafeDiscardStringContext config.image.imageName;
|
|
};
|
|
|
|
tag = mkOption {
|
|
description = "Desired docker image tag";
|
|
type = types.str;
|
|
default = builtins.unsafeDiscardStringContext config.image.imageTag;
|
|
};
|
|
|
|
registry = mkOption {
|
|
description = "Docker registry url where image is published";
|
|
type = types.str;
|
|
default = globalConfig.docker.registry.url;
|
|
};
|
|
|
|
path = mkOption {
|
|
description = "Full docker image path";
|
|
type = types.str;
|
|
default =
|
|
if config.registry != ""
|
|
then "${config.registry}/${config.name}:${config.tag}"
|
|
else "${config.name}:${config.tag}";
|
|
};
|
|
};
|
|
}));
|
|
default = {};
|
|
};
|
|
|
|
options.docker.export = mkOption {
|
|
description = "List of images to export";
|
|
type = types.listOf (types.package);
|
|
default = [];
|
|
};
|
|
|
|
config.docker.export = mapAttrsToList (_: i: i.image)
|
|
(filterAttrs (_: i: i.registry != null)config.docker.images);
|
|
}
|