NixOS is a functional Linux distribution based on the Nix package manager. It uses a functional script language to maintain the overall Linux host as which is also the basis of the package manager, in a realized solution of the Unix update problem.
|Company / developer||Universities of Delft and Utrecht|
|Source model||Free and open source software|
|Initial release||MM DD, 2006|
|Latest stable release||Rolling release|
|Update method||Package (re)Derivation|
|Supported platforms||IA-32, x86-64,|
|Kernel type||Monolithic (Linux)|
|Default user interface||tty|
|License||GNU General Public License, others|
NixOS uses a declarative approach to 'Nix host and package managment on the bare bones of a Unix implementation. BSD and other Unices are targetted but practically Linux is the only significantly supported OS.
Relation to LSB
NixOS is perforce, given its basic design principles, a unique Linux system. While there are some elements of commonality with various standards and in practice there currently at this writing over 3,000 working packages showing the abstraction of "Nix" can be realized, NixOS does not conform to common layout standards such as are common to most Linux distributions.
In particular, there is no /usr directory.
Most package managers center around the file format of packager and a set of command line and GUI frontends for managing the install of the package files. There is no such file format for Nix, the corresponding thing being the framework for capturing software configurations and the functional scripting language in which it is implemented. Command line utilities are the reference means of working with Nix packages and Nixos and there are derivative systems with GUIs.
The Expression Language
Figure 1 shows the syntax of the Nix expression languages. The scripting which declaratively captures the elements of a given Nix configuration item so that it can be manipulated in operations is called that package's expression
NixOS uniformly uses the [:en:Upstart|Upstart]] asynchronous, event-driven alternative to the standard Sys V initctl mechanism for management of processes as jobs.