Funktionen

Print[PRINT]
.  Home  .  Lehre  .  Studentische Arbeiten  .  Masterarbeiten  .  Ausschreibung

BA/MA: Migrating HPC Users to Reproducible Builds with Nix

Nix is an ecosystem of packages with the functional Nix programming language at its core. It is used to describe software packages, their dependencies and options in a declarative manner. Given a description of a package, the Nix package manager produces the exact same software, complete with dependencies, on every installation.

This appeals to researches who strive to have reproducible software builds and want to make the installation of their software as easy as possible. Scientific software often has a lot of dependencies of highly optimized software packages. These are typically managed as modules by administrators of supercomputers like the SuperMUC-NG at the LRZ in Garching. It uses a module system like lmod to dynamically load and unload software of specific versions.

In this work we want to investigate how an existing module system can be transparently migrated to Nix. The first central task would be to install the packages' software via the Nix package manager. Depending on the interest of the candidate, one can investigate further:

  • Can the module system use Nix under the hood without changing the interface?
  • Is it possible for modules and Nix environments/shells to coexist?
  • Can Nix Flakes be generated from the set of loaded modules?
  • How can the developer experience be improved by Nix?
  • What are the implications of the administration of a supercomputer?
  • ... any many more: whatever you find interesting!

This work can be offered as a Master or Bachelor thesis.

Zusätzliche Informationen

Voraussetzungen

  • First experience with functional programming
  • Experience with shells in Linux environments

Überblick der (möglichen) Aufgaben

  • Setting up a test environment, for example a virtual machine
  • Installing modules via Nix (see nix-modules)
  • Writing a module wrapper for Nix
  • Generating Flakes automatically
  • Evaluation on a distributed cluster

Organisatorisches