I get the feel that Nix does something like what virtualenv does for python, but more generalized to make that work for other software. Is that approximately right?
Yes, I also was immediately reminded of Python's conda based environment management. E.g. 'source activate <env1>' may have python3 but when used with <env2> will use python2 and different version of other libraries.