Nix vs Homebrew Cask
When comparing Nix vs Homebrew Cask, the Slant community recommends Homebrew Cask for most people. In the question“What are the best Mac package managers?” Homebrew Cask is ranked 2nd while Nix is ranked 9th. The most important reason people chose Homebrew Cask is:
Homebrew Cask adds functionality to Homebrew such as allowing downloads of commercial licensed apps.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro No side effects when building packages
Nix is a purely functional package management system. This means that the act of building a package does not have side effects, such as destructively updating or deleting files that may be used by other packages.
Pro Isolated development environments
Nix allows the creation of project-specific shell and build environments which are isolated from the rest of the system. These environments are defined declaratively to ensure reproducibility.
Pro Can replace docker in some places
Pro Can use multiple versions of the same package
Because of the functional approach it takes, Nix makes it easy for systems to use multiple versions of the same package simultaneously, and ensure that updating or removing a package can't break other packages.
Pro The configuration works on "All machines"
No more of the traditional: "it works on my machine". When it says reproducible, this is the real deal.
Pro Extends Homebrew
Homebrew Cask adds functionality to Homebrew such as allowing downloads of commercial licensed apps.
Pro "Zap" application configuration
this is an interesting feature allowing user to remove application configuration leftowers
Pro Manage graphical applications through the command line
Homebrew Cask allows you to install graphical applications through the command line, rather than having to go through the standard installation process.
E.g. brew cask install google-chrome
Cons
Con Does not work well for services on non-NixOS systems
When using Nix with anything other than NixOS you can run into difficulties with trying to start up services. For example, you can install docker with Nix, but it won't integrate with the host system's systemd leaving you to handcraft awkward workarounds in order to start the background service that docker requires. This seems like a critical flaw when using Nix on anything that is not NixOS, and it's unfortunate because this affects many of the packages many users would be most interested in using Nix to handle.
Con Steep learning curve
Con Cannot handle filetypes that have different semantics across different versions
While the functional approach that Nix takes is great for sandboxing binary artifacts of packages, it seriously lacks any power in handling configuration files or user data. It's difficult to upgrade and downgrade files where semantics and syntax can change between versions. Especially in Debian/Ubuntu it can cause severe problems where the upgrade process blocks and the user needs to resolve the 3-way merge.
Con Feels slightly over-complicated
Con Cask update is usually manual
This defeats the purpose of the packet manager.
Con Requires Xcode
Homebrew Cask requires that Xcode is installed, which may be more work than what some want to spend on configuring this app.

Con Software no longer needed by anything (orphans) is hard to delete

Con The developers are hostile to the users reporting issues

Con Silently spies on the user by default
See here.
Con Duplicate apps found in brew may cause issue
There are warnings provided that apps found in brew should not be installed with brew cask (and vice versa). While the user is warned of this, mistakes can happen, which would be better to just see them avoided all together by not supplying duplicate apps.

Con Goes against Apple's design choices with macOS and breaks the system
