Difference between revisions of "NixOS"

From Cibernética Americana
 
(56 intermediate revisions by 2 users not shown)
Line 1: Line 1:
''NixOS'' is a [[:en:functional programming|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.
+
'''NixOS''' is a [[:en:functional programming|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.
 
+
{{TOCleft}}
 
{{Infobox OS
 
{{Infobox OS
 
| name                  = NixOS
 
| name                  = NixOS
| logo                  = [[image:nixos-lores.png|100px|Gentoo logo]]
+
| logo                  = [[image:nixos-lores.png|100px|NixOS logo]]
| screenshot            = [[image:GentooTen.png|250px]]
+
| screenshot            = [[image:nixos-kde42-1-small.png|250px]]
 
| caption                = Screenshot caption
 
| caption                = Screenshot caption
 
| developer              = Universities of Delft and Utrecht
 
| developer              = Universities of Delft and Utrecht
| family                = [[Unix-like]]
+
| family                = [[:en:Unix-like|Unix-like]]
| source_model          = [[Free and open source software]]
+
| source_model          = [[:en:Free and open source software|Free and open source software]]
 
| released              = MM DD, 2006  
 
| released              = MM DD, 2006  
| latest_release_version = [[Rolling release]] <!-- Weekly minimal install builds are available on Gentoo's site above the old 2008 releases -->  
+
| latest_release_version = [[:en:Rolling release|Rolling release]] <!-- Weekly minimal install builds are available on Gentoo's site above the old 2008 releases -->  
 
| latest_release_date    = <!-- once a week or so depending on the pc architecture the minimal install iso is being built for -->
 
| latest_release_date    = <!-- once a week or so depending on the pc architecture the minimal install iso is being built for -->
| kernel_type            = [[Monolithic kernel|Monolithic]] ([[Linux kernel|Linux]])
+
| kernel_type            = [[:en:Monolithic kernel|Monolithic]] ([[:en:Linux kernel|Linux]])
| userland = [[GNU Core Utilities|GNU]]
+
| userland = [[:en:GNU Core Utilities|GNU]]
 
| ui                    = tty
 
| ui                    = tty
| license                = [[GNU General Public License]], others
+
| license                = [[:en:GNU General Public License|GNU General Public License]], others
 
| working_state          = Current
 
| working_state          = Current
| supported_platforms    = [[IA-32]], [[x86-64]],  
+
| supported_platforms    = [[:en:IA-32|IA-32]], [[:en:x86-64|x86-64]],  
| updatemodel            = Package Derivation
+
| updatemodel            = Package (re)Derivation
| package_manager        = [[Nix (software)]]
+
| package_manager        = Nix
 
| website                = http://nixos.org
 
| website                = http://nixos.org
 
}}
 
}}
 +
 +
== English Wiki ==
 +
 +
[[:en:NixOS|<span style="background-color: white;">NixOS</span>]]
  
 
== Organization ==
 
== Organization ==
Line 28: Line 32:
 
Linux is the only significantly supported OS.
 
Linux is the only significantly supported OS.
  
=== Relation to LSB ===
+
=== Relation to [[:en:Linux Standard Base|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 are 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.
  
 
=== Nix ===
 
=== Nix ===
 +
 +
Most package managers center around a file format 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 ====
 
==== The Expression Language ====
 +
 +
Figure 1 shows the syntax of the Nix expression language. 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''<ref>[http://www.st.ewi.tudelft.nl/~dolstra/pubs/nixos-jfp-submitted.pdf ''NixOS: A Purely Functional Linux Distribution'' Dolstr and L&ouml;h]</ref>
  
 
==== Package Derivation ====
 
==== Package Derivation ====
  
 +
The development and maintenance of a Nix package from its author's distributed package (or the original packaging in a native Nix package) is called a ''derivation''.
 +
 +
[[File:nix-expression-BNF.jpg|thumb|275px|left|Figure 1: [[:en:Backus-Naur form|BNF]] of the Nix Expression language]]
 
=== Upstart ===
 
=== Upstart ===
 +
 +
NixOS uniformly uses the [[:en:Upstart|Upstart]] asynchronous, event-driven alternative to the standard Sys V initctl mechanism for management of processes as  ''jobs''.
  
 
== Features ==
 
== Features ==
 +
NixOS declarative configuration management approach is the basis of a number of distinctive features.
 +
 +
===Continuous integration===
 +
 +
Via the Hydra subproject, NixOS supports a continuous integration build model.
 +
 +
===Rollback===
 +
 +
Configuration changes whether system wide or those of a particular user can be rolled back with a single command.
 +
 +
===User/Package Isolation===
 +
 +
Users have their own package managment environments, something lacking in other package managers where the user is assumed to be the superuser.
  
 
== History ==
 
== History ==
Line 49: Line 79:
  
 
== Notes ==
 
== Notes ==
 +
<references/>
  
 
== External Links ==
 
== External Links ==
  
 
*[http://wiki.nixos.org Nixos Wiki]
 
*[http://wiki.nixos.org Nixos Wiki]

Latest revision as of 07:59, 21 February 2019

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.

NixOS
NixOS logo
Nixos-kde42-1-small.png
Screenshot caption
Company / developer Universities of Delft and Utrecht
OS family Unix-like
Working state Current
Source model Free and open source software
Initial release MM DD, 2006
Latest stable release Rolling release
Update method Package (re)Derivation
Package manager Nix
Supported platforms IA-32, x86-64,
Kernel type Monolithic (Linux)
Userland GNU
Default user interface tty
License GNU General Public License, others
Official website http://nixos.org

English Wiki

NixOS

Organization

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 are 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.

Nix

Most package managers center around a file format 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 language. 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[1]

Package Derivation

The development and maintenance of a Nix package from its author's distributed package (or the original packaging in a native Nix package) is called a derivation.

Figure 1: BNF of the Nix Expression language

Upstart

NixOS uniformly uses the Upstart asynchronous, event-driven alternative to the standard Sys V initctl mechanism for management of processes as jobs.

Features

NixOS declarative configuration management approach is the basis of a number of distinctive features.

Continuous integration

Via the Hydra subproject, NixOS supports a continuous integration build model.

Rollback

Configuration changes whether system wide or those of a particular user can be rolled back with a single command.

User/Package Isolation

Users have their own package managment environments, something lacking in other package managers where the user is assumed to be the superuser.

History

Project Organization

Installation of Software Packages

See Also

Notes

External Links