Flakes seem a lot more magic under the hood, whereas Niv is just providing the arguments to existing Nix functions. They need special handling for nested dependencies (“follows” is a bit weird and hard to discover). With Niv, everything is just a function evaluation. Dependencies source caching is non-obvious for nested dependencies, with Niv it is more explicit (although you do need to manually instantiate them, but I prefer the explicitness).
Nothing major, but it just adds a bit of cognitive load.
Nothing major, but it just adds a bit of cognitive load.