Был ли у вас опыт работы с NixOS Linux?

«Был ли у вас опыт работы с NixOS Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я использовал NixOS для создания воспроизводимых и неизменяемых инфраструктурных образов, что идеально вписывается в DevOps-практики Infrastructure as Code (IaC).

Ключевые задачи и преимущества в контексте DevOps:

  • Декларативная конфигурация системы: вся конфигурация сервера (пакеты, сервисы, пользователи) описывается в одном файле /etc/nixos/configuration.nix. Это дает полную воспроизводимость и контроль версий для всей инфраструктуры.
  • Изолированные среды разработки и сборки: с помощью nix-shell и shell.nix можно создавать полностью детерминированные окружения для сборки приложений, где все зависимости (вплоть до конкретных версий компиляторов и библиотек) фиксированы. Это решает проблему "работает на моей машине".
  • Надежные обновления и откаты: благодаря атомарным обновлениям и поколениям (generations) можно мгновенно откатиться к предыдущей рабочей конфигурации системы командой nixos-rebuild switch --rollback.

Пример configuration.nix для базового веб-сервера:

{ config, pkgs, ... }:
{
  networking.hostName = "webserver";
  services.nginx = {
    enable = true;
    virtualHosts."default" = {
      root = "/var/www/html";
    };
  };
  environment.systemPackages = with pkgs; [ vim htop git ];
  system.stateVersion = "23.11";
}

Использование NixOS требует времени на освоение, но для задач CI/CD и управления инфраструктурой оно дает беспрецедентный уровень консистентности.