Configuring NixOS is done declaratively, so I can easily inspect how my computers are configured, and I know that when I get a new computer, I can just copy the configuration.
Its way of performing upgrades and configuration changes is the new state of the art. You could say it's like React for your whole userland.
The configuration syntax and the package definition syntax are one and the same functional programming language, which makes the system very flexible. And the whole package hierarchy is just a Git repo.
The package server maintained by NixOS also happens to have binary builds for nearly all Haskell packages, which saves me a lot of time.