diff --git a/doc/functions.xml b/doc/functions.xml
index 746ef7131f8..c23f6aa2596 100644
--- a/doc/functions.xml
+++ b/doc/functions.xml
@@ -521,7 +521,7 @@ merge:"diff3"
tag specifies the tag of the resulting image. By
- default it's latest.
+ default it's null, which indicates that the nix output hash will be used as tag.
diff --git a/nixos/doc/manual/release-notes/rl-1809.xml b/nixos/doc/manual/release-notes/rl-1809.xml
index 51e77d24a74..13b244e12f8 100644
--- a/nixos/doc/manual/release-notes/rl-1809.xml
+++ b/nixos/doc/manual/release-notes/rl-1809.xml
@@ -127,6 +127,12 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
Make sure the key file is accessible to the daemon.
+
+
+ dockerTools.buildImage now uses null as default value for tag,
+ which indicates that the nix output hash will be used as tag.
+
+
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index b01f0b72272..ff45cf81d7e 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -420,8 +420,8 @@ rec {
buildImage = args@{
# Image name.
name,
- # Image tag.
- tag ? "latest",
+ # Image tag, when null then the nix output hash will be used.
+ tag ? null,
# Parent image, to append to.
fromImage ? null,
# Name of the parent image; will be read from the image otherwise.
@@ -471,12 +471,19 @@ rec {
buildInputs = [ jshon pigz coreutils findutils jq ];
# Image name and tag must be lowercase
imageName = lib.toLower name;
- imageTag = lib.toLower tag;
+ imageTag = if tag == null then "" else lib.toLower tag;
inherit fromImage baseJson;
layerClosure = writeReferencesToFile layer;
passthru.buildArgs = args;
passthru.layer = layer;
} ''
+ ${lib.optionalString (tag == null) ''
+ outName="$(basename "$out")"
+ outHash=$(echo "$outName" | cut -d - -f 1)
+
+ imageTag=$outHash
+ ''}
+
# Print tar contents:
# 1: Interpreted as relative to the root directory
# 2: With no trailing slashes on directories