Practical nix flakes anatomy: a guided tour of flake.nix

I’ve written an overview of the most common(and some of the less common) components of a flake.nix file here.

There’s quite a lot of details about flakes’ inputs and outputs and how they all work together. There’s also some common code patterns that one might encounter when using flakes but ones that I haven’t seen in detail.

While the guide does require some initial knowledge of nix and flakes, I tried to make the sections as non-convoluted and self-contained as possible.

Feedback is very much welcome!