aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-07-13 17:39:10 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-07-13 17:39:10 +0000
commita5ceb5bc0b2d7fd796cb49e29d45bf568dc0df2f (patch)
treede5311006e3664c797e060d7953537a045555392
parentd4879b4dfe05708eb174129141299fb343ceb946 (diff)
* 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'.
-rw-r--r--doc/manual/nix-build.xml4
-rw-r--r--doc/manual/package-management.xml2
-rw-r--r--scripts/nix-build.in66
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 (<filename>result</filename>, <filename>result-2</filename>,
and so on).</para>
+<para>If no <replaceable>paths</replaceable> are specified, then
+<command>nix-build</command> will use <filename>default.nix</filename>
+in the current directory, if it exists.</para>
+
<note><para><command>nix-build</command> is essentially a wrapper
around <link
linkend="sec-nix-instantiate"><command>nix-instantiate</command></link>
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.</para></footnote></para>
<sect1 id="sec-profiles"><title>Profiles</title>
<para>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