From a5ceb5bc0b2d7fd796cb49e29d45bf568dc0df2f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 13 Jul 2005 17:39:10 +0000 Subject: [PATCH] * nix-build: default to `./default.nix' if no paths are specified. So when using Nix as a build tool, you can just say `nix-build' and it will build the top-level derivation defined in `default.nix'. --- doc/manual/nix-build.xml | 4 ++ doc/manual/package-management.xml | 2 +- scripts/nix-build.in | 66 ++++++++++++++++++------------- 3 files changed, 43 insertions(+), 29 deletions(-) diff --git a/doc/manual/nix-build.xml b/doc/manual/nix-build.xml index 447ef126b..0462401bc 100644 --- a/doc/manual/nix-build.xml +++ b/doc/manual/nix-build.xml @@ -25,6 +25,10 @@ to multiple derivations, multiple sequentially numbered symlinks are created (result, result-2, and so on). +If no paths are specified, then +nix-build will use default.nix +in the current directory, if it exists. + nix-build is essentially a wrapper around nix-instantiate diff --git a/doc/manual/package-management.xml b/doc/manual/package-management.xml index 7620531c0..d225b41ee 100644 --- a/doc/manual/package-management.xml +++ b/doc/manual/package-management.xml @@ -176,7 +176,7 @@ set. Profiles Profiles and user environments are Nix’s mechanism for -implementing the ability to allow differens users to have different +implementing the ability to allow different users to have different configurations, and to do atomic upgrades and rollbacks. To understand how they work, it’s useful to know a bit about how Nix works. In Nix, components are stored in unique locations in the diff --git a/scripts/nix-build.in b/scripts/nix-build.in index 4c420dadf..cb7137a47 100644 --- a/scripts/nix-build.in +++ b/scripts/nix-build.in @@ -2,11 +2,6 @@ nixExpr=$1 -if test -z "$nixExpr"; then - echo "syntax: $0 NIX-EXPR..." >&2 - exit 1 -fi - extraArgs= addDrvLink=0 addOutLink=1 @@ -16,9 +11,15 @@ trap 'rm -f ./.nix-build-tmp-*' EXIT # Process the arguments. +exprs= for i in "$@"; do case "$i" in - + + --help) + echo "syntax: $0 [NIX-EXPR...]" >&2 + exit 0 + ;; + --add-drv-link) addDrvLink=1 ;; @@ -32,28 +33,37 @@ for i in "$@"; 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 \ - "$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 - + exprs="$exprs $i" ;; 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 \ + "$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