12:15 - 13:00

The Nixpkgs infrastructure for Haskell packages has evolved over the course of several years, and the result of that process is a fairly sophisticated machinery that few people understand in its entirety. The purpose of this presentation is to take a look inside of that infrastructure and to explore ...

how Cabal files are converted to Nix build expressions,

how the "haskell-packages.nix" file is generated,

how configurations for different compiler versions are implemented,

how deep-overriding works in Haskell package sets, and

how the generic builder works and what options exist to tweak it.

For each of these topics, we'll discuss the current solution, the motivation for the choices underlying that solution, and the known issues and limitations.

The targeted audience are experienced Nix hackers with some understanding of Haskell's Cabal build system. Beginners should be able to follow most of the talk too, though, as we'll focus on algorithms and structure rather that spending our time reading code. Instead, the presentation is intended to enable its audience to read (and modify!) the code themselves afterwards.