NixOS

NixOSTemplate:Dark mode switch

Developer| NixOS contributors
NixOS Foundation[1][2]
Written in| Nix expression language[note 1]
OS family| Linux (Unix-like)
Working state| Current
Source model| Open source
Initial release| 3 June 2006; 20 years ago (2006-06-03)
|Final release|Latest release}}| 25.11 / November 30, 2025; 7 months ago (2025-11-30)
|Final preview|Latest preview}}| 26.05-pre / November 30, 2025; 7 months ago (2025-11-30)
Marketing target| General purpose
Package manager| Nix
Platforms| fully supported: x86-64, AArch64;[3] limited support (must be built from source): i686[4]
Kernel type| Monolithic (Linux kernel)
Userland| GNU
License| MIT[5][note 2]
Official website| {{{1}}}

NixOS is a Linux distribution built around the Nix package manager. Unlike traditional Linux distributions, NixOS is configured using a functional language that describes the system configuration. It generates complete system profiles, enabling reproducible deployments, atomic upgrades, and system rollbacks.[6]

NixOS relies on the Nixpkgs collection of package definitions and the Nix expression language for declaring packages and system options.[7] It is free and open-source software under the MIT License.[8][note 2]

## Contents

* 1 History
* 2 Release version history
* 3 Features
* 3.1 Declarative configuration model
* 3.2 Atomic upgrades and rollbacks
* 3.3 Reproducible system configurations
* 3.4 Multi-user package management
* 3.5 Nix-shell
* 3.6 Experimental features
* 3.6.1 Nix command
* 3.6.2 Flakes
* 4 Implementation
* 4.1 The Nix store
* 4.2 Source-based model with binary cache
* 5 Reception
* 6 Community
* 6.1 Wiki
* 7 See also
* 8 Notes
* 9 References
* 10 External links

## History

Nix as a package manager originated in 2003 as a research project by Eelco Dolstra at Utrecht University under the supervision of Eelco Visser. Dolstra’s 2006 doctoral thesis, The Purely Functional Software Deployment Model, describes a declarative and functional approach to software deployment and lays out the design of the Nix package manager.[9][10]

The first NixOS prototype was created by Armijn Hemel in 2006 as part of his Master's thesis NixOS: The Nix Based Operating System, which explored applying Nix and its principles to a Linux distribution. Hemel demonstrated the application of package management, system services, kernel management, and other principles that defined NixOS.[11][12] After continued development, NixOS issued its first stable release, version 13.10, in 2013.[13]

The NixOS Foundation, a Dutch non-profit established in 2015, supports the development and community infrastructure of NixOS and related Nix projects.[14]

## Release version history

Version  | Name  | Date

|
|

13.10  | Aardvark | 2013-12-01
14.04  | Baboon | 2014-05-30
14.12  | Caterpillar | 2015-01-30
15.09  | Dingo | 2015-10-30
16.03  | Emu | 2016-05-01
16.09  | Flounder | 2016-10-03
17.03  | Gorilla | 2017-05-31
17.09  | Hummingbird | 2017-10-02
18.03  | Impala | 2018-04-04
18.09  | Jellyfish | 2018-10-06
19.03  | Koi  | 2019-04-10
19.09  | Loris | 2019-10-09
20.03  | Markhor  | 2020-04-20
20.09  | Nightingale | 2020-10-27
21.05  | Okapi  | 2021-06-01
21.11  | Porcupine | 2021-11-30
22.05  | Quokka | 2022-05-30
22.11  | Raccoon | 2022-12-01
23.05  | Stoat | 2023-05-31
23.11  | Tapir | 2023-11-29
24.05  | Uakari  | 2024-05-31
24.11  | Vicuña  | 2024-11-30
25.05  | Warbler | 2025-05-23
25.11  | Xantusia | 2025-11-30
26.05  | Yarara  | 2026-05
{{{2}}}

Since 2021, NixOS publishes stable releases twice per year, near the ends of May and November.[15][16][17] Prior to the first stable release in 2013, major versions were numbered semantically, up to release 0.2.[18]

## Features

NixOS graphical installer (based on Calamares)

### Declarative configuration model

In NixOS, the entire operating system—including the kernel, applications, system packages, and configuration files—is built by the Nix Package manager from a definition in the Nix language. Building a new version will not overwrite previous versions.[19]

