Как вы, возможно, уже знаете, конфигурации системы могут без проблем сосуществовать в хранилище Nix.Проблема в том, что запускает более одной системы одновременно.Для этого вам потребуются инструменты изоляции или виртуализации, такие как Docker, VirtualBox и т. Д.
Docker
Docker не был разработан для запуска всей операционной системы внутри контейнера, поэтому он может нелучше всего подходит для тестирования развертываний на основе Nix OS , которые ожидают и предоставляют systemd и некоторые службы внутри своих подразделений развертывания. Несмотря на то, что вы не получите хорошего опыта Nix OS с Docker, Nix и Docker подходят друг другу.ОБНОВЛЕНИЕ: и «сырые» пакеты Nix, и NixOS работают в Docker.Например, Arion поддерживает образы из простых Nix, модулей NixOS и «обычных» образов Docker.
NixOps
Для развертывания Nix OS внутри NixOSЛучше всего использовать технологию, которая предназначена для запуска полной системы Linux внутри.
Это помогает иметь программу, которая управляет интеграцией для вас.В экосистеме Nix NixOps является первым кандидатом на это.Вы можете использовать NixOps с его бэкэндом VirtualBox или (в настоящее время экспериментальным) бэкэндом контейнера NixOS, или вы можете использовать none
бэкэнд для развертывания на компьютерах, которые вы создали с помощью другого инструмента.
Тесты
Если ваша цель - запустить автоматизированные интеграционные тесты, вы можете использовать среду тестирования виртуальных машин NixOS.При этом используется виртуализация Linux KVM (expose / dev / kvm в песочнице) для запуска теста интеграции в сетях виртуальных машин, и он запускает их в качестве деривации.Он довольно эффективен, потому что не должен создавать образы виртуальных машин, поскольку он монтирует хранилище Nix в ВМ.Тесты, являющиеся деривациями, обеспечивают хороший рабочий процесс разработки.
Оптимизация хранилища Nix
Уникальная особенность Nix заключается в том, что вы часто можете повторно использовать хранилище Nix хоста, что позволяет монтировать файловую систему хоста вКонтейнер / VM - это хорошая возможность в вашем решении.Если вы создаете свои собственные решения, в зависимости от ваших потребностей, вы можете отложить эту оптимизацию, потому что она становится немного более сложной, если вы хотите, чтобы контейнер / vm мог изменять хранилище.Тесты NixOS решают эту проблему с помощью наложенной файловой системы в виртуальной машине.Другой подход может заключаться в пересылке сокета демона Nix.