NixOS
- 20 September 2008
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 43 (9), 367-378
- https://doi.org/10.1145/1411203.1411255
Abstract
Existing package and system configuration management tools suffer from an 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 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 NixOS, a non-trivial Linux distribution that uses the Nix package manager to build the entire system configuration from a purely functional specification.Keywords
This publication has 6 references indexed in Scilit:
- Experience reportPublished by Association for Computing Machinery (ACM) ,2007
- Secure sharing between untrusted users in a transparent source/binary deployment modelPublished by Association for Computing Machinery (ACM) ,2005
- A principled approach to operating system construction in HaskellPublished by Association for Computing Machinery (ACM) ,2005
- Space efficient conservative garbage collectionPublished by Association for Computing Machinery (ACM) ,1993
- Conception, evolution, and application of functional programming languagesACM Computing Surveys, 1989
- Make — a program for maintaining computer programsSoftware: Practice and Experience, 1979