

Nix. I use it for everything, including all of my tools I use on my work MacBook.
There are many ways to use nix for this stuff, but personally I use home-manager in a flake-based setup. Versions of tools are all pinned in a lockfile which is committed to source control, so it’s easy to get my config and all my tools on a new machine without any breakage (it does require installing first, though).
It’s a great tool and has largely solved the pain of dealing with having to work on MacOS, for me.
home-manager
has some workarounds it uses itself to enable many common GUI apps on MacOS.If you want to install packages purely by name, you can use
nix-env -i hello
or whatever. But it’s pretty janky and not really a recommended way of doing things.