Example:
    $ nix-build ./all-packages.nix -A xlibs.libX11
  So finally it's easy to perform a test build of a Nix expression!
		
	
			
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #! @shell@ -e
 | |
| 
 | |
| nixExpr=$1
 | |
| 
 | |
| extraArgs=
 | |
| extraInstArgs=
 | |
| addDrvLink=0
 | |
| addOutLink=1
 | |
| 
 | |
| 
 | |
| trap 'rm -f ./.nix-build-tmp-*' EXIT
 | |
| 
 | |
| 
 | |
| # Process the arguments.
 | |
| args=("$@")
 | |
| for ((i = 0; i < ${#args[*]}; )); do
 | |
|     arg=${args[$i]}
 | |
|     i=$((i + 1))
 | |
|     case "$arg" in
 | |
| 
 | |
|         --help)
 | |
|             echo "syntax: $0 [NIX-EXPR...]" >&2
 | |
|             exit 0
 | |
|             ;;
 | |
| 
 | |
|         --add-drv-link)
 | |
|             addDrvLink=1
 | |
|             ;;
 | |
|             
 | |
|         --no-link)
 | |
|             addOutLink=0
 | |
|             ;;
 | |
| 
 | |
|         --attr|-A)
 | |
|             arg2=${args[$i]}
 | |
|             i=$((i + 1))
 | |
|             extraInstArgs="$extraInstArgs $arg $arg2"
 | |
|             ;;
 | |
|             
 | |
|         -*)
 | |
|             extraArgs="$extraArgs $arg"
 | |
|             ;;
 | |
|             
 | |
|         *)
 | |
|             exprs="$exprs $arg"
 | |
|             ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| if test -z "$exprs"; then
 | |
|     exprs="./default.nix"
 | |
| fi
 | |
| 
 | |
| # Process the specified Nix expressions.
 | |
| for i in $exprs; do
 | |
| 
 | |
|     # Instantiate the Nix expression.
 | |
|     prefix=
 | |
|     if test "$addDrvLink" = 0; then prefix=.nix-build-tmp-; fi
 | |
|     storeExprs=$(@bindir@/nix-instantiate \
 | |
|         --add-root ./${prefix}derivation --indirect \
 | |
|         $extraInstArgs "$i")
 | |
|                 
 | |
|     for j in $storeExprs; do
 | |
|         echo "store expression is $(readlink "$j")" >&2
 | |
|     done
 | |
| 
 | |
|     # Build the resulting store derivation.
 | |
|     prefix=
 | |
|     if test "$addOutLink" = 0; then prefix=.nix-build-tmp-; fi
 | |
|     outPaths=$(@bindir@/nix-store \
 | |
|         --add-root ./${prefix}result --indirect \
 | |
|         -rv $extraArgs $storeExprs)
 | |
|                 
 | |
|     for j in $outPaths; do
 | |
|         echo "$(readlink "$j")"
 | |
|     done
 | |
| done            
 |