Operators
lists the operators in the
Nix expression language, in order of precedence (from strongest to
weakest binding).
Operators
Name
Syntax
Associativity
Description
Precedence
Select
e .
attrpath
[ or def ]
none
Select attribute denoted by the attribute path
attrpath from set
e. (An attribute path is a
dot-separated list of attribute names.) If the attribute
doesn’t exist, return def if
provided, otherwise abort evaluation.
1
Application
e1 e2
left
Call function e1 with
argument e2.
2
Arithmetic Negation
- e
none
Arithmetic negation.
3
Has Attribute
e ?
attrpath
none
Test whether set e contains
the attribute denoted by attrpath;
return true or
false.
4
List Concatenation
e1 ++ e2
right
List concatenation.
5
Multiplication
e1 * e2,
left
Arithmetic multiplication.
6
Division
e1 / e2
left
Arithmetic division.
6
Addition
e1 + e2
left
Arithmetic addition.
7
Subtraction
e1 - e2
left
Arithmetic subtraction.
7
String Concatenation
string1 + string2
left
String concatenation.
7
Not
! e
none
Boolean negation.
8
Update
e1 //
e2
right
Return a set consisting of the attributes in
e1 and
e2 (with the latter taking
precedence over the former in case of equally named
attributes).
9
Less Than
e1 < e2,
none
Arithmetic comparison.
10
Less Than or Equal To
e1 <= e2
none
Arithmetic comparison.
10
Greater Than
e1 > e2
none
Arithmetic comparison.
10
Greater Than or Equal To
e1 >= e2
none
Arithmetic comparison.
10
Equality
e1 == e2
none
Equality.
11
Inequality
e1 != e2
none
Inequality.
11
Logical And
e1 &&
e2
left
Logical AND.
12
Logical Or
e1 ||
e2
left
Logical OR.
13
Logical Implication
e1 ->
e2
none
Logical implication (equivalent to
!e1 ||
e2).
14