Hacker News new | ask | show | jobs
by drampelt 787 days ago
My biggest issues with homebrew were dealing with versions of dependencies. If major updates for a package came out and you ran a `brew upgrade` (or a new member joins the team and installs it for the first time), it often wasn't trivial to switch back to the old version. Or if two projects have conflicting dependencies, for example one project was updated for imagemagick 7 but another still needed 6, that was an absolute nightmare to manage when using homebrew.

With nix, each project can define its own dependencies that have no impact on other projects. Combined with direnv, all you need is to `cd` into your project and you have the all of the dependencies at the right versions in your PATH.

Additionally, while definitely more complicated, nix (with nix-darwin and home-manager) can do way more than homebrew does. You can declaratively define pretty much the entire configuration for your machine.

I got a new Mac last week and with just a `git clone` and a few commands I had all my CLI tools installed, dotfiles setup, desktop apps installed, and even all of my macOS system settings configured.