The NixOS 22.05 distribution has been released, based on the Nix package manager, providing a range of proprietary developments that simplify system setup and maintenance. For instance, in NixOS, all system configuration occurs via a single system configuration file (configuration.nix), allowing for a quick rollback to a previous configuration version, supporting switching between different system states, enabling individual users to install custom packages, allowing simultaneous usage of multiple versions of one program, and ensuring reproducible builds. The size of the full installation image with KDE is 1.7 GB, GNOME is 2.2 GB, and the reduced console version is 820 MB.
Key innovations:
- To simplify the installation of the distribution, a graphical installer based on the Calamares framework has been proposed, which is used to create installers in projects such as Manjaro, Sabayon, Chakra, NetRunner, KaOS, OpenMandriva, and KDE neon. The new installer is included by default in the ISO images with GNOME and KDE.

- A total of 9345 packages have been added, 5874 packages removed, and 10666 packages updated. Package versions have been updated, including GNOME 42, systemd 250, PHP 8.1, Pulseaudio 15, and PostgreSQL 14.
- More than 89 new services have been added, including aesmd (Intel SGX Architectural Enclave Service Manager), rootless Docker (for running Docker without root privileges), matrix-conduit (matrix server), apfs (Apple File System), FRRouting (implementation of routing protocols), snowflake-proxy (proxy for bypassing traffic censorship), pgadmin4 (GUI for PostgreSQL management), moosefs (distributed filesystem), nbd (Network Block Device). 27 services have been removed, mainly those with outdated program branches or dependent on Python2.
- The Nix package manager has been updated to version 2.8, which offers support for separately activated experimental features (flake). For example, an experimental command 'nix fmt' has been added to connect output formatting handlers and an experimental 'impure' mode for generating target paths to content that differ with each build. Support for loading content from the input stream (e.g., '--file -') is provided for various options.
- The package with the Firefox browser for the x86_64 architecture has been built with optimizations based on profiling results (PGO) to enhance performance.
- A handler for security.acme.defaults has been added to simplify configuration. for TLS certificates.
When using Nix, the result of package builds is stored in a separate subdirectory in /nix/store. For example, after building, the firefox package may be recorded in /nix/store/1onlv2pc3ez4n5nskg6ew7twcfd0c5cecec5d4-firefox-100.0.1/, where "1onlv2pc3ez4n5nskg6ew7twcfd0c5cecec5d4" is the hash of all its dependencies and build instructions. Installing a package means either building it or downloading an already built one (provided it has been built on Hydra — the NixOS project's build service), as well as creating a directory with symbolic links to all packages in the system or user profile, which is then added to the PATH list. A similar approach is used in the GNU Guix package manager, which is based on Nix's developments. The package collection is presented in a special repository called Nixpkgs.
Source: opennet.ru

