My personal reasons, and let me mention I have been a BSD (open and free) user over the years.
a clean base, with the possibility of allowing users to install their own packages. This takes the BSD userland vs ports concept even further and despite the sometimes issues of scripts not shebanging to /usr/bin/env, works very well.
a very good zfs on linux setup. Frankly I am very pleased with how good and easy the ZOL setup on nixos is.
The roll backs from an update but still bleeding edge. As a former Arch Linux user I have been burned by a pacman -Syu before. Granted it was my own fault, but still.
nix shell. granted I have not really learned how best to use it, and my use case would be for development. I use docker for containering deployments but rarely use it for developing because it feels more like a hassle in that domain. From what I see nix-shell feels less in the way for creating development environments.
I will mention some cons:
So I use vim/nvim. nixos finally pushed me over to nvim as using vundle with nvim and newer nvim completion plugins just worked better. This is not a nixos issue. And frankly I need to consider allwing nix-env to manage my nvim plugins, but still it was a slight shift.
The other is sometimes after a sudo nix-channel --update && sudo nixos-rebuild switch I lose wireless on my laptop. No amount of restarting the network manager service seems to get it back up and it is like tha hardware disappears. I end up being forced to reboot to get wireless back. Not sure why, and it is a minor hassle but feels oh so Windows when that happens. I only run an update once a week. So I really haven’t bothered to dig into it.
My overall opinion on the generals, nixos feels like a very clean developer workstation distro (my main usage at the moment). The packaging plus configuration is making my life easier.