Nix is a
cross-platform
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software ...
package manager
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals w ...
that utilizes a purely
functional
Functional may refer to:
* Movements in architecture:
** Functionalism (architecture)
** Form follows function
* Functional group, combination of atoms within molecules
* Medical conditions without currently visible organic basis:
** Functional s ...
deployment model where software is installed into unique directories generated through
cryptographic hashes. It is also the name of the tool's programming language. A package's hash takes into account the dependencies, which is claimed to eliminate
dependency hell Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.
The dependency issue arises when several packages have ...
, as an alternative to the typical solution of installing multiple versions of dependencies at the same time. This package management model advertises more reliable,
reproducible
Reproducibility, also known as replicability and repeatability, is a major principle underpinning the scientific method. For the findings of a study to be reproducible means that results obtained by an experiment or an observational study or in a ...
, and portable packages.
Nix packages are defined through a
lazy functional programming language specifically designed for package management. Dependencies are tracked directly in this language through an intermediate format called "derivations". A Nix environment keeps track of references automatically, which allows unused packages to be
garbage collected
Garbage, trash, rubbish, or refuse is waste material that is discarded by humans, usually due to a perceived lack of utility. The term generally does not encompass bodily waste products, purely liquid or gaseous wastes, or toxic waste produ ...
when no other package depends on them. At the cost of greater storage requirements, all upgrades in Nix are guaranteed to be both
atomic and capable of efficient roll-back. This also enables multiple users to safely install software on the same system without
administrator privileges.
Nix has full support for
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
and
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
and can safely be installed side by side with an existing package manager.
NixOS
NixOS
NixOS is a Linux distribution built on top of the Nix package manager. It uses declarative configuration and allows reliable system upgrades. Several official package "channels" are offered, including the current Stable release and the Unstable ...
is a
Linux distribution
A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that includes the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading on ...
using Nix for managing software in the system, including the Linux kernel.
Nixpkgs
Nixpkgs is the package repository built upon the Nix package manager. According to Repology, as of July 2021 it contains more than 70,000 packages, and is the most up-to-date package repository.
See also
*
Maak
In computing, Maak is a utility similar to make, designed to build complex software systems while avoiding the need to recompile the entire system every time a change is made. "Maak" is Dutch for "make".
See also
*Nix package manager
Nix is a ...
: a build automation utility similar to make, designed to build complex software systems.
*
GNU Guix
GNU Guix () is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the default ...
: another declarative package manager using
GNU Guile
GNU Ubiquitous Intelligent Language for Extensions (GNU Guile) is the preferred extension language system for the GNU Project and features an implementation of the programming language Scheme. Its first version was released in 1993. In additio ...
for configuration and customization.
*
Runbook automation
In a computer system or network, a runbook is a compilation of routine procedures and operations that the system administrator or operator carries out. System administrators in IT departments and NOCs use runbooks as a reference.
Runbooks can ...
: a functionality in Nix.
References
External links
*
Comparison ofZero Install
Zero Install is a means of distributing and packaging software for multiple operating systems (Unix-like including Linux and macOS, Windows).
Software
Rather than the normal method of downloading a software package, extracting it, and instal ...
and systems such as Nix
Debian developer criticism(2008)
*Introduction
Purely Functional Configuration Management with Nix and NixOSNixOS Desktop FlowNixpkgs GitHub repository
{{Package management systems
2012 software
Data management software
Free computer programming tools
Free package management systems
Functional programming
GNU Project software
Linux package management-related software
Unix software
Configuration management