NixOS — декларативный, воспроизводимый Linux.

Вся система описывается в одном конфигурационном файле. Перенос на другую машину — один git clone и одна команда пересборки.


Идеология

NixOS ломает привычную модель «ставлю пакеты командой, правлю конфиги вручную». Вместо этого — декларативное описание в configuration.nix (или flake flake.nix). Хочешь nginx? Добавляешь services.nginx.enable = true;. Хочешь пользователя? users.users.alice.isNormalUser = true;. Система пересобирается командой nixos-rebuild switch — и всё.

Главное преимущество — воспроизводимость. Один и тот же конфиг даёт идентичную систему на любой машине. Нет дрифта, нет «работает у меня, но не у тебя».

Nix package manager

В основе — Nix — функциональный пакетный менеджер. Каждый пакет живёт в /nix/store/<hash>-<name> — изоляция по хэшу. Несколько версий одной библиотеки не конфликтуют. Откат системы к прошлому поколению — nixos-rebuild switch --rollback. Никакого apt upgrade, который сломал зависимости.

Flakes

Flakes — современный способ описывать конфигурацию и зависимости. Git-reproducible, lock-файл фиксирует версии. Пока экспериментальная фича, но de facto стандарт в сообществе.

Когда выбирать NixOS

  • Нужна воспроизводимость — серверы, рабочие станции, CI.
  • Хочешь декларативно управлять десятком машин (NixOS + flakes + deploy-rs/colmena).
  • Готов учить DSL на языке Nix.

Минусы

Кривая обучения реальная. Nix-язык непривычен. Документация фрагментарная. Не все проприетарные пакеты есть в nixpkgs — придётся писать overlay или использовать nixpkgs.config.allowUnfree.

Переезд

Миграция с другой системы — не тривиальная. NixOS требует полностью переписать подход к управлению конфигами. Накатить сверху не получится.


Debian — противоположность NixOS: простая, императивная, предсказуемая. Выбирай по потребностям.


Linux CachyOS Debian