I agree that it's not a fair comparison, but I will add that this is a big barrier to newcomers. Everyone experienced with nix builds their own ivory tower of a nix flake (myself included), so it's hard to find actually good examples of how to do basic things without wading through a bunch of other bullshit.
Newcomer here. Could anyone tell if std [0] is a good way to bring more sanity into flake design, esp. in avoiding ivory towery custom approaches? Using devenv.sh is another option, but I liked emphasis on creating a common mental picture of the architecture and focus on SLDC that std provides.
I haven't used std, but I would like to point you at what I think is the ideal way to organize a lot of nix: readTree from the virus lounge[0].
It doesn't add kitschy terms like "Cell" and "growOn", it's just a way to standardize attribute names according to where things live in the filesystem.
So in their repo, /foo/bar/baz.nix has the attribute path depot.foo.bar.baz
I will say that to understand how it works you need to have a solid grasp of the nix language. But once established I think it's a pattern that noobs could learn in a very quick and superficial way.
Well, I think that becomes clearer when reading comments on this HN thread. I found std after spending significant time to find out 1) wth is Nix/NixOS? 2) what would I use it for exactly? and 3) How to get going? Then on 3) I found reams of outdated or confusing docs making me doubt 1) and 2) again, as well as the frustrations of others on this.
Then this std background of "We bring clarity, clear mental picture, manageable Nix projects throughout the lifecycle." appealed a lot.
Does cell/cell block/target/actions terminology come from Nix then? I assumed that was std's solution (since it is under the heading Solution, and I haven't heard of it) so found the 'explanation' of it baffling. But if it comes from Nix it can be read sort of like a style guide for how to do what you're already doing with Nix?
If the target audience is limited to those already highly experienced (and yet frustrated) with Nix then I guess it's fine.
Ah, sorry I misinterpreted you before. Yes, these are std's abstractions to organize your Nix code and gradually 'grow' your solution. Rationale and explainers on these concepts are more spread about in the docs. The 'sales pitch' is another high-level txt than the one you passed on why to use std.
(PS. This cell breakdown reminded me a bit of Atomic Design for front-end UI to make that easier.)
I'm a beginner myself and have been trying my best to keep things simple. But I do agree that the complexity creep is quite tempting with Nix. Not sure why though..
I think nix has a fair amount of gravity - once you've started, assuming like it, you will quickly want to use it for everything.
I don't think most people's flakes are more complex than the alternative (which would be, I don't know, a bunch of different script, maybe some ansible playbooks?) but it is a bit daunting when all that complexity is wrangled into a single abstraction.
I thought I was weird for my bespoke ivory tower monorepo flake.nix, glad to hear I'm not the only one. It has been a tremendous help in managing my homelab.