A NixOS system is configured by specifying the desired state in a Nix expression file, typically `/etc/nixos/configuration.nix`. The following example configures the bootloader and enables the OpenSSH daemon:[20]

boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.openssh.enable = true;

Changes may be built and activated with the `nixos-rebuild` command, which evaluates the configuration, builds the necessary derivations, and produces a new system generation.[6]

### Atomic upgrades and rollbacks

Configurations in Nix are evaluated as pure, declarative expressions. Given the same inputs (such as the Nixpkgs revision and configuration files), evaluation is deterministic and produces the same build plan, independent of the machine’s prior state.[21]

Upgrades and configuration changes to NixOS systems are applied transactionally. New system generations are activated atomically, so that previous generations are retained and may be rolled back. If an upgrade is interrupted (for example, by power failure), the system remains consistent and will boot either the old or the new configuration.[22][23]

If, after a system update, the new configuration is undesirable, it may be rolled back by switching to a previous generation (`nixos-rebuild switch --rollback`). New generations are automatically added to the system bootloader and may be selected prior to boot. Rollbacks are lightweight operations that switch system references to different store paths.[24]

### Reproducible system configurations

NixOS uses a declarative configuration model that allows system configurations to be reproduced on different machines. By sharing a configuration file with a target machine, users can generate an equivalent system, including the kernel, applications, and system services. Components not managed by the package manager, such as user data, are not affected by this process.

### Multi-user package management

In addition to the system-wide profile, every normal user in a NixOS system has a profile in which they can install packages without special privileges. In the Nix store, multiple versions of a package may coexist, allowing different users to have alternate versions of the same package installed in their respective profiles, or share an identical version.

Nix’s security model restricts what unprivileged users can influence. Prebuilt binaries may be fetched from binary caches that are explicitly trusted by the system configuration, otherwise packages are built locally in a sandbox. Without special privileges, users cannot pass options that would introduce impurities into builds or use untrusted caches.

### Nix-shell

The nix-shell command starts an interactive shell based on a Nix expression. It allows developers to work with isolated sets of dependencies without affecting the system globally.[25]

### Experimental features

#### Nix command

The `nix` command provides a redesigned command-line interface for the Nix package manager, intended to replace the traditional `nix-env`, `nix-build`, and related commands. It introduces a more consistent syntax and improved user experience with commands such as `nix build`, `nix develop`, and `nix run`. The goal was to simplify common operations and provide better functionality through a unified command structure.

#### Flakes

Flakes provide a standard structure for Nix expressions that explicitly declare dependencies and outputs. Each flake contains a flake.nix file that specifies its inputs (dependencies, external flakes, repositories) and outputs (packages, NixOS configurations, and development environments). Flakes use a lock file to keep exact versions of dependencies to ensure that evaluations remain reproducible over time. The feature provides a standardized way to define, manage, and share Nix expressions, while making it easier to create and maintain reproducible systems.[26]

## Implementation

### The Nix store

Installed packages are stored in a read-only directory known as the Nix store, commonly located at `/nix/store`. Packages in the store are identified by a cryptographic hash of all input used for their build. This system is also used to manage configuration files, ensuring that newer configurations do not overwrite older ones.

An implication of these principles is that NixOS does not follow the Filesystem Hierarchy Standard. The only exceptions are that a `/bin/sh` symlink is created to the version of bash in the Nix store (e.g. `/nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/`), and while NixOS does have an `/etc` directory to keep system-wide configuration files, most files in that directory are symlinks to generated files in the Nix store, such as `/nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config`. By not using global directories such as `/bin`, Nix allows multiple versions of a package to coexist, avoiding package conflicts sometimes known as "dependency hell".

This also means that AppImage executables cannot be run directly as they expect certain libraries to exist on certain paths.[27] This can be worked around by running them through an interpreter.[27]

Nix maintains consistency between the running system and its logical specification by rebuilding packages as needed. When the kernel is modified, external kernel modules are automatically rebuilt. Similarly, updates to libraries trigger rebuilds of all system packages that depend on them, including those with static linking.

### Source-based model with binary cache

The Nix build language used by NixOS specifies how to build all packages from source. This makes it easy to adapt the system to user needs and create new packages. To avoid long and intensive builds from source, the package manager automatically downloads pre-built binaries from a cache server known as a "substituter" when they are available. It is possible to disable substitutions and force building from source by passing `--option substitute false` to a build. Changing any of the build options from the defaults will also cause packages to be built from source. This gives the flexibility of a source-based package management model, with the efficiency of a binary model.[28]

