История создания: как функциональное программирование захватило 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"