Nix Language Reference
Grammar
Expressions
Expr
ExprFunction
'{' '}' ':'
|
ExprAssert
'assert' ';'
|
ExprIf
'if' 'then'
'else'
|
ExprOp
'!'
|
'=='
|
'!='
|
'&&'
|
'||'
|
'->'
|
'//'
|
'~'
|
'?'
|
ExprApp
'.'
|
ExprSelect
|
ExprSimple
|
|
|
|
|
'true' | 'false' | 'null'
|
'(' ')'
|
'{' * '}'
|
'let' '{' * '}'
|
'rec' '{' * '}'
|
'[' * ']'
Bind
'=' ';'
|
'inherit' ('(' ')')? * ';'
Formals
','
|
Formal
|
'?'
Terminals
Id
[a-zA-Z\_][a-zA-Z0-9\_\']*
Int
[0-9]+
Str
\"[^\n\"]*\"
Path
[a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
Uri
[a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+
Whitespace
[ \t\n]+
|
\#[^\n]*
|
\/\*(.|\n)*\*\/
Semantics
Built-in functions
The Nix language provides the following built-in function
(primops
):
import
e
Evaluates the expression e,
which must yield a path value. The Nix expression
stored at this path in the file system is then read,
parsed, and evaluated. Returns the result of the
evaluation of the Nix expression just read.
Example: import ./foo.nix evaluates
the expression stored in foo.nix
(in the directory containing the expression in which the
import occurs).
derivation
e
Evaluates the expression e,
which must yield an attribute set. [...]
baseNameOf
e
Evaluates the expression e,
which must yield a string value, and returns a string
representing its base name. This
is the substring following the last path separator
(/).
Example: baseNameOf "/foo/bar"
returns "bar", and
baseNameOf "/foo/bar/" returns
"".
toString
e
Evaluates the expression e
and coerces it into a string, if possible. Only
strings, paths, and URIs can be so coerced.
Example: toString
http://www.cs.uu.nl/ returns
"http://www.cs.uu.nl/".