Always verify nix store on install
Just wasted a couple hours chasing shadows because the nix store got corrupted and there was no indication of that anywhere. Since an install is one-time only, might as well verify. Optimization showed that the copied files aren't read-only; fixed that as well. Also, use /bin/sh since there's a good chance that this script will be run on systems without /bin/bash
This commit is contained in:
parent
8cffec8485
commit
4916d92092
|
@ -1,4 +1,4 @@
|
||||||
#! /usr/bin/env bash
|
#!/bin/sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
@ -49,7 +49,10 @@ for i in $(cd $self/store >/dev/null && echo *); do
|
||||||
fi
|
fi
|
||||||
if ! [ -e "$dest/store/$i" ]; then
|
if ! [ -e "$dest/store/$i" ]; then
|
||||||
cp -Rp "$self/store/$i" "$i_tmp"
|
cp -Rp "$self/store/$i" "$i_tmp"
|
||||||
|
chmod -R a-w "$i_tmp"
|
||||||
|
chmod +w "$i_tmp"
|
||||||
mv "$i_tmp" "$dest/store/$i"
|
mv "$i_tmp" "$dest/store/$i"
|
||||||
|
chmod -w "$dest/store/$i"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "" >&2
|
echo "" >&2
|
||||||
|
@ -65,6 +68,11 @@ if ! $nix/bin/nix-store --load-db < $self/.reginfo; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! $nix/bin/nix-store --verify; then
|
||||||
|
echo "$0: store verification failed! Consider deleting /nix and starting over" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
. $nix/etc/profile.d/nix.sh
|
. $nix/etc/profile.d/nix.sh
|
||||||
|
|
||||||
if ! $nix/bin/nix-env -i "$nix"; then
|
if ! $nix/bin/nix-env -i "$nix"; then
|
||||||
|
@ -123,3 +131,12 @@ variables are set, either log in again, or type
|
||||||
in your shell.
|
in your shell.
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
cat >&2 <<EOF
|
||||||
|
|
||||||
|
Then, consider running
|
||||||
|
|
||||||
|
nix-store --optimise
|
||||||
|
|
||||||
|
which will reduce store disk usage by hardlinking identical
|
||||||
|
files together.
|
||||||
|
EOF
|
||||||
|
|
Loading…
Reference in a new issue