Состоялся выпуск дистрибутива NixOS 22.05, основанного на пакетном менеджере Nix и предоставляющего ряд собственных разработок, упрощающих настройку и сопровождение системы. Например, в NixOS вся настройка системы происходит посредством единого файла системной конфигурации (configuration.nix), предоставляется возможность быстрого отката системы на предыдущую версию конфигурации, присутствует поддержка переключения между различными состояниями системы, поддерживается установка индивидуальных пакетов отдельными пользователями, есть возможность одновременного использования нескольких версий одной программы, обеспечены воспроизводимые сборки. Размер полного установочного образа с KDE 1.7 ГБ, GNOME – 2.2 ГБ, сокращённого консольного варианта – 820 МБ.
Основные новшества:
- Для упрощения установки дистрибутива предложен графический инсталлятор, основанный на фреймворке Calamares, который используется для создания инсталляторов в таких проектах, как Manjaro, Sabayon, Chakra, NetRunner, KaOS, OpenMandriva и KDE neon. Новый инсталлятор по умолчанию используется в iso-образах с GNOME и KDE.
- Добавлено 9345 пакетов, удалено 5874 пакетов, обновлено 10666 пакетов. Обновлены версии компонентов дистрибутива, в том числе GNOME 42, systemd 250, PHP 8.1, Pulseaudio 15, PostgreSQL 14,
- Добавлено более 89 новых сервисов, среди которых aesmd (Intel SGX Architectural Enclave Service Manager), rootless Docker (для запуска Docker без прав root), matrix-conduit (matrix-сервер), apfs (Apple File System), FRRouting (реализация протоколов маршрутизации), snowflake-proxy (прокси для обхода цензурирования трафика), pgadmin4 (GUI для управления PostgreSQL), moosefs (распределённая ФС), nbd (Network Block Device) Удалено 27 сервисов, в основном с устаревшими ветками программ или завязанных на Python2.
- Пакетный менеджер Nix обновлён до версии 2.8, в котором предложена поддержка тестирования экспериментальных возможностей. Например, добавлена экспериментальная команда “nix fmt” для подключения обработчиков форматирования вывода и экспериментальный режим “impure” для генерации отличающихся при каждой сборке целевых путей к содержимому. Для различных опций предоставлена возможность загрузки содержимого из входного потока (например, “–file -“).
- Пакет с браузером Firefox для архитектуры x86_64 собран с оптимизациями на основе результатов профилирования кода (PGO) для повышения производительности.
- Добавлен обработчик security.acme.defaults для упрощения настройки получения TLS-сертификатов.
При использовании Nix результат сборки пакетов хранится в отдельной поддиректории в /nix/store. Например, после сборки пакет firefox может записываться в /nix/store/3nlv74c8z5skg8mpp0w5wk5lbpl6d6qz-firefox-100.0.1/, где “3nlv74c8z5skg80w5wcfd0c5cecec5d4” является хешем всех его зависимостей и инструкций сборки. Под установкой пакета подразумевается его сборка или скачивание уже собранного (при условии, что он был уже собран на Hydra – сервисе сборки проекта NixOS), а также формирование директории с символическими ссылками на все пакеты в профиле системы или пользователя, с последующим добавлении этой директории в PATH. Аналогичный подход применяется в пакетном менеджере GNU Guix, который основан на наработках Nix. Коллекция пакетов представлена в специальном репозитории Nixpkgs.