NixOS — дистрибутив с декларативной моделью конфигурацией системы (один файл). Использует пакетный менеджер Nix. Поддерживает атомарное обновление пакетов и откат изменений.
Дистрибутив NixOS построен «поверх» пакетного менеджера Nix. Настройка системы выполняется через единый конфигурационный файл.
История
NixOS основал голландец Элько Дольстра (Eelco Dolstra) в 2003 году как исследовательский проект.
Пакетный менеджер Nix
NixOS использует пакетный менеджер Nix.
Поддержка нескольких версий пакетов
Каждый пакет в системе хранится в своей отдельной директории в /nix/store. Имя директории представляет собой хеш, то есть строку, в которой закодированы также зависимости пакета. Пример: /nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/
Nix поддерживает установку разных версий одного и того же пакета. Отсутствуют конфликты версий, для конкретной программы можно использовать определенную версию.
Для создания пакетов в Nix используется простой функциональный язык.
Атомарные обновления с возможностью отката изменений
Операции управления пакетами никогда не перезаписывают пакеты в хранилище Nix, а только добавляют новые версии по другим путям. Таким образом обновление пакетов выполняется атомарно, то есть во время процесса обновления не может возникнуть ситуации, когда пакет имеет часть файлов из старой версии, а часть из новой. Такой подход позволяет выполнять откат к предыдущим версиям пакетов.
Пример обновления пакетов и откат изменений:
nix-env --upgrade some-packages
nix-env --rollback
Поддержка нескольких пользователей
Nix поддерживает работу с несколькими пользователями. У каждого пользователя есть свой profile. Каждый непривилегированный пользователь в системе может безопасно устанавливать пакеты. Пакеты, которые устанавливает пользователь, прописываются в его PATH. Если выполняется установка пакета, который уже установлен другим пользователем, то такой пакет повторно не собирается и не загружается.
Безопасное удаление пакетов
При удалении пакетов, пакеты не удаляются сразу, а только помечаются как удаленные. Это обеспечивает возможность отката изменений, а также пакет может находится в профилях других пользователей.
Пример удаления пакета:
nix-env --uninstall firefox
Для полного удаления пакетов необходимо запустить «сборщик мусора» nix-collect-garbage, который удалит все неиспользуемые пакеты (отсутствуют в зависимостях у пользователей и не запущены в данный момент):
nix-collect-garbage
Кроссплатформенный пакетный менеджер
Пакетный менеджер Nix не привязан к дистрибутиву NixOS и может работать как в Linux, так и в MacOS.
Декларативная модель конфигурации
Дистрибутив использует декларативную модель конфигурации системы, в которой пакетный менеджер занимает ключевую роль. В едином файле конфигурации /etc/nixos/configuration.nix задаются все параметры системы, включая настройку сервисов, программ, среды рабочего стола, загрузчика GRUB и другие.
Пример минимальной конфигурации для SSH демона:
{
boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.sshd.enable = true;
}
Для применения новой конфигурации необходимо выполнить команду:
nixos-rebuild switch
Редакции
Среды рабочего стола:
- NixOS GNOME — редакция со средой рабочего стола GNOME.
- NixOS KDE Plasma — редакция со средой рабочего стола KDE Plasma.
- Minimal ISO Image — минимальная редакция без графического интерфейса
Поддерживаемые архитектуры
- Intel
- AMD
Установка
Установка системы может выполняться как в графическом, так и консольных режимах.
Поддерживается Live-режим.
Релизы дистрибутива NixOS
Версия | Дата релиза | Ядро | Кодовое имя | |
---|---|---|---|---|
.. | ||||
22.11 | 01 декабря 2022 | 5.15 | Raccoon | пресс-релиз |
23.05 | 31 мая 2023 | 6.1 | Stoat | пресс-релиз |
Комментарии
15:07
10:59
22:34
13:29
06:34
13:29