- Allows you to use older versions without problems, hell I can easily get an emacs build from 200X! Very useful for older projects or across different machines - There's no problem dealing with many different versions of the same package at once. I could have 10 different packages all having a different version of gcc and I won't even notice. - Reproducible builds. A nixpkgs revision can be enough to reproduce a build, no more Builds on My Machine (tm) - Pin exact versions of packages, always creating the same environment. Really useful for development with other people - Easily and atomically roll back updates without any traces left behind.