Nix has a steep learning curve, but nix ends up being useful for all sorts of things related to software packages.
Regarding NixOS, the safety of being able to do rollbacks for any system change is neat. A NixOS configuration is declarative, which means the OS' configuration can be described in a single file. (Or you can compose the OS configuration into multiple modules). -- Declaring OS configuration programmatically in a file is useful if you want to manage more than one or two machines.
That NixOS can be configured from a file also lends Nix to being a tool for building VM images. (e.g. AWS AMIs).
For software development, Nix allows for declaring a development environment such that the host will get the same versions of tools (and libraries) that are declared. -- This is immensely useful for e.g. sideprojects. This is like a more powerful version of asdf-vm.
How many of us Linux users have a collection of scripts and configs to set stuff up on a new install? Let's make that stuff automatic and more robust. Seems great.