## Reception

Jesse Smith, reviewing NixOS 15.09 for DistroWatch Weekly in 2015,[29] wrote:

> I very much like the way NixOS takes the worry out of upgrading packages by placing each change in its own "generation" and I found, from the end user's point of view, NixOS worked just the same as any other Linux distribution. Setting up NixOS is not for beginners, and I do not think NixOS is intended to be used as a general purpose desktop operating system. But what NixOS does do is give us a useful playground in which to examine the Nix package manager and I think this is very interesting technology which deserves further exploration and adoption by additional distributions.

A 2022 review of NixOS 21.11 "Porcupine" in Full Circle concluded:

> Overall NixOS Gnome 21.11 impresses as serious, neat and elegant. If you are a fan of the unmodified Gnome desktop, then you will find a lot to like here. The downside of this distribution is the steep learning curve for package management, including updates and the like. No matter which distribution you come from, you will have much to learn to be able to make Nix work well for you on the command-line.[30]

NixOS 22.11 "Raccoon" reviewed by Liam Proven at The Register:

> Compared to reports of NixOS from just two or three years ago, we found it was very simple to get it installed and working. This suggests that the tools are maturing well and reaching a certain level of polish, but from a first-time perspective we have no prior baseline to compare against. This is very much not a traditional distro, or even a traditional Unix, but it works and we can see the appeal.[31]

NixOS 23.11 "Tapir" reviewed by Jesse Smith at DistroWatch:

> NixOS is a rare gem in that I don't think I ran into any errors while I was using it. The distribution was stable, it worked well with my hardware, and I didn't run into a single issue while running it. I feel NixOS is well worth a try, especially if you're a system administrator and want to deploy (or maintain) identical distributions across multiple machines.[32]

## Community

### Wiki

This section contains information of unclear or questionable importance or relevance to the article's subject matter. Please help improve this section by clarifying or removing indiscriminate details. If importance cannot be established, the section is likely to be moved to another article, pseudo-redirected, or removed.
Find sources: "NixOS" – news · newspapers · books · scholar · JSTOR (December 2024) (Learn how and when to remove this template message)

|

The first NixOS community wiki was launched around 2010–2011 to centralize documentation and support collaborative knowledge-sharing. However, as community interest in maintaining the wiki waned, outdated and incorrect information accumulated, reducing its usefulness.[33] In November 2015, Rok Garbas highlighted the decaying state of the wiki in his talk 'Make Nix Friendlier for Beginners', sparking widespread discussion in the community.[34] While many developers argued that the Nix* manuals were a better repository for official documentation, no immediate solution was implemented.

By mid-2016, spam bots had overwhelmed the wiki due to insufficient protection, leading to it being locked in August of that year. In February 2017, a GitHub issue was opened to discuss unlocking the wiki, but the debate resulted in no resolution. Finally, in May 2017, the wiki was permanently disabled; the web pages are preserved at the Internet Archive.[35]

To fill the void, Jörg Thalheim (Mic92) launched the nixos-users GitHub wiki in April 2017. Although this platform allowed quick edits and community contributions, it lacked features such as search functionality and a table of contents. Shortly thereafter, Tristan Helmich (fadenb) created a new MediaWiki-based wiki on his own initiative, citing the poor user experience of the GitHub wiki. Felix Richter (makefu) later migrated content from the GitHub wiki to Helmich's wiki.[36]

In January 2024, a new initiative to establish an official wiki was launched. This resulted in the official wiki currently in use, which was launched on 1 April 2024.[33][37]

## See also

* GNU Guix System – an operating system built on GNU Guix that is inspired by Nix

## Notes

1. ↑ Various programming languages are used throughout NixOS, as of December 2023. The Linux kernel is written in C. The Nix package manager is written in C++.
2. ↑ 2.0 2.1 Various other licenses are used for software included with NixOS, for example the Linux kernel is licensed under the GNU General Public License (GPL) version 2.0, as of December 2023.

## References

