diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index cfd2c8a31f97..267a2812a2a5 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -249,7 +249,9 @@ rec { in map (x: [("closure-" + baseNameOf x) x]) contentsList; } '' - printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > $out + mkdir $out + printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > $out/db.dump + perl ${pkgs.pathsFromGraph} closure-* > $out/storePaths ''; # Create a "layer" (set of files). @@ -571,7 +573,23 @@ rec { echo " be better to only have one layer that contains a nix store." # This requires Nix 1.12 or higher export NIX_REMOTE=local?root=$PWD - ${nixUnstable}/bin/nix-store --load-db < ${nixRegistration contents} + ${nixUnstable}/bin/nix-store --load-db < ${nixRegistration contents}/db.dump + + # We fill the store in order to run the 'verify' command that + # generates hash and size of output paths. + # Note when Nix 1.12 is be the stable one, the database dump + # generated by the exportReferencesGraph function will + # contains sha and size. See + # https://github.com/NixOS/nix/commit/c2b0d8749f7e77afc1c4b3e8dd36b7ee9720af4a + storePaths=$(cat ${nixRegistration contents}/storePaths) + echo "Copying everything to /nix/store (will take a while)..." + cp -prd $storePaths nix/store/ + ${nixUnstable}/bin/nix-store --verify --check-contents + + mkdir -p nix/var/nix/gcroots/docker/ + for i in ${lib.concatStringsSep " " contents}; do + ln -s $i nix/var/nix/gcroots/docker/$(basename $i) + done; '' + extraCommands; }); } |