NixCon 2022

Nix in a scientific environment: bringing together Nix's reproducibility with computational chemistry
2022-10-20 , Main track (Gym)

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.


Resources:
* Link to the overlay: https://github.com/markuskowa/NixOS-QChem
* We have published a paper in a scientific journal, describing the approach:
M. Kowalewski, P. Seeber, “Sustainable Packaging of Quantum Chemistry Software with the Nix Package Manager”, Int. J. Quantum Chem., 122, e26872 (2022).


What level of experience in Nix is the talk addressed to?:

Mid-level

Nix enthusiast since 2017, maintainer of 50+ packages, and author of the NixOS-QChem overlay.

In my day job, I am a professor for chemical physics at Stockholm University, who runs his research heavily with Nix.

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.