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