Nix Language
To broaden my knowledge of nix, I’m working through an Overview of the Nix Language.
Most of the data types and structures are relatively self-explanatory in the context of modern programming languages.
Double single quotes strip leading spaces.
'' s '' == "s "Functions are a bit unexpected visually, but simply enough with an accompanying explanation.
For example, the following is a named function f with two arguments x and y.
f = x: y: x*yTo call the function, write f 1 4.
Calling the function with only a single arg returns a partial.
f 3# returns `y: 3*y`The with statement introduces values the scope of the expression so, you don’t need to use the dot notation.
let set = { a = 4; b = 10; };in with set; "The values are ${toString a} and ${toString b}"Values defined in a with statement do not override already defined values with the same name.
The rec expression turns a basic set into a set where self-referencing is possible.
rec { val1 = val2 + 100; val2 = 12;}.val1# outputs 112nix repl can be used to test out statements in the Nix language.