Load the Nix database registration too, and let the GC test pass.

This commit is contained in:
Graham Christensen 2020-06-08 09:40:06 -04:00
parent bc81b59c5d
commit 6c13b984d4
No known key found for this signature in database
GPG Key ID: FE918C3A98C1030F
2 changed files with 13 additions and 11 deletions

View File

@ -1,4 +1,4 @@
{ runCommand, nix, jq, path }:
{ closureInfo, runCommand, nix, jq, path }:
let
map-squash = ./map-squash.nix;
@ -9,6 +9,7 @@ let
exportReferencesGraph = [ "root" storeContents ];
NIX_PATH = "nixpkgs=${path}";
outputs = [ "out" "manifest" ];
closureInfo = closureInfo { rootPaths = storeContents; };
} ''
cat root | grep /nix/store | sort | uniq | jq -R . | jq -s . > paths.json
nix-build ${map-squash} --arg pathsJson ./paths.json
@ -18,12 +19,15 @@ let
find "$f" -type f >> $out
done
touch $manifest
mkdir $manifest
touch $manifest/squashes
for f in $(cat "$out"); do
prefix=$(echo "$f" | head -c20)
suffix=$(echo "$f" | tail -c+21)
echo "$prefix $suffix" >> $manifest
echo "$prefix $suffix" >> $manifest/squashes
done
cat $closureInfo/registration | gzip -9 > $manifest/registration.gz
'';
in
mkSquashfsManifest

View File

@ -46,13 +46,14 @@ in
mkdir -p /mnt-root/nix/.squash
mkdir -p /mnt-root/nix/store
gunzip < /nix-store-squashes/registration.gz > /mnt-root/nix/registration
# the manifest splits the /nix/store/.... path with a " " to
# prevent Nix from determining it depends on things.
for f in $(cat /nix-store-isos | sed 's/ //'); do
for f in $(cat /nix-store-squashes/squashes | sed 's/ //'); do
prefix=$(basename "$(dirname "$f")")
suffix=$(basename "$f")
dest="$prefix$suffix"
echo "$dest"
mkdir "/mnt-root/nix/.squash/$dest"
mount -t squashfs -o loop "$f" "/mnt-root/nix/.squash/$dest"
(
@ -63,10 +64,6 @@ in
rm "$f"
set +x
done
ls -la /mnt-root/nix/store | grep system-nixos
ls -la /mnt-root/nix/store/*-nixos-system*/
ls -la /mnt-root/nix/store/*-nixos-system*/*
)
'';
@ -103,7 +100,7 @@ in
[
{
object = config.system.build.squashfsStore.manifest;
symlink = "/nix-store-isos";
symlink = "/nix-store-squashes";
}
];
}}/initrd";
@ -116,7 +113,8 @@ in
''
# After booting, register the contents of the Nix store
# in the Nix database in the tmpfs.
${config.nix.package}/bin/nix-store --load-db < /nix/store/nix-path-registration
echo "Loading the Nix database"
${config.nix.package}/bin/nix-store --load-db < /nix/registration
# nixos-rebuild also requires a "system" profile and an
# /etc/NIXOS tag.