1. ↑ "Community - nixos.org". https://nixos.org/community/.
2. ↑ "NixOS/nixos-foundation". https://github.com/NixOS/nixos-foundation.
3. ↑ "Download Nix & NixOS". https://nixos.org/download/.
4. ↑ RaitoBezarius (2024-01-02). "Limited cache availability for i686 (32 bits x86) architecture". https://discourse.nixos.org/t/limited-cache-availability-for-i686-32-bits-x86-architecture/37626. "[…] we are removing the 32 bits ISO on the NixOS homepage, NixOS tests […]"
5. ↑ "nixpkgs/COPYING at master: NixOS/nixpkgs". https://github.com/NixOS/nixpkgs/blob/master/nixos/COPYING.
6. ↑ 6.0 6.1 "NixOS Manual". https://nixos.org/manual/nixos/stable/.
7. ↑ "Nixpkgs". https://github.com/NixOS/nixpkgs.
8. ↑ "nixpkgs/COPYING at master: NixOS/nixpkgs". https://github.com/NixOS/nixpkgs/blob/master/nixos/COPYING.
9. ↑ Dolstra, Eelco (2003). "Integrating Software Construction and Software Deployment". Software Configuration Management. Lecture Notes in Computer Science. 2649. pp. 102–117. doi:10.1007/3-540-39195-9_8. ISBN 978-3-540-14036-8. https://nixos.org/~eelco/pubs/iscsd-scm11-final.pdf.
10. ↑ Dolstra, Eelco (2006). The Purely Functional Software Deployment Model (PDF) (Ph.D.). Archived from the original (PDF) on 2019-06-09.
11. ↑ Hemel, Armijn (2006). NixOS: the Nix based operating system (PDF) (Master's). Retrieved 2025-10-15.
12. ↑ Dolstra, Eelco. "Purely Functional System Configuration Management". https://www.usenix.org/legacy/event/hotos07/tech/full_papers/dolstra/dolstra_html/.
13. ↑ "NixOS 13.10 released". https://nixos.org/blog/announcements/2013/nixos-1310/.
14. ↑ "Stichting NixOS Foundation". Nixos.org. https://nixos.org/nixos/foundation.html.
15. ↑ "Governance". Nixos.org. https://nixos.org/governance.html.
16. ↑ "Nix RFCS (Request for Comments)". 17 December 2021. https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md.
17. ↑ "Release Announcements". Nixos.org. https://nixos.org/blog/announcements.
18. ↑ "Systemd branch merged". Nixos.org. https://releases.nixos.org/nix-dev/2013-January/010482.html.
19. ↑ Dolstra, Eelco; Hemel, Armijn (2007-05-07). "Purely Functional System Configuration Management". 11th USENIX workshop on Hot topics in operating systems. San Diego, California, USA: USENIX Association. https://edolstra.github.io/pubs/hotos-final.pdf. Retrieved 2023-07-19.
20. ↑ "About NixOS". Nixos.org. https://nixos.org/nixos/about.html.
21. ↑ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (2008-10-20). "Atomic Upgrading of Distributed Systems". 1st International Workshop on Hot Topics in Software Upgrades. Nashville, Tennessee, USA: Association for Computing Machinery. doi:10.1145/1490283.1490294. ISBN 978-1-60558-304-4. https://edolstra.github.io/pubs/atomic-hotswup2008-final.pdf. Retrieved 2023-07-19.
22. ↑ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (2008-10-20). "Atomic Upgrading of Distributed Systems". 1st International Workshop on Hot Topics in Software Upgrades. Nashville, Tennessee, USA: Association for Computing Machinery. doi:10.1145/1490283.1490294. ISBN 978-1-60558-304-4. https://edolstra.github.io/pubs/atomic-hotswup2008-final.pdf. Retrieved 2023-07-19.
23. ↑ "Upgrading and rollbacks". https://nixos.org/manual/nixos/stable/#sec-upgrading.
24. ↑ NixOS Manual - Rolling Back Configuration Changes, Nixos.org, https://nixos.org/manual/nixos/stable/#sec-rollback
25. ↑ "nix-shell". https://nix.dev/manual/nix/2.25/command-ref/nix-shell.
26. ↑ NixOS Manual - Flakes, Nixos.org, https://wiki.nixos.org/wiki/Flakes
27. ↑ 27.0 27.1 "Appimage - NixOS Wiki". https://nixos.wiki/wiki/Appimage.
28. ↑ Dolstra, Eelco (2005-11-07). "Secure Sharing Between Untrusted Users in a Transparent Source/Binary Deployment Model". 20th IEEE/ACM International Conference on Automated Software Engineering. Long Beach, California, USA: Association for Computing Machinery. doi:10.1145/1101908.1101933. ISBN 978-1-58113-993-8. https://edolstra.github.io/pubs/secsharing-ase2005-final.pdf. Retrieved 2023-07-19.
29. ↑ Smith, Jesse (23 November 2015). "NixOS 15.09 and the Nix package manager". DistroWatch Weekly (637). https://distrowatch.com/weekly.php?issue=20151123#nixos.
30. ↑ Hunt, Adam (28 October 2022). "Review: NixOS". Full Circle. https://dl.fullcirclemagazine.org/issue186_en.pdf.
31. ↑ Proven, Liam (2022-12-13). "NixOS 22.11 'Raccoon': Like a proof of concept you can do things with OSes". The Register. https://www.theregister.com/2022/12/13/nixos_2211_raccoon/.
32. ↑ Smith, Jesse (1 April 2024). "NixOS 23.11". DistroWatch Weekly (1064). https://distrowatch.com/weekly.php?issue=20240401#nixos.
33. ↑ 33.0 33.1 "NixOS Wiki: History". https://wiki.nixos.org/wiki/NixOS_Wiki:History.
34. ↑ Garbas, Rok (2015). "Make Nix Friendlier for Beginners". media.ccc.de. https://media.ccc.de/v/nixcon2015-3-MakeNixfriendlierforBeginners#t=1365.
35. ↑ "NixOS Wiki: Main Page". https://nixos.org/wiki/Main_Page.
36. ↑ Helmich, Tristan. "MediaWiki for NixOS". https://nixos.wiki.
37. ↑ "NixOS Wiki:News". https://wiki.nixos.org/wiki/NixOS_Wiki:News.

## External links

* No URL found. Please specify a URL here or add one to Wikidata.
* Official Wiki
* Nix language manual
* Nix packages collection

* v
* t
* e

Linux distributions

Android|

* Android-IA
* Android-x86
* LineageOS
* /e/
* CyanogenMod
* Remix OS
* Replicant

Arch|

* ArchBang
* ArchLabs
* Artix
* Chakra
* Hyperbola GNU/Linux-libre
* Manjaro
* Parabola GNU/Linux-libre

Debian|

* antiX
* Astra Linux
* Bharat Operating System Solutions
* deepin
* Devuan
* Elive
* Endless OS
* gNewSense
* HandyLinux
* Kali Linux
* Knoppix
* MX Linux
* Parrot Security OS
* SparkyLinux
* SolydXK
* SteamOS
* Tails

| Ubuntu|

* Official: Kubuntu
* Lubuntu
* Ubuntu Budgie
* Ubuntu Kylin
* Ubuntu MATE
* Ubuntu Studio
* Xubuntu

* Other: Asturix
* Bodhi Linux
* elementary OS
* KDE neon
* Linux Mint
* Pinguy OS
* Trisquel
* Uruk
* LXLE Linux
* Linux Lite
* Zorin OS

|

Fedora|

* BLAG Linux and GNU
* Korora

| Red Hat|

* CentOS
* ClearOS
* Linpus Linux
* Oracle Linux
* Qubes OS
* Rocks Cluster Distribution
* Scientific Linux
* SME Server

|

Gentoo|

* Calculate Linux
* Chromium OS
* Chrome OS
* Sabayon Linux
* Nova OS

Slackware|

* Austrumi Linux
* DeLi Linux
* DNALinux
* Kongoni
* NimbleX
* Platypux
* Porteus
* Salix OS
* Slax
* TopologiLinux
* VectorLinux
* Zenwalk

Mandriva|

* ALT Linux
* Mageia
* OpenMandriva Lx
* PCLinuxOS
* ROSA Linux

Other|

* 4MLinux
* Alpine Linux
* CRUX
* Frugalware Linux
* GeckoLinux
* GoboLinux
* GuixSD
* KaOS
* Kwort Linux
* Lunar Linux
* NixOS
* openSUSE
* SUSE Linux Enterprise Server
* Puppy Linux
* Source Mage
* Solus
* Void Linux
* Uruk GNU/Linux

* Category
* Comparison
* List
* Commons

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/NixOS. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:NixOS&oldid=4292206"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template