SHARCNET clusters are predominately CentOS 6. We have installed the CentOS 6 packages we expect our users will use. We have also installed many CentOS 6 packages upon request as this is relatively easy to do. Not infrequently, however, we get requests for packages that the CentOS 6 version either does not exist or is too old. Things become difficult at this point. While possible to compile everything from source, usually the dependencies also do not exist or are too old, and this problem repeats itself. Trying to compile a single package quickly turns into having to compile ten.
We are currently trying out augmenting our system with the Nix package manager in the hopes that it will help address this issue. Nix brings several thousand new and newer packages to our clusters. Unlike traditional systems, it also maintains a custom environment for each user, frequently allows choice between versions and compile time options, and users can add their own packages too. You pick what you want, Nix compiles it and its dependencies, and then installs them in your environment. Nix either succeeds in updating your environment or doesn't change it (it's fully atomic). It also supports reverting back to any previous version of your environment (full roll-back).
This talk will introduce Nix and go over the basics of using Nix on SHARCNET systems.