START Conference Manager    

NixOS: A Purely Functional Linux Distribution

Eelco Dolstra and Andres Löh

The 13th ACM SIGPLAN International Conference on Functional Programming (ICFP 2008)
Victoria, British Columbia, Canada, September 22-24, 2008


Existing package and system configuration management tools suffer from an \emph{imperative model}, where system administration actions such as upgrading packages or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to run multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a \emph{purely functional system configuration model}. This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogously to a heap in a purely function language. We have implemented this model in \emph{NixOS}, a non-trivial Linux distribution that uses the \emph{Nix package manager} to build the entire system configuration from a purely functional specification.

START Conference Manager (V2.54.6)