`nix repl` to interactively evaluate Nix expressions. `:p` if output is not full. `nix-instantiate --eval .nix` to evaluate a Nix expression from a file. `--strict`. Nix is like JSON, but with functions. Recursive attribute sets can reference values declared earlier in the same set. ```nix rec { one = 1; two = one + 1; } ``` A `let` binding is used to assign names to values just as attribute sets, they can then be used in expressions. Let bindings have a local scope. A `with` allows referencing attributes of attribute sets without referencing the set.