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 changed files with 18 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
#! /usr/bin/env bash
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -49,7 +49,10 @@ for i in $(cd $self/store >/dev/null && echo *); do
|
|||
fi
|
||||
if ! [ -e "$dest/store/$i" ]; then
|
||||
cp -Rp "$self/store/$i" "$i_tmp"
|
||||
chmod -R a-w "$i_tmp"
|
||||
chmod +w "$i_tmp"
|
||||
mv "$i_tmp" "$dest/store/$i"
|
||||
chmod -w "$dest/store/$i"
|
||||
fi
|
||||
done
|
||||
echo "" >&2
|
||||
|
@ -65,6 +68,11 @@ if ! $nix/bin/nix-store --load-db < $self/.reginfo; then
|
|||
exit 1
|
||||
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
|
||||
|
||||
if ! $nix/bin/nix-env -i "$nix"; then
|
||||
|
@ -123,3 +131,12 @@ variables are set, either log in again, or type
|
|||
in your shell.
|
||||
EOF
|
||||
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