Представлен выпуск дистрибутива NixOS 21.05, основанного на пакетном менеджере Nix и предоставляющего ряд собственных разработок, упрощающих настройку и сопровождение системы. Например, в NixOS используется единый файл системной конфигурации (configuration.nix), предоставляется возможность быстрого отката обновлений, присутствует поддержка переключения между различными состояниями системы, поддерживается установка индивидуальных пакетов отдельными пользователями (пакет ставится в домашний каталог), возможна одновременная установка нескольких версий одной программы, обеспечены воспроизводимые сборки. Размер полного установочного образа с KDE 1.4 ГБ, GNOME – 1.8 ГБ, сокращённого консольного варианта – 660 МБ.
Основные новшества:
- Добавлено 12985 пакетов, удалено 14109 пакетов, обновлено 16768 пакетов. Обновлены версии компонентов дистрибутива, в том числе gcc 10.3.0, glibc 2.32, mesa 21.0.1 . Базовое ядро Linux обновлено с версии 5.4 до 5.10, в качестве опции предложено ядро 5.12.
- Рабочие столы обновлены до KDE 5.21.3 (+ KDE Applications 20.12.3), GNOME 3.40 и Cinnamon 4.8.1.
- Добавлены новые сервисы с GNURadio 3.8, сервером аутентификации Keycloak и дискуссионной платформой Discourse.
При использовании Nix пакеты устанавливаются в отдельное дерево директорий /nix/store или поддиректорию в каталоге пользователя. Например, пакет устанавливается как /nix/store/f2b5…8a163-firefox-89.0.0/, где “f2b5…” является уникальным идентификатором пакета, используемым для контроля зависимостей. Пакеты оформляются в виде контейнеров, содержащих необходимые для работы приложений компоненты.
Аналогичный подход применяется в пакетном менеджере GNU Guix, который основан на наработках Nix.
Между пакетами возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Возможна как загрузка готовых бинарных пакетов из репозитория (при установке обновлений к бинарным пакетам загружаются только delta-изменения), так и сборка из исходных текстов со всеми зависимостями. Коллекция пакетов представлена в специальном репозитории Nixpkgs.