• Corpus ID: 6985001

Functional Package Management with Guix

  title={Functional Package Management with Guix},
  author={Ludovic Court{\`e}s},
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… 

Figures from this paper

Code staging in GNU Guix

G-expressions or "gexps" provide a novel way to cover many aspects of OS configuration in a single, multi-tier language while facilitating code reuse and code sharing.

Reproducible and User-Controlled Software Environments in HPC with Guix

This work presents GNU Guix and the functional package management paradigm and shows how it can improve reproducibility and sharing among researchers with representative use cases.

Modus: a Datalog dialect for building container images

Modus, a Datalog dialect for building container images that reduces the code size by 20.1% compared to the used ad-hoc solutions, while imposing a negligible performance overhead, preserving the original image size and image efficiency.

Making Scientific Software Installation Reproducible On Cray Systems Using EasyBuild

This paper presents how EasyBuild has been integrated with the Cray PE, in order to leverage the provided optimized components and support an easy way to deploy tools, libraries and scientific applications on Cray systems.

Building a Secure Software Supply Chain with GNU Guix

The main contribution is a model and tool to authenticate new Git revisions, building on Git semantics, that shows how Guix can be used as the foundation of secure software supply chains.

On the use of package managers by the C++ open-source community

It is concluded that most participants are not reluctant to use C++ package managers and that Open-Source licensing, High Availability of Libraries, Good Documentation, and Ease of Configuration can be considered crucial factors for the successful adoption of C++ dependency management via language-specific package managers.

Debootstrapping without Archeology: Stacked Implementations in Camlboot

This document is the first scholarly discussion of “tailored” debootstrapping for high-level programming languages, and proves the absence of trusting trust attack in the existing bootstrap binaries of the standard OCaml implementation.

Painless Transposition of Reproducible Distributed Environments with NixOS Compose

This paper introduces the notion of environment transposition and implements it in NixOS Compose, a tool that generates reproducible distributed environments and enables users to deploy their environments on virtualized or physical platforms with the same unique description of the environment.

Modular architecture for code and metadata sharing

This paper proposes a modular system architecture, Haknam, better suited for code and related metadata sharing, which precisely tracks code interdependencies, allows flexible naming and querying of code references, and collects code fragments and their related metadata as messages in a distributed log-centric pipeline.

Relationship Maintenance in Software Language Repositories

  • R. Lämmel
  • Computer Science
    Art Sci. Eng. Program.
  • 2017
A corresponding language Ueber with an executable semantics is introduced which maintains relationships between language-typed artifacts in an SLR, based on the comprehensive, formal, executable (logic programming-based) definition of the Uebers.



NixOS: a purely functional Linux distribution

This paper has implemented the NixOS system configuration model, which means that all static parts of a system are built by pure functions and are immutable, stored in a way analogously to a heap in a purely function language.

An adaptive package management system for scheme

The main characteristic of this system is its neutrality with respect to the various Scheme implementations, which allows the programmer to blend, within the same program, independent components which have been developed and tested within different Scheme implementations.

Nix: A Safe and Policy-Free System for Software Deployment

Nix is presented, a deployment system that addresses safety and flexibility issues through a simple technique of using cryptographic hashes to compute unique paths for component instances.

The GNU manifesto

This project aims to supply, eventually, everything useful that normally comes with a Unix system, and more.

Caching function calls using precise dependencies

This paper describes the implementation of a purely functional programming language for building software systems, and sketches how the language interpreter calculates precise dependencies that are both dynamic and fine-grained.

Staged deployment in mirage, an integrated software upgrade testing and distribution system

The authors' evaluation focuses on the most novel aspect of Mirage, namely its staged upgrade deployment based on the clustering of usermachines according to their environments and configurations, and suggests that Mirage's staged deployment is effective for real upgrade problems.

The Depot: A Framework for Sharing Software Installation Across Organizational and UNIX Platform Boundaries

The depot is a coherent framework for distributing and administering non-OSdistribution UNIX applications across extensibly numerous and diverse computer platforms. It is designed to promote reliable

Applying Module System Research to Package Management

Package managers found in popular operating systems are similar to module systems in many programming languages. Recent language research has focused on numerous ways to improve module systems,

Revised4 report on the algorithmic language scheme

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis

Store - a System for Handling Third-Party Applications in a Heterogeneous Computer Environment

The Store system administration tool suite is presented, which helps administering third party applications in a heterogeneous Unix environment, giving better overview, more consistency, and less manual work.