NixOS gives you the ability to define your system declaratively, upgrade or tweak without fear of breaking anything, and the ability to launch shells with arbitrary and well defined sets of dependencies.