Brussels / 3 & 4 February 2024


Units of composition: recipes, overlays, and packages

This talk introduces a way to talk about and structure large and small projects. There are common patterns in use in Nixpkgs that are there to provide a great deal of power and flexibility, but they are often challenging for beginners. This talk examines an approach that can smoothly introduce the relevant concepts and provide an easier learning curve.

Recipes are those things we find throughout Nixpkgs and are normally targets of callPackage. We need a name for these, in order to talk about them, manage, manipulate, inherit, and organize them. By adding this to our vocabulary and to the standard output of the flake schema, we gain many benefits. This talk will

  • introduce and describe callPackage
  • present overlays and the potential pitfalls
  • describe package sets within Nixpkgs (perlPackages, pythonPackages, etc)
  • propose a recommended flake structure
  • present a solution to the “system” problem
  • present a solution to lockfile bloat.


Photo of Tom Bereknyei Tom Bereknyei