These are all Flakes deal-breakers for me:
- As you mention, the dependency explosion problem. Except that I disagree that the follows mechanism is a good solution for that. It’s a hack and can cause various breakages. We need a version resolver. And no, I will not use your proprietary third-party project to hack around that.
- Flakes doesn’t support passing arguments from the CLI. This is a clear downgrade from the stable commands. Eelco keeps saying that configurable derivations will address this, but it’s just a draft PR so far.
- The system parameter having to be passed around is awful and a clear downgrade from stable Nix.
- The
flake.nix
file not actually being a proper Nix file is a fundamental design flaw, it’s very inconsistent and leads to surprises, a clear downgrade from stable Nix. - Flake sources always being copied into the store for every single change is terrible and a clear downgrade from stable Nix, which supports arbitrary granularity about which files are copied to the store. The lazy trees PR, announced last Nixcon, is meant to address this, but it’s still not done and suffers from various bugs.
- Evaluation purity and evaluation caching are tightly dependent on Flakes and its references. This should absolutely not be a requirement, Nix code should be able to use these features independently of Flakes. I started a draft for a proposal here (though I haven’t had the time to make it coherent).
Just overall, the core of Nix is tainted by Flake. Nix is such a good idea, and I want Nix to take over the world, but I would be deeply disappointed if this is what we end up with.