04.07.2022

Выпуск дистрибутива NixOS 21.11, использующего пакетный менеджер Nix

Состоялся выпуск дистрибутива 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.

Источник.