NixOS — это дистрибутив GNU/Linux, который призван улучшить нынешнюю ситуацию с управлением пакетами. Как известно, в нынешней системе слишком много внимания нужно уделять взаимозависимостям пакетов. В итоге, обычный апгрейд становится опаснее для целостности системы, чем установка с нуля. Апгрейд отдельного пакета может привести к нарушения работы других пакетов.

Дистрибутив NixOS с функциональным подходом к конфигурации системы и версионностью апгрейдов призван изменить такое положение вещей.

Декларативный подход в программировании (в отличие от императивного) означает, что процесс вычисления описывается не в виде потока команд, а в виде логических конструкций высокого уровня. Обычно имеется в виду использование функционального или логического языка программирования, такого как LISP (Scheme), Erlang, F#, Scala, Haskell.

В случае с ОС декларативным становится описание конфигурации. В дистрибутиве NixOS ядро, приложения, системные пакеты и конфигурационные файлы и так далее — все основано на пакетном менеджере Nix, который позволяет использовать функциональный язык программирования. Конфигурация системы осуществляется с помощью описания желаемой функциональности в файле /etc/nixos/configuration.nix. Например, вот как будет выглядеть минимальная конфигурация для машины, на которой хочется запустить SSH-демон.

{
  boot.loader.grub.device = "/dev/sda";
  
  fileSystems = [
    { mountPoint = "/";
      device = "/dev/sda1";
    }
  ];

  services.sshd.enable = true;
}

После изменения файла можно активизировать новую конфигурацию командой.

$ nixos-rebuild switch

Эта команда делает все необходимое, включая скачивание и компиляцию Open SSH, генерацию конфигурационных файлов для SSH-сервера и так далее.

Апгрейд системы осуществляется надежным транзакционным образом с возможность отката на предыдущую версию. Это делается за счет использования возможностей ZFS, путем клонирования файловой системы.

Несколько лет назад новость о выходе NixOS посчитали первоапрельской шуткой. Но, «шутка» оказалась на удивление живучей: дистрибутив с декларативной конфигурацией менеджера пакетов продолжает развиваться, а 13 мая 2013 года вышла очередная версия Nix 1.5.2.



Оставить мнение