Earlier quoted context omitted.
Having used nix for two years now for both work and personal purposes, I agree. Though I have also come to think nix is doing things in much better ways than AppImage, Docker, Snap, Flatpack, and others. I won't focus on the good parts, but focus on your comment. Nix has three things that I think are confusing and took me an embarrassing long time to grok, and I find other people confused by as well. 1. Where does th…
> the only time a semicolon is used is to terminate an assignment (=) I find it easier to think of "attribute sets" like `{ foo = bar; }` more like a JSON objects (e.g. `{ "foo": bar }`) rather than "assignment". Nix does have a `let` syntax, which probably looks more like assignment, but I've never used it in the 7 years I've been using Nix. I find `with myAttrs; myExpr` to be far better (except for the WontFix issu…
To make it clearer, he is saying that he does
with { foo = "bar"; };
instead of
let foo = "bar"; in
The differences here so other people can follow along.
1. with will not shadow variables defined higher up. This can be either desirable or very confusing.
2. let is recursive by default, meaning you can reference other variables in that block. This behavior can be mimicked with `with rec {}`