Existing package and system configuration management tools suffer from an imperative model, where system administration actions such as package upgrades 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 deploy 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 analogous to a heap in a purely functional 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 modular, purely functional specification.
Description
NixOS: A purely functional Linux distribution | Journal of Functional Programming | Cambridge Core
%0 Journal Article
%1 dolstra2010nixos
%A DOLSTRA, EELCO
%A LÖH, ANDRES
%A PIERRON, NICOLAS
%B Journal of Functional Programming
%D 2010
%I Cambridge University Press
%K distro linux
%N 5-6
%P 577-615--
%R DOI: 10.1017/S0956796810000195
%T NixOS: A purely functional Linux distribution
%U https://www.cambridge.org/core/article/nixos-a-purely-functional-linux-distribution/C1ACBA2A51D2E5466820F5B5086EA2CE
%V 20
%X Existing package and system configuration management tools suffer from an imperative model, where system administration actions such as package upgrades 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 deploy 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 analogous to a heap in a purely functional 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 modular, purely functional specification.
@article{dolstra2010nixos,
abstract = {Existing package and system configuration management tools suffer from an imperative model, where system administration actions such as package upgrades 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 deploy 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 analogous to a heap in a purely functional 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 modular, purely functional specification.},
added-at = {2021-11-01T04:15:55.000+0100},
author = {DOLSTRA, EELCO and LÖH, ANDRES and PIERRON, NICOLAS},
biburl = {https://www.bibsonomy.org/bibtex/20c083fc9de01976a66575727de3f8215/arinbasu},
booktitle = {Journal of Functional Programming},
description = {NixOS: A purely functional Linux distribution | Journal of Functional Programming | Cambridge Core},
doi = {DOI: 10.1017/S0956796810000195},
interhash = {1b3cde53405da70e32d505daf9d7dbf8},
intrahash = {0c083fc9de01976a66575727de3f8215},
issn = {09567968},
keywords = {distro linux},
number = {5-6},
pages = {577-615--},
publisher = {Cambridge University Press},
timestamp = {2021-11-01T04:15:55.000+0100},
title = {NixOS: A purely functional Linux distribution},
url = {https://www.cambridge.org/core/article/nixos-a-purely-functional-linux-distribution/C1ACBA2A51D2E5466820F5B5086EA2CE},
volume = 20,
year = 2010
}