Guix System Distribution (abbreviated GuixSD) is a Linux distribution built around the GNU Guix package manager. It uses the Linux-libre kernel, with support for the GNU Hurd under development. On February 3, 2015, the distribution was added to the Free Software Foundation's list of free Linux distributions.
uix System Distribution (GuixSD) is a Linux-based, stateless operating system that is built around the GNU Guix package manager.
The operating system provides advanced package management features such as transactional upgrades and roll-backs, reproducible build environments, unprivileged package management, and per-user profiles.
It uses low-level mechanisms from the Nix package manager, but packages are defined as native Guile modules, using extensions to the Scheme language
GuixSD is based on GNU Guix, a purely functional package and system configuration manager derived from Nix, using the GNU Guile implementation of the Scheme programming language. All package recipes, as well as the whole system configuration, are written in declarative embedded domain-specific languages in Guile Scheme.
GuixSD uses the GNU Daemon Shepherd as its init system, which is developed in tandem with Guix and is written in Guile as well. It was previously known as "dmd", which stood for "Daemon managing Daemons" or "Daemons-managing Daemon", but changed names to avoid collision with the Digital Mars D compiler.
Shepherd takes some inspiration from systemd, another recent init system, in supplying user space functionality asynchronously as services, which under Shepherd are generic functions and object data types that are exported for use by the Shepherd to extend the base operating system in some defined way. Core to the Shepherd model of user space initialisation is the concept of the extension, a form of composability where services are designed to be layered onto other services, augmenting them with more elaborate or specialised behaviours as desired.
This expresses the instantiation-based dependency relationships found in many modern init systems,making the system modular, but also allows services to interact variadically with other services in arbitrary ways.
Shepherd also provides so-called virtual services which allow dynamic dispatch over a class of related service objects, such as all those which instantiate an MTA for the system.A system governed via the Shepherd daemon can represent its user space as a directed acyclic graph, with the "system-service" − responsible for early phases of boot and init − as its root, and all subsequently initialised services as extensions to system-service's functionality, either directly or over other services.
Being both written and configured in Guile Scheme, GNU Shepherd is intended to be highly programmable by the system administrator, but it can also be used to manage per-user profiles of unprivileged daemons and services.
Its services and configuration are stored uniformly as object-oriented Scheme code, and while a core set of services are provided with the basic Guix System Distribution, arbitrary new services can be flexibly declared, and through Guile's object system, GOOPS, existing services can be redefined at the user's discretion by asking the Shepherd to dynamically rewrite services in specified ways on instantiation.
GNU Shepherd was originally designed to work with GNU Hurd, and was later adopted by GuixSD.
Guix comes with a distribution of the GNU system consisting entirely of free software1. The distribution can be installed on its own but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system.
To distinguish between the two, we refer to the standalone distribution as the Guix System Distribution, or GuixSD.
Guix System Distribution (GuixSD) is a Linux-based, stateless operating system that is built around the GNU Guix package manager. The project's latest release, version 0.15.0, includes improvements to the Guix package manager and expands support for ARM-powered devices, though ARM ports will need to be built by the user; installation images for ARM are not provided. "The unloved guix pull command, which allows users to upgrade Guix and its package collection, has been overhauled and we hope you will like it. We'll discuss these enhancements in another post soon but suffice to say that the new guix pull now supports rollbacks (just like the guix package) and that the new --list-generations option allows you to visualize past upgrades. It's also faster, not as fast as we'd like though, so we plan to optimize it further in the near future. guix pack can now produce relocatable binaries. With '-f squashfs', it can now produce images stored as SquashFS file systems. These images can then be executed by Singularity, a 'container engine' deployed on some high-performance computing clusters. GuixSD now runs on ARMv7 and AArch64 boxes." Further details can be found in the project's release announcement. Download: guixsd-install-0.15.0.x86_64-linux.iso.xz (186MB, signature, pkglist).
• 2018-07-06: Distribution Release: Guix System Distribution 0.15.0
• 2017-05-22: Distribution Release: Guix System Distribution 0.13.0
• 2016-12-25: Distribution Release: Guix System Distribution 0.12.0
• 2016-08-03: Distribution Release: Guix System Distribution 0.11.0
• 2016-03-29: Distribution Release: Guix System Distribution 0.10.0
For information on porting to other architectures or kernels.
• System Installation:
Installing the whole operating system.
• System Configuration:
Configuring the operating system.
Browsing software user manuals.
• Installing Debugging Files:
Feeding the debugger.
• Security Updates:
Deploying security fixes quickly.
• Package Modules:
Packages from the programmer’s viewpoint.
• Packaging Guidelines:
Growing the distribution.
GNU/Linux built from scratch.
Targeting another platform or kernel.