The release of NixOS 21.11 has taken place, based on the Nix package manager and providing a series of proprietary developments that simplify the configuration and maintenance of the system. For example, NixOS uses a single system configuration file (configuration.nix), offers the ability to quickly roll back updates, supports switching between different system states, allows individual users to install specific packages (with the package being placed in the home directory), enables the simultaneous installation of multiple versions of a program, and ensures reproducible builds. The size of the full installation image with KDE is 1.6 GB, with GNOME it is 2 GB, and the reduced console version is 765 MB.
Key innovations:
- The KDE Plasma desktop by default has switched to using the Wayland protocol. The GNOME 41 and Pantheon 6 (from Elementary OS 6) desktops have been updated.
- Instead of iptables, the iptables-nft set is used, providing utilities with the same command-line syntax but translating the received rules into nf_tables bytecode.
- Updated versions include Systemd 249, PHP 8.0, Python 3.9, PostgreSQL 13, bash 5, OpenSSH 8.8p1.
- Significantly improved support for the LXD container management system. The ability to build images for LXD from configuration files using nixpkgs has been implemented. Builds of NixOS images with full support for nixos-rebuild are provided, which can be used independently.
- More than 40 new services have been added, including Git, btrbk (btrfs backup), clipcat (clipboard manager), dex (OAuth 2.0 provider), Jibri (service for recording Jitsi Meet conferences), Kea (DHCP server), owncast (video streaming), PeerTube, ucarp (CARP protocol implementation), opensnitch (dynamic firewall), Hockeypuck (OpenPGP key server), MeshCentral (similar to TeamViewer), influxdb2 (database for metric storage), fluidd (web interface for managing 3D printers), postfixadmin (web interface for managing mail based on Postfix), seafile (cloud storage platform). proxy server based on Postfix), seafile (a cloud storage platform).
When using Nix, packages are installed in a separate directory tree /nix/store or in a subdirectory within the user's directory. For example, a package is installed as /nix/store/a2b5…8b163-firefox-94.0.2/, where "a2b5…" is a unique identifier for the package used for dependency management. Packages are structured as containers that include the components necessary for the applications to function. A similar approach is used in the GNU Guix package manager, which is based on Nix's concepts.
Dependencies can be defined between packages, during which the presence of already installed dependencies is checked by scanning hash identifiers in the directory of installed packages. It is possible to either fetch pre-built binary packages from the repository (updating binary packages only downloads delta changes) or compile from source with all dependencies. The package collection is presented in a special Nixpkgs repository.
Source: opennet.ru
