* Follow our own coding conventions.
This commit is contained in:
parent
f2d65c9c80
commit
93e71e6ab6
3 changed files with 60 additions and 64 deletions
|
@ -43,10 +43,10 @@ is also available as <function>builtins.derivation</function>.</para>
|
||||||
|
|
||||||
<listitem><para>Return the names of the attributes in the
|
<listitem><para>Return the names of the attributes in the
|
||||||
attribute set <replaceable>attrs</replaceable> in a sorted list.
|
attribute set <replaceable>attrs</replaceable> in a sorted list.
|
||||||
For instance, <literal>builtins.attrNames {y = 1; x =
|
For instance, <literal>builtins.attrNames { y = 1; x = "foo";
|
||||||
"foo";}</literal> evaluates to <literal>["x" "y"]</literal>.
|
}</literal> evaluates to <literal>[ "x" "y" ]</literal>. There is
|
||||||
There is no built-in function <function>attrValues</function>, but
|
no built-in function <function>attrValues</function>, but you can
|
||||||
you can easily define it yourself:
|
easily define it yourself:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
attrValues = attrs: map (name: builtins.getAttr name attrs) (builtins.attrNames attrs);</programlisting>
|
attrValues = attrs: map (name: builtins.getAttr name attrs) (builtins.attrNames attrs);</programlisting>
|
||||||
|
@ -442,10 +442,10 @@ x: x + 456</programlisting>
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
builtins.listToAttrs [
|
builtins.listToAttrs
|
||||||
{name = "foo"; value = 123;}
|
[ { name = "foo"; value = 123; }
|
||||||
{name = "bar"; value = 456;}
|
{ name = "bar"; value = 456; }
|
||||||
]
|
]
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
evaluates to
|
evaluates to
|
||||||
|
@ -466,10 +466,10 @@ builtins.listToAttrs [
|
||||||
example,
|
example,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
map (x: "foo" + x) ["bar" "bla" "abc"]</programlisting>
|
map (x: "foo" + x) [ "bar" "bla" "abc" ]</programlisting>
|
||||||
|
|
||||||
evaluates to <literal>["foobar" "foobla"
|
evaluates to <literal>[ "foobar" "foobla" "fooabc"
|
||||||
"fooabc"]</literal>.</para></listitem>
|
]</literal>.</para></listitem>
|
||||||
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -491,10 +491,10 @@ map (x: "foo" + x) ["bar" "bla" "abc"]</programlisting>
|
||||||
a package name and version. The package name is everything up to
|
a package name and version. The package name is everything up to
|
||||||
but not including the first dash followed by a digit, and the
|
but not including the first dash followed by a digit, and the
|
||||||
version is everything following that dash. The result is returned
|
version is everything following that dash. The result is returned
|
||||||
in an attribute set <literal>{name, version}</literal>. Thus,
|
in an attribute set <literal>{ name, version }</literal>. Thus,
|
||||||
<literal>builtins.parseDrvName "nix-0.12pre12876"</literal>
|
<literal>builtins.parseDrvName "nix-0.12pre12876"</literal>
|
||||||
returns <literal>{name = "nix"; version =
|
returns <literal>{ name = "nix"; version = "0.12pre12876";
|
||||||
"0.12pre12876";}</literal>.</para></listitem>
|
}</literal>.</para></listitem>
|
||||||
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -550,9 +550,9 @@ in config.someSetting</programlisting>
|
||||||
exist in <replaceable>attrs</replaceable>. For instance,
|
exist in <replaceable>attrs</replaceable>. For instance,
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
removeAttrs { x = 1; y = 2; z = 3; } ["a" "x" "z"]</screen>
|
removeAttrs { x = 1; y = 2; z = 3; } [ "a" "x" "z" ]</screen>
|
||||||
|
|
||||||
evaluates to <literal>{y = 2;}</literal>.</para></listitem>
|
evaluates to <literal>{ y = 2; }</literal>.</para></listitem>
|
||||||
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -632,7 +632,7 @@ removeAttrs { x = 1; y = 2; z = 3; } ["a" "x" "z"]</screen>
|
||||||
linkend='ex-hello-builder' /> into one file:
|
linkend='ex-hello-builder' /> into one file:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{stdenv, fetchurl, perl}:
|
{ stdenv, fetchurl, perl }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "hello-2.1.1";
|
name = "hello-2.1.1";
|
||||||
|
@ -765,12 +765,12 @@ in foo</programlisting>
|
||||||
using <function>toXML</function></title>
|
using <function>toXML</function></title>
|
||||||
|
|
||||||
<programlisting><![CDATA[
|
<programlisting><![CDATA[
|
||||||
{stdenv, fetchurl, libxslt, jira, uberwiki}:
|
{ stdenv, fetchurl, libxslt, jira, uberwiki }:
|
||||||
|
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
name = "web-server";
|
name = "web-server";
|
||||||
|
|
||||||
buildInputs = [libxslt];
|
buildInputs = [ libxslt ];
|
||||||
|
|
||||||
builder = builtins.toFile "builder.sh" "
|
builder = builtins.toFile "builder.sh" "
|
||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
|
|
|
@ -264,8 +264,8 @@
|
||||||
expression evaluator will automatically try to call functions that
|
expression evaluator will automatically try to call functions that
|
||||||
it encounters. It can automatically call functions for which every
|
it encounters. It can automatically call functions for which every
|
||||||
argument has a <link linkend='ss-functions'>default value</link>
|
argument has a <link linkend='ss-functions'>default value</link>
|
||||||
(e.g., <literal>{<replaceable>argName</replaceable> ?
|
(e.g., <literal>{ <replaceable>argName</replaceable> ?
|
||||||
<replaceable>defaultValue</replaceable>}:
|
<replaceable>defaultValue</replaceable> }:
|
||||||
<replaceable>...</replaceable></literal>). With
|
<replaceable>...</replaceable></literal>). With
|
||||||
<option>--arg</option>, you can also call functions that have
|
<option>--arg</option>, you can also call functions that have
|
||||||
arguments without a default value (or override a default value).
|
arguments without a default value (or override a default value).
|
||||||
|
|
|
@ -52,7 +52,7 @@ need to do three things:
|
||||||
<example xml:id='ex-hello-nix'><title>Nix expression for GNU Hello
|
<example xml:id='ex-hello-nix'><title>Nix expression for GNU Hello
|
||||||
(<filename>default.nix</filename>)</title>
|
(<filename>default.nix</filename>)</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{stdenv, fetchurl, perl}: <co xml:id='ex-hello-nix-co-1' />
|
{ stdenv, fetchurl, perl }: <co xml:id='ex-hello-nix-co-1' />
|
||||||
|
|
||||||
stdenv.mkDerivation { <co xml:id='ex-hello-nix-co-2' />
|
stdenv.mkDerivation { <co xml:id='ex-hello-nix-co-2' />
|
||||||
name = "hello-2.1.1"; <co xml:id='ex-hello-nix-co-3' />
|
name = "hello-2.1.1"; <co xml:id='ex-hello-nix-co-3' />
|
||||||
|
@ -92,8 +92,8 @@ the single Nix expression in that directory
|
||||||
function that downloads files. <varname>perl</varname> is the
|
function that downloads files. <varname>perl</varname> is the
|
||||||
Perl interpreter.</para>
|
Perl interpreter.</para>
|
||||||
|
|
||||||
<para>Nix functions generally have the form <literal>{x, y, ...,
|
<para>Nix functions generally have the form <literal>{ x, y, ...,
|
||||||
z}: e</literal> where <varname>x</varname>, <varname>y</varname>,
|
z }: e</literal> where <varname>x</varname>, <varname>y</varname>,
|
||||||
etc. are the names of the expected arguments, and where
|
etc. are the names of the expected arguments, and where
|
||||||
<replaceable>e</replaceable> is the body of the function. So
|
<replaceable>e</replaceable> is the body of the function. So
|
||||||
here, the entire remainder of the file is the body of the
|
here, the entire remainder of the file is the body of the
|
||||||
|
@ -114,10 +114,10 @@ the single Nix expression in that directory
|
||||||
<emphasis>attributes</emphasis>. An attribute set is just a list
|
<emphasis>attributes</emphasis>. An attribute set is just a list
|
||||||
of key/value pairs where each value is an arbitrary Nix
|
of key/value pairs where each value is an arbitrary Nix
|
||||||
expression. They take the general form
|
expression. They take the general form
|
||||||
<literal>{<replaceable>name1</replaceable> =
|
<literal>{ <replaceable>name1</replaceable> =
|
||||||
<replaceable>expr1</replaceable>; <replaceable>...</replaceable>
|
<replaceable>expr1</replaceable>; <replaceable>...</replaceable>
|
||||||
<replaceable>nameN</replaceable> =
|
<replaceable>nameN</replaceable> =
|
||||||
<replaceable>exprN</replaceable>;}</literal>.</para>
|
<replaceable>exprN</replaceable>; }</literal>.</para>
|
||||||
|
|
||||||
</callout>
|
</callout>
|
||||||
|
|
||||||
|
@ -564,7 +564,7 @@ genericBuild <co xml:id='ex-hello-builder2-co-3' /></programlisting>
|
||||||
expression, like this:
|
expression, like this:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
buildInputs = [perl];</programlisting>
|
buildInputs = [ perl ];</programlisting>
|
||||||
|
|
||||||
The <varname>perl</varname> attribute can then be removed, and the
|
The <varname>perl</varname> attribute can then be removed, and the
|
||||||
builder becomes even shorter:
|
builder becomes even shorter:
|
||||||
|
@ -771,14 +771,14 @@ stdenv.mkDerivation {
|
||||||
values between square brackets. For example,
|
values between square brackets. For example,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
[ 123 ./foo.nix "abc" (f {x=y;}) ]</programlisting>
|
[ 123 ./foo.nix "abc" (f { x = y; }) ]</programlisting>
|
||||||
|
|
||||||
defines a list of four elements, the last being the result of a call
|
defines a list of four elements, the last being the result of a call
|
||||||
to the function <varname>f</varname>. Note that function calls have
|
to the function <varname>f</varname>. Note that function calls have
|
||||||
to be enclosed in parentheses. If they had been omitted, e.g.,
|
to be enclosed in parentheses. If they had been omitted, e.g.,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
[ 123 ./foo.nix "abc" f {x=y;} ]</programlisting>
|
[ 123 ./foo.nix "abc" f { x = y; } ]</programlisting>
|
||||||
|
|
||||||
the result would be a list of five elements, the fourth one being a
|
the result would be a list of five elements, the fourth one being a
|
||||||
function and the fifth being an attribute set.</para>
|
function and the fifth being an attribute set.</para>
|
||||||
|
@ -891,15 +891,12 @@ propagate attributes). This can be shortened using the
|
||||||
<literal>inherit</literal> keyword. For instance,
|
<literal>inherit</literal> keyword. For instance,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
let
|
let x = 123; in
|
||||||
x = 123;
|
{ inherit x;
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit x;
|
|
||||||
y = 456;
|
y = 456;
|
||||||
}</programlisting>
|
}</programlisting>
|
||||||
|
|
||||||
evaluates to <literal>{x = 123; y = 456;}</literal>. (Note that this
|
evaluates to <literal>{ x = 123; y = 456; }</literal>. (Note that this
|
||||||
works because <varname>x</varname> is added to the lexical scope by
|
works because <varname>x</varname> is added to the lexical scope by
|
||||||
the <literal>let</literal> construct.) It is also possible to inherit
|
the <literal>let</literal> construct.) It is also possible to inherit
|
||||||
attributes from another attribute set. For instance, in this fragment
|
attributes from another attribute set. For instance, in this fragment
|
||||||
|
@ -960,20 +957,20 @@ in if negate true then concat "foo" "bar" else ""</programlisting>
|
||||||
arguments of a function); e.g.,
|
arguments of a function); e.g.,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
map (concat "foo") ["bar" "bla" "abc"]</programlisting>
|
map (concat "foo") [ "bar" "bla" "abc" ]</programlisting>
|
||||||
|
|
||||||
evaluates to <literal>["foobar" "foobla"
|
evaluates to <literal>[ "foobar" "foobla"
|
||||||
"fooabc"]</literal>.</para></listitem>
|
"fooabc" ]</literal>.</para></listitem>
|
||||||
|
|
||||||
|
|
||||||
<listitem><para>An <emphasis>attribute set pattern</emphasis> of the
|
<listitem><para>An <emphasis>attribute set pattern</emphasis> of the
|
||||||
form <literal>{name1, name2, …, nameN}</literal>
|
form <literal>{ name1, name2, …, nameN }</literal>
|
||||||
matches an attribute set containing the listed attributes, and binds
|
matches an attribute set containing the listed attributes, and binds
|
||||||
the values of those attributes to variables in the function body.
|
the values of those attributes to variables in the function body.
|
||||||
For example, the function
|
For example, the function
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{x, y, z}: z + y + x</programlisting>
|
{ x, y, z }: z + y + x</programlisting>
|
||||||
|
|
||||||
can only be called with a set containing exactly the attributes
|
can only be called with a set containing exactly the attributes
|
||||||
<varname>x</varname>, <varname>y</varname> and
|
<varname>x</varname>, <varname>y</varname> and
|
||||||
|
@ -982,7 +979,7 @@ map (concat "foo") ["bar" "bla" "abc"]</programlisting>
|
||||||
(<literal>...</literal>):
|
(<literal>...</literal>):
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{x, y, z, ...}: z + y + x</programlisting>
|
{ x, y, z, ... }: z + y + x</programlisting>
|
||||||
|
|
||||||
This works on any set that contains at least the three named
|
This works on any set that contains at least the three named
|
||||||
attributes.</para>
|
attributes.</para>
|
||||||
|
@ -995,7 +992,7 @@ map (concat "foo") ["bar" "bla" "abc"]</programlisting>
|
||||||
<replaceable>e</replaceable> is an arbitrary expression. For example,
|
<replaceable>e</replaceable> is an arbitrary expression. For example,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{x, y ? "foo", z ? "bar"}: z + y + x</programlisting>
|
{ x, y ? "foo", z ? "bar" }: z + y + x</programlisting>
|
||||||
|
|
||||||
specifies a function that only requires an attribute named
|
specifies a function that only requires an attribute named
|
||||||
<varname>x</varname>, but optionally accepts <varname>y</varname>
|
<varname>x</varname>, but optionally accepts <varname>y</varname>
|
||||||
|
@ -1007,11 +1004,11 @@ map (concat "foo") ["bar" "bla" "abc"]</programlisting>
|
||||||
of the <literal>@</literal>-sign. For example:
|
of the <literal>@</literal>-sign. For example:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
args@{x, y, z, ...}: z + y + x + args.a</programlisting>
|
args@{ x, y, z, ... }: z + y + x + args.a</programlisting>
|
||||||
|
|
||||||
Here <varname>args</varname> is bound to the entire argument, which
|
Here <varname>args</varname> is bound to the entire argument, which
|
||||||
is further matches against the pattern <literal>{x, y, z,
|
is further matches against the pattern <literal>{ x, y, z,
|
||||||
...}</literal>.</para></listitem>
|
... }</literal>.</para></listitem>
|
||||||
|
|
||||||
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
@ -1020,8 +1017,8 @@ args@{x, y, z, ...}: z + y + x + args.a</programlisting>
|
||||||
a name, you can bind them to an attribute, e.g.,
|
a name, you can bind them to an attribute, e.g.,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
let concat = {x, y}: x + y;
|
let concat = { x, y }: x + y;
|
||||||
in concat {x = "foo"; y = "bar";}</programlisting>
|
in concat { x = "foo"; y = "bar"; }</programlisting>
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -1142,7 +1139,7 @@ lexical scope of the expression <replaceable>e2</replaceable>. For
|
||||||
instance,
|
instance,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
let as = {x = "foo"; y = "bar";};
|
let as = { x = "foo"; y = "bar"; };
|
||||||
in with as; x + y</programlisting>
|
in with as; x + y</programlisting>
|
||||||
|
|
||||||
evaluates to <literal>"foobar"</literal> since the
|
evaluates to <literal>"foobar"</literal> since the
|
||||||
|
@ -1480,21 +1477,20 @@ allowedReferences = [];
|
||||||
references graph of their inputs. The attribute is a list of
|
references graph of their inputs. The attribute is a list of
|
||||||
inputs in the Nix store whose references graph the builder needs
|
inputs in the Nix store whose references graph the builder needs
|
||||||
to know. The value of this attribute should be a list of pairs
|
to know. The value of this attribute should be a list of pairs
|
||||||
<literal>[<replaceable>name1</replaceable>
|
<literal>[ <replaceable>name1</replaceable>
|
||||||
<replaceable>path1</replaceable> <replaceable>name2</replaceable>
|
<replaceable>path1</replaceable> <replaceable>name2</replaceable>
|
||||||
<replaceable>path2</replaceable>
|
<replaceable>path2</replaceable> <replaceable>...</replaceable>
|
||||||
<replaceable>...</replaceable>]</literal>. The references graph
|
]</literal>. The references graph of each
|
||||||
of each <replaceable>pathN</replaceable> will be stored in a text
|
<replaceable>pathN</replaceable> will be stored in a text file
|
||||||
file <replaceable>nameN</replaceable> in the temporary build
|
<replaceable>nameN</replaceable> in the temporary build directory.
|
||||||
directory. The text files have the format used by
|
The text files have the format used by <command>nix-store
|
||||||
<command>nix-store --register-validity</command> (with the deriver
|
--register-validity</command> (with the deriver fields left
|
||||||
fields left empty). For example, when the following derivation is
|
empty). For example, when the following derivation is built:
|
||||||
built:
|
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
derivation {
|
derivation {
|
||||||
...
|
...
|
||||||
exportReferencesGraph = ["libfoo-graph" libfoo];
|
exportReferencesGraph = [ "libfoo-graph" libfoo ];
|
||||||
};
|
};
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
|
@ -1571,14 +1567,14 @@ fetchurl {
|
||||||
<varname>fetchurl</varname>:
|
<varname>fetchurl</varname>:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{stdenv, curl}: # The <command>curl</command> program is used for downloading.
|
{ stdenv, curl }: # The <command>curl</command> program is used for downloading.
|
||||||
|
|
||||||
{url, md5}:
|
{ url, md5 }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = baseNameOf (toString url);
|
name = baseNameOf (toString url);
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
buildInputs = [curl];
|
buildInputs = [ curl ];
|
||||||
|
|
||||||
# This is a fixed-output derivation; the output must be a regular
|
# This is a fixed-output derivation; the output must be a regular
|
||||||
# file with MD5 hash <varname>md5</varname>.
|
# file with MD5 hash <varname>md5</varname>.
|
||||||
|
@ -1650,7 +1646,7 @@ stdenv.mkDerivation {
|
||||||
Nixpkgs has the line
|
Nixpkgs has the line
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
impureEnvVars = ["http_proxy" "https_proxy" <replaceable>...</replaceable>];
|
impureEnvVars = [ "http_proxy" "https_proxy" <replaceable>...</replaceable> ];
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
to make it use the proxy server configuration specified by the
|
to make it use the proxy server configuration specified by the
|
||||||
|
|
Loading…
Reference in a new issue