If you're happy with brew, by all means continue using it. If asdf is getting you all the languages and tools you need without issue, by all means continue using it. My comment is just adding some details to the parent comment about nix running well on macOS.
EDIT: I doubt your question is in good faith considering the 'cult' comment, but to answer your question at face value regarding benefit the first one that comes to mind is being able to have multiple versions of the same package and being able to rollback to previous versions if something breaks. This also means you can have package A depend on package B v1, and package C depend on package B v2, and both can coexist. If this is not something that's valuable to you, that's fine too. The other killer feature is being able to install dependencies for a project/repository if it uses nix - just clone, cd, and run `nix develop` and you'll have all the dependencies available.
The cult comment was in jest. These are just package managers don't take things so seriously, it is all in good fun.
Yes, I understand the multiple versions of the same package thing - Go/Rust have package managers that quite reliably solve that problem. Pipx also to a certain extent solves that problem.
Brew is useful mostly for casks (browsers, mac apps, fonts) which don't usually call for multiple versions.
I'm sure it is a hairy problem for some combination of languages/tools but I guess I'm somehow completely side stepping it. Perhaps I'm more likely to encounter it if I treated my laptop as a server because that seems more like where Nix might shine as a sort of ansible/chef/puppet on steroids ;)
Fair enough! Yeah, I was using brew as a replacement for something like `apt` or `dnf` on Linux. For example, installing packages like htop, neovim, emacs, etc. For things like Rust I stick with cargo (which is awesome), though I do manage my Go install through nix.
I’m constantly fighting Brew on all three computers where Brew is installed. Yes, I have wiped them, the problem is Brew, it is not the particular installation. If it were a problem with one particular installation of Brew, then it would not suddenly become a problem on a new fresh install of Brew.
The idea that you would need to wipe anything to start over is just bizarre to me in the first place. One of the many problems with Brew. Brew is extremely slow and it is prone to doing things that I do not want it to do without explaining why it is doing them or how I can alter its behavior (why is it installing package X? why is it updating right now?). Sometimes when I install a package, I get a spurious failure, and I need to re-run the installation command. Sometimes I just want to install one package, but it goes through “brew update”—which is extremely slow.
I used brew for years and it's a fine tool but I found it lacking. It doesn't give you control when you need it, and telling a user that something got b0rked along the way and asking them to start over isn't good developer experience (in all fairness, neither is the current status of the various nix cli's, but trade-offs am I right?). I've lost so many hours because something broke and sometimes it was because one dependency got updated and broke other packages and other times it wasn't obvious what broke, and I would have to start from scratch.
I never used brew to install or manage my python precisely because it gave me so many issues.
My brew list is intentionally very short and my faffing about desire is limited.
Generally I use brew to pull in asdf (https://github.com/asdf-vm/asdf) to install programming languages/tooling, it works flawlessly.
I use Pipx (https://github.com/pypa/pipx) to install python thingies (such as yt-dlp) as a cli.
Go and Rust handle binaries in their languages beautifully and without issues.