Найти тему

NixOS - дистрибутив Linux из одного файла

Оглавление

Готовясь к выпуску новостного дайджеста (планирую начать уже со следующей недели) я стал мониторить события в мире Linux и Opensource. Одна из новостей касалась выпуска новой версии дистрибутива NixOS, который меня заинтересовал, и про который захотел рассказать подписчикам и читателям.

Вначале пакетный менеджер - потом дистрибутив

Фактически NixOS является системой-надстройкой над пакетным менеджером Nix, использующем свой формат установочных пакетов. То есть, он пытается взобраться на ту же планку, где уже находятся apt, pacman, dnf, yum и прочие известные пакетные менеджеры.

При этом, пакетный менеджер Nix можно использовать в любой системе, не только в NixOS. Доступна поддержка не только дистрибутивов Linux, но и macOS, а также системы WSL в Windows.

Все в одном файле

Особенность NixOS в том, что это декларативный дистрибутив. То есть, вся его конфигурация (запуск ядра, менеджер входа в систему, запускаемые сервисы, данные о пользователях и пр.) хранится в одном конфигурационном файле (/etc/nixos/configuration.nix). При этом каждый элемент системы можно разместить в отдельном конфиге и подключить их все в одном общем конфигурационном файле. Все зависит от желания пользователя и сложности его системы.

Один пакет - одна директория

Каждый устанавливаемый пакет через менеджер Nix хранится в отдельной папке. Получается, что каждая программа изолирована от другой. Можно установить несколько версии одного и того же пакета, каждая займет свою папку в системе и не будет мешать другим версиям. При желании в конфигурационном файле можно прописать с какой конкретной версией пакета системе нужно взаимодействовать.

Каждая «папка с программой» содержит еще и закодированный перечень зависимостей и библиотек. Выходит так, что вы берете программу и можете с легкостью менять ей зависимости и библиотеки, с которыми она должна взаимодействовать, при этом другим установленным программам и всей системе подобная смена версий зависимостей и библиотек не принесет никакого вреда. У NixOS отсутствуют «классические» проблемы других дистрибутивов: неверные, поломанные или ранее удаленные зависимости, которые полностью ломают дистрибутив или другие пакеты.

При обновлении новая версия устанавливается в новую папку, а не затирает старую. Значит, в любой момент можно откатиться на предыдущую версию программы, сохранив и обновление, и ту версию, которая в данный момент необходима.

Похоже на SNAP или Flatpak

С первого взгляда может показаться, что NixOS использует ту же технологию, что SNAP и Flatpak. Но суть работы NixOS и пакетного менеджера Nix не имеет ничего общего с контейнеризацией, что обеспечивает быстродействие в запуске программ и работе системы.

Почему NixOS так нравится системным администраторам?

Вы настраиваете конфигурационный файл один раз и потом просто используете его на множестве серверов, где установлен NixOS. Поэтому дистрибутив популярен у системных администраторов. Чтобы получить готовую «машину» достаточно скопировать конфиг и выполнить одну-две команды. В случае сбоя в системе откатиться назад тоже просто, так как необходимый файл рядом на флэшке или в репозитории на Github.

Все ли так просто и легко?

Естественно на такое количество преимуществ должно быть что-то в минус. Это высокий порог входа в NixOS. Чтобы создавать собственный конфигурационный файл нужно вначале освоить синтаксис и базовые конструкции для описания того, что вы желаете видеть в дистрибутиве. Просто так установить и начать использовать NixOS не получится. Но зато если вы освоите его, то потом сможете с легкостью управлять дистрибутивом по своему желанию.

Итог

Скачать установочный образ NixOS можно с официального сайта. Доступны как серверный вариант установки, так и имеется поддержка популярных сред рабочего стола и тайлинговые оконные менеджеры. Кроме того, существует специальный образ предназначенный для виртуальных машин.

В общем, дистрибутив необычный и не на слуху, несмотря на его особенности. Напишите в комментариях сталкивались ли вы с ним и если нет, то не хотите ли попробовать.

Ну и конечно не забываем про лайки и подписки.