I've studied chemistry at the Friedrich Schiller University Jena where I specialised early on theoretical chemistry. Working on artifical photocatalysis for some time, I am now developing and implementing multiscale computational models for large and complex chemical systems in Haskell.
The complexity and diversity of computational chemistry software (mainly MPI parallel codes in C, Fortran, C++, Python, Ruby) and regularly breaking software on HPC clusters lead me to nix.
Meanwhile we gradually adopted more and more Nix and NixOS in the workflow in our workgroup.
I am currently writing my PhD thesis.
High performance compute clusters in a scientific environment are rather specialized environments,
that provide highly specialized software packages for scientists.
Performance optimizations, specific to the given cluster, are an important part of the setup.
In many places, these packages are still hand compiled, hand tested and
made available via the "modules" system, which makes upgrading a package a difficult process.
To the experienced Nix user, it may be obvious that Nix can solve problems with providing software
to users while, at the same time, also providing a path to reproducibility of scientific results.
We thus have developed the NixOS-QChem overlay to provide computational chemistry software packages
in a reproducible, transferable, and customizable way. The overlay provides more than 30
chemistry related software packages, as well as optimized versions of upstream nixpkgs packages.
In this talk, I will give an overview over the overlay and how we have adapted it for a scientific
compute environment, as well as the challenges that we have faced while packaging some more exotic packages.
The focus here will be mainly on the Nix related aspects and lessons learned that apply also to other scientific packages.