diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-07-13T17·39+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-07-13T17·39+0000 |
commit | a5ceb5bc0b2d7fd796cb49e29d45bf568dc0df2f (patch) | |
tree | de5311006e3664c797e060d7953537a045555392 | |
parent | d4879b4dfe05708eb174129141299fb343ceb946 (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.xml | 4 | ||||
-rw-r--r-- | doc/manual/package-management.xml | 2 | ||||
-rw-r--r-- | 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 447ef126bfed..0462401bcabb 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 7620531c0ead..d225b41ee778 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 4c420dadf1f7..cb7137a47bc3 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 |