summary refs log tree commit diff
path: root/pkgs/build-support/docker
diff options
context:
space:
mode:
authorvroad <396351+vroad@users.noreply.github.com>2021-03-19 10:25:26 +0900
committervroad <396351+vroad@users.noreply.github.com>2021-03-19 10:25:26 +0900
commitb4d92811befd66f5ab86450b650e6f6c033f956b (patch)
tree99e4b0186973c093bf3a357d06fb0e75823def0c /pkgs/build-support/docker
parent3ee1fb4f094db89cc40d78505b8d5d1eabf161d3 (diff)
downloadnixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar.gz
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar.bz2
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar.lz
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar.xz
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.tar.zst
nixpkgs-b4d92811befd66f5ab86450b650e6f6c033f956b.zip
dockerTools.streamLayeredImage: add fakeRootCommands option
Diffstat (limited to 'pkgs/build-support/docker')
-rw-r--r--pkgs/build-support/docker/default.nix22
1 files changed, 16 insertions, 6 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index fec289f0ff1..8453ea4deed 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -7,6 +7,7 @@
   coreutils,
   docker,
   e2fsprogs,
+  fakeroot,
   findutils,
   go,
   jq,
@@ -738,6 +739,9 @@ rec {
     created ? "1970-01-01T00:00:01Z",
     # Optional bash script to run on the files prior to fixturizing the layer.
     extraCommands ? "",
+    # Optional bash script to run inside fakeroot environment.
+    # Could be used for changing ownership of files in customisation layer.
+    fakeRootCommands ? "",
     # We pick 100 to ensure there is plenty of room for extension. I
     # believe the actual maximum is 128.
     maxLayers ? 100
@@ -764,18 +768,24 @@ rec {
         name = "${baseName}-customisation-layer";
         paths = contentsList;
         inherit extraCommands;
+        inherit fakeRootCommands;
+        nativeBuildInputs = [ fakeroot ];
         postBuild = ''
           mv $out old_out
           (cd old_out; eval "$extraCommands" )
 
           mkdir $out
 
-          tar \
-            --sort name \
-            --owner 0 --group 0 --mtime "@$SOURCE_DATE_EPOCH" \
-            --hard-dereference \
-            -C old_out \
-            -cf $out/layer.tar .
+          fakeroot bash -c '
+            set -e
+            cd old_out
+            eval "$fakeRootCommands"
+            tar \
+              --sort name \
+              --numeric-owner --mtime "@$SOURCE_DATE_EPOCH" \
+              --hard-dereference \
+              -cf $out/layer.tar .
+          '
 
           sha256sum $out/layer.tar \
             | cut -f 1 -d ' ' \