- Nix is good at packing software but historically is bad at packing nix expressions.
- Nix flakes is a standardized way to distribute nix expressions.
All nix flakes use hermetic evaluation: they cannot access any source of impurities:
- they don’t accept arguments
- cannot accept environment variables
- cannot access arbitrary filesystem locations
- cannot fetchgit/fetchurl without specifying rev or sha
- A flake has some meta information, inputs (other flakes), and outputs (packages, nixos modules, hydra configurations)