Functional Package Management with Guix
Abstract
We describe the design and implementation of GNU Guix, a purely functional package manager designed to support a complete GNU/Linux distribution. Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. It builds upon the low-level build and deployment layer of the Nix package manager. Guix uses Scheme as its programming interface. In particular, we devise an embedded domain-specific language (EDSL) to describe and compose packages. We demonstrate how it allows us to benefit from the host general-purpose programming language while not compromising on expressiveness. Second, we show the use of Scheme to write build programs, leading to "two-tier" programming system.
- Publication:
-
arXiv e-prints
- Pub Date:
- May 2013
- DOI:
- 10.48550/arXiv.1305.4584
- arXiv:
- arXiv:1305.4584
- Bibcode:
- 2013arXiv1305.4584C
- Keywords:
-
- Computer Science - Programming Languages
- E-Print:
- European Lisp Symposium (2013)