Self-host your own digital island
1 2# NixOS 3 4[NixOS](nixos.org) is a Linux distribution built with [Nix](./nix.md) from a modular, purely functional specification. 5It has no traditional filesystem hierarchy (FSH), like `/bin`, `/lib`, `/usr`, but instead stores all components in `/nix/store`. 6The system configuration is managed by Nix and configured with Nix expressions. 7[NixOS modules](https://nixos.org/manual/nixos/stable/index.html#sec-writing-modules) are Nix files containing chunks of system configuration that can be composed to build a full NixOS system. 8While many NixOS modules are provided in the [Nixpkgs](./nixpkgs.md) repository, they can also be written by an individual user. 9For example, the expression used to deploy a DNS server is a NixOS module. 10Together these modules form the configuration which builds the Linux system as a Nix derivation. 11 12NixOS minimises global mutable state that -- without knowing it -- you might rely on being set up in a certain way. 13For example, you might follow instructions to run a series of shell commands and edit some files to get a piece of software working. 14You may subsequently be unable to reproduce the result because you've forgotten some intricacy or are now using a different version of the software. 15Nix forces you to encode this in a reproducible way, which is extremely useful for replicating software configurations and deployments, aiming to solve the 'It works on my machine' problem. 16Docker is often used to fix this configuration problem, but Nix aims to be more reproducible. 17 18Nix provides safe and reliable atomic upgrades and rollbacks. 19And every new system configuration build creates a GRUB entry, so you can boot previous systems even from your UEFI/BIOS.