diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 75e279afdc372..1396e041f6877 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -10,8 +10,7 @@ lib, pkgs, pigz, - nixUnstable, - perl, + nix, runCommand, rsync, shadow, @@ -22,6 +21,7 @@ writeReferencesToFile, writeScript, writeText, + closureInfo }: # WARNING: this API is unstable and may be subject to backwards-incompatible changes in the future. @@ -228,19 +228,6 @@ rec { ${text} ''; - nixRegistration = contents: runCommand "nix-registration" { - buildInputs = [ nixUnstable perl ]; - # For obtaining the closure of `contents'. - exportReferencesGraph = - let contentsList = if builtins.isList contents then contents else [ contents ]; - in map (x: [("closure-" + baseNameOf x) x]) contentsList; - } - '' - mkdir $out - printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > $out/db.dump - perl ${pkgs.pathsFromGraph} closure-* > $out/storePaths - ''; - # Create a "layer" (set of files). mkPureLayer = { # Name of the layer @@ -579,20 +566,9 @@ rec { echo "Warning: only the database of the deepest Nix layer is loaded." echo " If you want to use nix commands in the container, it would" 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}/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 + ${nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contents;}}/registration mkdir -p nix/var/nix/gcroots/docker/ for i in ${lib.concatStringsSep " " contents}; do