NixOS: революционный дистрибутив, который изменит ваше представление о Linux

История создания: как функциональное программирование захватило Linux


2003 год: рождение Nix

Голландский учёный Элко Долстра (Eelco Dolstra) начинает разработку Nix — системы управления пакетами, вдохновлённой функциональными языками (Haskell).
Идея: Каждый пакет хранится в изолированном каталоге с хешем всех зависимостей, что исключает конфликты версий.

2004–2010: от пакетного менеджера к ОС

  • Nix эволюционирует в полноценный дистрибутив — NixOS.
  • Первый стабильный релиз выходит в 2015 году.

2020-е: рост популярности

  • NixOS используют в Google, Shopify, NASA для воспроизводимых сборок.
  • Сообщество активно развивает инфраструктуру: 30 000+ пакетов в репозитории.

Философия:

«Конфигурация как код, атомарные обновления и полная воспроизводимость».


Плюсы NixOS: почему это будущее?

1. Декларативная конфигурация

Вся система (от ядра до программ) описывается в одном файле /etc/nixos/configuration.nix:

{ config, pkgs, ... }:  
{
  environment.systemPackages = [ pkgs.firefox pkgs.git ];  
  services.openssh.enable = true;  
}  

Что даёт:
- Версионность конфигов (как Git для системы).
- Возможность отката к любой прошлой версии.

2. Воспроизводимость

  • Одинаковая конфигурация = идентичная система на любом железе.
  • Можно клонировать среду разработки командой:
    nix-shell -p python3.11 git gcc

3. Надёжность

  • Обновления не ломают систему: новые пакеты не перезаписывают старые.
  • Откат одной командой:
    bash sudo nixos-rebuild switch --rollback

4. Изоляция пакетов

  • Каждый пакет живёт в своём /nix/store/xxxx-path, что исключает DLL Hell.
  • Можно одновременно иметь несколько версий одной программы.

5. Поддержка множества платформ

  • x86_64, ARM, Darwin (macOS) — один конфиг для всех.
  • Даже Docker-образы собираются через Nix.

Минусы NixOS: цена уникальности

1. Крутая кривая обучения

  • Синтаксис Nix (функциональный DSL) пугает новичков.
  • Привычные apt/dnf не работают — только nix-env и nix-shell.

2. Несовместимость с традиционными пакетами

  • .deb/.rpm нельзя установить «как есть».
  • Некоторые проприетарные программы требуют костылей (например, Steam).

3. Ограниченная документация

  • Мануалы часто предполагают знание Nix.
  • Сообщество меньше, чем у Ubuntu или Arch.

4. Долгая сборка

  • Первая установка пакетов может занимать часы (если нет бинарных кэшей).

Кому подойдёт NixOS?

DevOps-инженеры (воспроизводимость > скорость).
Разработчики (изолированные среды для каждого проекта).
Параноики безопасности (никаких скрытых зависимостей).
Энтузиасты (если хочется «Linux нового уровня»).

Кому не подойдёт:
✖ Новички (пока не освоили базовый Linux).
✖ Геймеры (проблемы с драйверами и Proton).
✖ Те, кто любит «классические» дистрибутивы.


Интересные факты

  • Nixpkgs — самый большой в мире источник пакетов (больше, чем AUR!).
  • В NixOS нет /usr/bin — все программы лежат в /nix/store.
  • Конфиг можно разместить на GitHub и разворачивать систему в 1 команду.

Что в итоге?

NixOS — это эксперимент, который удался. Он не для всех, но для тех, кто ценит контроль и воспроизводимость, это идеальный выбор.

# Ваша первая команда в NixOS:
nix-shell -p hello --run "hello"