User:Gwern/Nix Package Manager

From Wikipedia, the free encyclopedia

Nix Package Manager
Platform Linux, Unix-like
License LGPL
Website nix.cs.uu.nl

Nix is a package manager for computer systems. Like RPM and many other package managers, it is able to control the installation of packages, or named and versioned groups of files, such as software applications or their associated configuration data.

Unlike traditional package managers, Nix is founded on a clear theory of dependencies between packages, using a model analogous to memory management in modern programming languages. It uses a particularly precise set of techniques, based on cryptographic hashes, for determining the exact dependencies of every package, both at build and run times; and permits multiple versions of any package to coexist with no interference, including parametrized packages such as a program with and without a certain feature. All upgrades are safe (guaranteed not to break existing applications) and changes are performed atomically.

Nix packages are configured using a lazy, pure-functional language especially designed for this purpose; shell scripts or any other external program (such as Make) may be used to build packages from source code. Unlike most package managers, not only are source packages fully supported, but binary packages are treated purely as a transparent optimization. Another transparent optimization permits efficient binary patches to an installed package base.

Nix may also be used to maintain any kind of file configurations, such as server setups, in addition to software packages in the strict sense.

A derived project, NixOS, aims to create a complete GNU/Linux-based operating system using Nix consistently for every piece of software in the system. Nix can also be used, with some caveats, as a package manager on top of an existing operating system, such as another GNU/Linux distribution.

[edit] External links