> Flakes are a great example, I still have no idea what a flake is
A package that fully specifies its dependencies (via flake.nix/flake.lock) instead of depending on whatever the user has in their Nix channels. You enable them via:
nix.settings.experimental-features = [ "nix-command" "flakes" ];
And then forget about "nix-channel", "nix-env" and all the old ways of doing stuff, the new "nix" command is much easier to understand and much closer to what guix is doing.The fun part with flakes is that they turn git repositories into full packages, meaning you can do stuff like:
nix run github:user/project?ref=v0.2.0rc1
or use other git repositories directly as dependencies.That flakes are still marked as experimental is annoying, but they have been working fine for well over three years.