By default only build an image if service.image is set

This commit is contained in:
Robert Hensing 2019-03-27 22:03:50 +01:00
parent 1726ef45f1
commit cca1f68a4f

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }: { pkgs, lib, config, options, ... }:
let let
inherit (lib) types mkOption; inherit (lib) types mkOption;
inherit (types) attrsOf listOf nullOr package str unspecified bool; inherit (types) attrsOf listOf nullOr package str unspecified bool;
@ -32,6 +32,8 @@ let
done; done;
''; '';
}; };
priorityIsDefault = option: option.highestPrio >= (lib.mkDefault true).priority;
in in
{ {
options = { options = {
@ -58,8 +60,11 @@ in
Whether to build this image with Nixpkgs' Whether to build this image with Nixpkgs'
<code>dockerTools.buildLayeredImage</code> <code>dockerTools.buildLayeredImage</code>
and then load it with <code>docker load</code>. and then load it with <code>docker load</code>.
By default, an image will be built with Nix unless <option>service.image</option>
is set. See also <option>image.name</option>, which defaults to
the service name.
''; '';
default = true;
}; };
image.name = mkOption { image.name = mkOption {
type = str; type = str;
@ -111,5 +116,7 @@ in
service.image = lib.mkDefault "${config.build.imageName}:${config.build.imageTag}"; service.image = lib.mkDefault "${config.build.imageName}:${config.build.imageTag}";
image.rawConfig.Cmd = config.image.command; image.rawConfig.Cmd = config.image.command;
image.nixBuild = lib.mkDefault (priorityIsDefault options.service.image);
}; };
} }