diff options
Diffstat (limited to 'nixos/doc/manual/from_md/configuration/summary.section.xml')
-rw-r--r-- | nixos/doc/manual/from_md/configuration/summary.section.xml | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/nixos/doc/manual/from_md/configuration/summary.section.xml b/nixos/doc/manual/from_md/configuration/summary.section.xml new file mode 100644 index 00000000000..96a178c4930 --- /dev/null +++ b/nixos/doc/manual/from_md/configuration/summary.section.xml @@ -0,0 +1,332 @@ +<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-nix-syntax-summary"> + <title>Syntax Summary</title> + <para> + Below is a summary of the most important syntactic constructs in the + Nix expression language. It’s not complete. In particular, there are + many other built-in functions. See the + <link xlink:href="https://nixos.org/nix/manual/#chap-writing-nix-expressions">Nix + manual</link> for the rest. + </para> + <informaltable> + <tgroup cols="2"> + <colspec align="left" /> + <colspec align="left" /> + <thead> + <row> + <entry> + Example + </entry> + <entry> + Description + </entry> + </row> + </thead> + <tbody> + <row> + <entry> + <emphasis>Basic values</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>"Hello world"</literal> + </entry> + <entry> + A string + </entry> + </row> + <row> + <entry> + <literal>"${pkgs.bash}/bin/sh"</literal> + </entry> + <entry> + A string containing an expression (expands to + <literal>"/nix/store/hash-bash-version/bin/sh"</literal>) + </entry> + </row> + <row> + <entry> + <literal>true</literal>, <literal>false</literal> + </entry> + <entry> + Booleans + </entry> + </row> + <row> + <entry> + <literal>123</literal> + </entry> + <entry> + An integer + </entry> + </row> + <row> + <entry> + <literal>./foo.png</literal> + </entry> + <entry> + A path (relative to the containing Nix expression) + </entry> + </row> + <row> + <entry> + <emphasis>Compound values</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>{ x = 1; y = 2; }</literal> + </entry> + <entry> + A set with attributes named <literal>x</literal> and + <literal>y</literal> + </entry> + </row> + <row> + <entry> + <literal>{ foo.bar = 1; }</literal> + </entry> + <entry> + A nested set, equivalent to + <literal>{ foo = { bar = 1; }; }</literal> + </entry> + </row> + <row> + <entry> + <literal>rec { x = "foo"; y = x + "bar"; }</literal> + </entry> + <entry> + A recursive set, equivalent to + <literal>{ x = "foo"; y = "foobar"; }</literal> + </entry> + </row> + <row> + <entry> + <literal>[ "foo" "bar" ]</literal> + </entry> + <entry> + A list with two elements + </entry> + </row> + <row> + <entry> + <emphasis>Operators</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>"foo" + "bar"</literal> + </entry> + <entry> + String concatenation + </entry> + </row> + <row> + <entry> + <literal>1 + 2</literal> + </entry> + <entry> + Integer addition + </entry> + </row> + <row> + <entry> + <literal>"foo" == "f" + "oo"</literal> + </entry> + <entry> + Equality test (evaluates to <literal>true</literal>) + </entry> + </row> + <row> + <entry> + <literal>"foo" != "bar"</literal> + </entry> + <entry> + Inequality test (evaluates to <literal>true</literal>) + </entry> + </row> + <row> + <entry> + <literal>!true</literal> + </entry> + <entry> + Boolean negation + </entry> + </row> + <row> + <entry> + <literal>{ x = 1; y = 2; }.x</literal> + </entry> + <entry> + Attribute selection (evaluates to <literal>1</literal>) + </entry> + </row> + <row> + <entry> + <literal>{ x = 1; y = 2; }.z or 3</literal> + </entry> + <entry> + Attribute selection with default (evaluates to + <literal>3</literal>) + </entry> + </row> + <row> + <entry> + <literal>{ x = 1; y = 2; } // { z = 3; }</literal> + </entry> + <entry> + Merge two sets (attributes in the right-hand set taking + precedence) + </entry> + </row> + <row> + <entry> + <emphasis>Control structures</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>if 1 + 1 == 2 then "yes!" else "no!"</literal> + </entry> + <entry> + Conditional expression + </entry> + </row> + <row> + <entry> + <literal>assert 1 + 1 == 2; "yes!"</literal> + </entry> + <entry> + Assertion check (evaluates to + <literal>"yes!"</literal>). See + <xref linkend="sec-assertions" /> for using assertions in + modules + </entry> + </row> + <row> + <entry> + <literal>let x = "foo"; y = "bar"; in x + y</literal> + </entry> + <entry> + Variable definition + </entry> + </row> + <row> + <entry> + <literal>with pkgs.lib; head [ 1 2 3 ]</literal> + </entry> + <entry> + Add all attributes from the given set to the scope + (evaluates to <literal>1</literal>) + </entry> + </row> + <row> + <entry> + <emphasis>Functions (lambdas)</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>x: x + 1</literal> + </entry> + <entry> + A function that expects an integer and returns it increased + by 1 + </entry> + </row> + <row> + <entry> + <literal>(x: x + 1) 100</literal> + </entry> + <entry> + A function call (evaluates to 101) + </entry> + </row> + <row> + <entry> + <literal>let inc = x: x + 1; in inc (inc (inc 100))</literal> + </entry> + <entry> + A function bound to a variable and subsequently called by + name (evaluates to 103) + </entry> + </row> + <row> + <entry> + <literal>{ x, y }: x + y</literal> + </entry> + <entry> + A function that expects a set with required attributes + <literal>x</literal> and <literal>y</literal> and + concatenates them + </entry> + </row> + <row> + <entry> + <literal>{ x, y ? "bar" }: x + y</literal> + </entry> + <entry> + A function that expects a set with required attribute + <literal>x</literal> and optional <literal>y</literal>, + using <literal>"bar"</literal> as default value + for <literal>y</literal> + </entry> + </row> + <row> + <entry> + <literal>{ x, y, ... }: x + y</literal> + </entry> + <entry> + A function that expects a set with required attributes + <literal>x</literal> and <literal>y</literal> and ignores + any other attributes + </entry> + </row> + <row> + <entry> + <literal>{ x, y } @ args: x + y</literal> + </entry> + <entry> + A function that expects a set with required attributes + <literal>x</literal> and <literal>y</literal>, and binds the + whole set to <literal>args</literal> + </entry> + </row> + <row> + <entry> + <emphasis>Built-in functions</emphasis> + </entry> + <entry> + </entry> + </row> + <row> + <entry> + <literal>import ./foo.nix</literal> + </entry> + <entry> + Load and return Nix expression in given file + </entry> + </row> + <row> + <entry> + <literal>map (x: x + x) [ 1 2 3 ]</literal> + </entry> + <entry> + Apply a function to every element of a list (evaluates to + <literal>[ 2 4 6 ]</literal>) + </entry> + </row> + </tbody> + </tgroup> + </informaltable> +</section> |