Состоялся выпуск дистрибутива NixOS 21.11, основанного на пакетном менеджере Nix и предоставляющего ряд собственных разработок, упрощающих настройку и сопровождение системы. Например, в NixOS используется единый файл системной конфигурации (configuration.nix), предоставляется возможность быстрого отката обновлений, присутствует поддержка переключения между различными состояниями системы, поддерживается установка индивидуальных пакетов отдельными пользователями (пакет ставится в домашний каталог), возможна одновременная установка нескольких версий одной программы, обеспечены воспроизводимые сборки. Размер полного установочного образа с KDE 1.6 ГБ, GNOME – 2 ГБ, сокращённого консольного варианта – 765 МБ.
Основные новшества:
- Рабочий стол KDE Plasma по умолчанию переведён на использование протокола Wayland. Обновлены рабочие столы GNOME 41 и Pantheon 6 ( (из Elementary OS 6).
- Вместо iptables задействован набор iptables-nft, предоставляющий утилиты с тем же синтаксисом командной строки, но транслирующих полученные правила в байткод nf_tables.
- Обновлены версии Systemd 249, PHP 8.0, Python 3.9, PostgreSQL 13, bash 5, OpenSSH 8.8p1.
- Значительно улучшена поддержка системы управления контейнерами LXD. Реализована возможность сборки образов для LXD из файлов конфигурации при помощи nixpkgs. Обеспечена сборка образов nixOS с полной поддержкой nixos-rebuild, которые можно использовать обособленно.
- Добавлено более 40 новых сервисов, включая Git, btrbk (резервное копирование btrfs), clipcat (менеджер буфера обмена), dex (провайдер OAuth 2.0), Jibri (сервис для записи конференций Jitsi Meet), Kea (DHCP-сервер), owncast (стриминг видео), PeerTube, ucarp (реализация протокола CARP), opensnitch (динамический межсетевой экран), Hockeypuck (сервер ключей OpenPGP), MeshCentral (аналог TeamViewer), influxdb2 (СУБД для хранения метрик), fluidd (web-интерфейс для управления 3D-принтерами), postfixadmin (web-интерфейс для управления почтовым сервером на базе Postfix), seafile (платформа облачного хранения данных).
При использовании Nix пакеты устанавливаются в отдельное дерево директорий /nix/store или поддиректорию в каталоге пользователя. Например, пакет устанавливается как /nix/store/a2b5…8b163-firefox-94.0.2/, где “a2b5…” является уникальным идентификатором пакета, используемым для контроля зависимостей. Пакеты оформляются в виде контейнеров, содержащих необходимые для работы приложений компоненты.
Аналогичный подход применяется в пакетном менеджере GNU Guix, который основан на наработках Nix.
Между пакетами возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Возможна как загрузка готовых бинарных пакетов из репозитория (при установке обновлений к бинарным пакетам загружаются только delta-изменения), так и сборка из исходных текстов со всеми зависимостями. Коллекция пакетов представлена в специальном репозитории Nixpkgs.