NixOS - декларативный дистрибутив, пакетный менеджер Nix

NixOS

6

Дистрибутив NixOS

NixOS — дистрибутив с декларативной моделью конфигурацией системы (один файл). Использует пакетный менеджер Nix. Поддерживает атомарное обновление пакетов и откат изменений.

NixOS
NixOS 22.11. KDE Plasma 5.26

Дистрибутив 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.1101 декабря 20225.15Raccoonпресс-релиз
23.0531 мая 20236.1Stoatпресс-релиз

Материалы по теме:

Сайт дистрибутива:

nixos.org
Лайков: +8
войдите, чтобы ставить лайки
6
  • Опубликовано: 26.07.2023

Скриншоты дистрибутива

Смотрите также

Комментарии

Evg197
Активный пользователь
Активный
26.07.2023
15:07
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
В "Поддерживаемые архитектуры" ARM нужно добавить.
evgnor86
Активный пользователь
Активный
28.07.2023
10:59
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Заинтриговали! Попробую :)
Rom
Активный пользователь
Активный
28.07.2023
22:34
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
суперская идея,. хоть как то организовать дурацкие зоопарки всех линукс
igorborisov
Активный пользователь
Активный
31.07.2023
13:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийRomРодительский комментарий
0
войдите, чтобы ставить лайки
Ага, Будет супер, если кто-то будет поддерживать пакеты для NixOS
Евгений
29.07.2023
06:34
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Поставил пакетный менеджер в PSLinuxOS - прикольно. Работает
igorborisov
Активный пользователь
Активный
31.07.2023
13:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийЕвгенийРодительский комментарий
0
войдите, чтобы ставить лайки
https://memepedia.ru/wp-content/uploads/2018/06/rzhomba-prikol-rabotaet-rzhaka.jpg

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила