GNU Guix System
GNU Guix System or Guix System (previously "GuixSD") is a rolling release, free and open source Linux distribution built around the GNU Guix package manager. It enables a declarative operating system configuration and allows reliable system upgrades that can easily be rolled back. It uses the GNU Shepherd init system and the Linux-libre kernel, with support for the GNU Hurd kernel under development. On February 3, 2015, the distribution was added to the Free Software Foundation's list of free Linux distributions. The Guix package manager and the Guix System drew inspiration from the Nix package  manager and NixOS respectively. Architecture support. The following CPU architectures are supported: IA-32, x64, ARM7, AArch64, POWER9. Features. System services. System services are a core feature in Guix System that enable the user to declaratively compose the configuration of daemons and background services and easily specify the relevant configurations. This enables the user to within a single configuration file declare the whole OS (e.g., to have a tor proxy, an sshd server, and a webserver serving guix-web via nginx on a specific port at bootup). System services can: Ricardo Wurmus, one of the maintainers, explains the extendability like this : All the services are defined using Guile Scheme. The list of services continue to grow and as of 1.0.0 the list of services includes the following: GNU Shepherd init system. Guix System 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 supplies 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. In contrast to systemd, a userspace shepherd process runs as that user. 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 a mail transfer agent (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 transitively 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, 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 Guix  System. Release and stability. Guix System to date has only an unstable development git repository shared with Guix but enables users or organizations to set up stable release channels themselves via the channel-feature. Updates. Packages in Guix are generally very up-to-date thanks to the lack of a package maintainer bottleneck: anyone can contribute an update subject to community approval and the process is assisted by tools such as "guix refresh". Changes to the git repository are peer-reviewed by community members and committed by one of the 45 people with commit access. In practice sometimes these builds  cause system breakages for users because of a typo or similar error, but these are often solved within minutes. The way Guix pull operates means users retain a working system in the meantime. Roll-back. If a system update should leave users with a broken system, users can easily roll back individual packages as well as the whole system state. This means that a stable channel which is very common in other Linux distributions is no longer needed for users who are willing to report a bug and wait a few minutes, when trying to update via "guix pull". Reception . Jesse Smith from DistroWatch Weekly reviewed GNU Guix System 0.15.0 (at the time named GuixSD), and said, "GuixSD has a package manager that I like", but criticized the limited hardware support and its limited documentation. The documentation has since then been expanded and improved with videos and a cookbook in six languages with tutorials, how-to guides and examples.