NixOS project is a GNU/Linux distribution based on Nix, a purely functional package management system.
Version: 0.1pre10563NixOS project is a GNU/Linux distribution based on Nix, a purely functional package management system. NixOS is an experiment to see if we can build an operating system in which software packages, configuration files, boot scripts and the like are all managaed in a purely functional way, that is, they are all built by deterministic functions and they never change after they have been built. Such an operating system should have all the nice characteristics that the Nix package manager has:
Operating System: Linux
· The entire system - kernel, system services, configuration files, etc. - is built by a Nix expression in a deterministic and repeatable way.
· Since configuration changes are non-destructive (they don't overwrite existing files), you can easily roll back to a previous configuration. For instance, the Grub boot menu in NixOS allows the user to boot into any previous system configuration that hasn't been garbage collected yet. This is very nice if something goes wrong.
· Upgrading a configuration is as safe as installing from scratch, since the realisation of a configuration is not stateful. This is a result of being purely functional.
· Multi-user package management - any user can install software through the same mechanisms that the administrator uses. This is not the case for most package managers such as RPM.
· NixOS allows us to verify that Nix packages are really pure. Nix prevents undeclared dependencies between packages in the Nix store, but when you run Nix on an existing OS such as SUSE Linux, Nix cannot prevent a build script from (say) calling programs in /bin. If there is no /bin, such a build script will fail.
While NixOS is not really suitable for production use, it already works quite well. Current status:
· All software managed by Nix. There is no /bin, /sbin, /lib, /usr, etc. (except for a symlink /bin/sh to Bash in the Nix store). Everything is stored in /nix/store.
· Almost everything in /etc is a symlink to files in the Nix store generated by Nix expressions. The exceptions are files that contain mutable state such as /etc/passwd, which are modified dynamically.
· A single top-level Nix expression builds the entire system configuration. The system configuration is parameterised with a Nix expression that describes the configuration of your particular system (examples, more examples).
· The command nixos-rebuild builds and activates a new system configuration. The Grub boot menu allows instant rollbacks.
· System services started by Upstart. Current services include OpenSSH and Apache in addition to basic system services like networking.
· Automatic hardware detection: the boot process loads kernel modules for all known PCI devices.
· Support for software RAID, LVM.
· NixOS currently runs on 32-bit and 64-bit x86 machines (i686-linux and x86_64-linux). We build an SMP kernel so it works fine on dual-core machines.
· KDE and parts of Gnome work.