Hm, I have now completely switched to nix search instead of nix-env -q; do you see any disadvantages in it?
edit: A huge question I’m having regarding nix-darwin, which makes me afraid to try it since long ago, is: what changes will it make in the OS config on the first run? I know it’ll be easy to rollback to old configs after nix already works; but how do I know it won’t break something for me in OSX when I “darwin-rebuild switch” first time, that I then won’t have idea how to undo? If you could possibly help me understand the answer to this, I’d be super grateful! Though obviously, you’re not in any way required to :) Given that concern, I’m currently only using home-manager…
edit 2: Re: “The Lisp Curse”: my personal interpretation of the configs problem in nixpkgs is that of “The Lava Layers Anti-pattern”; though I may be wrong and/or they may be correlated. I.e. my take is, that it’s because Nix/Nixpkgs is exploring a new problem space, so new solutions are discovered and evolve over old ones, and are in fact educated by (the pitfalls of) the old ones - while the old ones tend to naturally ossify in the meantime, becoming (socially and technically) costly to change to the new, better approach.
I was actually not aware of nix search. Another case of bad discoverability I guess.
I’m not aware of any destructive changes nix-darwin performs on the first run, and I’ve had a pretty customised system before I installed it.
I like the Lava Layers comparison, very apt.
Yep, I totally think the same about discoverability. That said, I’m recently growing in optimism, as from what I observe, there seem to be various undercurrents towards improving the situation - even if things are moving slowly. Notably, the nix command (a.k.a. “nix 2.0”) is one of such efforts - towards improving the UX (and I believe nix search succeeds in being miles ahead in friendliness and speed over nix-env -q). The other quiet breakthrough I’m cautiously optimistic towards, is that a proposal was recently accepted to migrate the docs from XML to Markdown - which might make it easier for people to contribute to them and thus improve them. Also, as mentioned in other comments around, flakes also are aimed (among other features) at improving discoverability. I recommend watching Eelco’s keynote from the last NixConf if you’re interested in seeing what are the issues they’re aware of, and how they’re actively exploring ways to facilitate solving them.
In my very limited experience, Nix has one of the worst interfaces for discoverability and general use. It’s almost like the interface is actively hostile.
This is getting better. Flakes define a standard interface for package/library/module repos. This also makes things easier for tooling.
There was also a proposal by Eelco Dolstra at the last NixCon for improving the module system, with improved discoverability as a goal.
What pieces are needed?
I’m just getting into nix and would like to know!
Thank you, this is an excellent primer!