Coming from Nix (guix's more popular, but less freedom-focused cousin).. I think part of what makes Nix "next generation" is that its functionality allows for more powerful use than "install/upgrade/uninstall package".
It's neat to be able to use some program without having to install/uninstall it.
I find it useful to be able to programmatically declare a set of packages (& lock their versions) that I want available when working on a project.