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 | 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue