My biggest gripe with Nix (from real world experience) is that my .nix files randomly break due to changes and I have to spend my time going through Github commits to see what changed in the settings I used to fix it.
That and when things do error, the error messages may as well be generated from /dev/random
Are you importing things from all over the internet, without pinning to a specific version? It sounds a lot like it, at least, and in that case I'm not sure how this is a flaw of Nix, or how it would be much different in other places.
Nix channels (and NIX_PATH) break reproducibility. Pinning revisions makes things more robust; my preferred approach is to use default function arguments, so they're easy to override (useful when composing lots of things together).
It seems like flakes are another way to do that, but they seem way too over-complicated for my taste.
Yeah of course, but channels probably shouldn't be used outside of managing the local machine, and there's usually quite long and fair time period for deprecation warnings taking effect.
Not sure how bad if one uses unstable, but if using unstable the complaint isn't really fair to begin with.
That and when things do error, the error messages may as well be generated from /dev/random