Запись архива

Любой Nix-пакет в браузере: trynix.dev запускает виртуальную машину с полной историей nixpkgs через WebAssembly

Проект trynix.dev позволяет запустить любой пакет из истории nixpkgs за последние 13 лет прямо в браузере — без установки Nix на хост-машину. В основе лежит qemu-wasm, запускающий x86_64 Linux через WebAssembly.

Интерфейс trynix.dev с терминалом виртуальной машины, запускающей Nix-пакет в браузере через WebAssembly
Интерфейс trynix.dev с терминалом виртуальной машины, запускающей Nix-пакет в браузере через WebAssembly
NEWS Cities.png | by सम्राट कुमार | wikimedia_commons | CC BY 4.0

Farid Zakaria представил проект trynix.dev — сервис, который позволяет запустить любой Nix-пакет из истории nixpkgs за последние 13 лет прямо в браузере. Пользователю не нужно устанавливать Nix, Linux или какие-либо зависимости на хост-машину: достаточно открыть страницу, выбрать пакет и нажать «Load».

«Это моя magnum opus в работе с Nix», — написал Zakaria в своём блоге 4 сентября 2026 года.

Как это работает

В основе trynix.dev лежит qemu-wasm — порт эмулятора QEMU, скомпилированный в WebAssembly. Он запускает полноценную виртуальную машину x86_64 под управлением Linux прямо в браузерной вкладке. После загрузки пользователь получает интерактивную консоль, где на PATH уже находятся выбранные Nix-пакеты.

Ключевая инновация — использование «быстрого режима» из более раннего проекта nixmultiverse.com. Вместо того чтобы загружать и оценивать Nix-выражения (что требует времени и вычислительных ресурсов), сервис напрямую обращается к store path — готовому бинарному артефакту, который когда-то собрала Hydra (система непрерывной сборки Nix). Если бинар доступен в публичном кеше (cache.nixos.org, Cachix или GitHub Pages), виртуальная машина загружается за секунды.

«Сумасшедшая идея заключается в том, что мы не ограничены публичным кешем, — поясняет Zakaria. — Вы можете поделиться store path, который собрали сами, и любой сможет загрузить его в своей вкладке».

Для этого достаточно, чтобы кеш отдавал файлы с заголовком Access-Control-Allow-Origin: *, что GitHub Pages делает по умолчанию.

Что можно запустить

На момент запуска trynix.dev индексирует более 310 083 версий пакетов. Например, по ссылке https://trynix.dev/?pkg=python3%403.6.2 можно получить интерактивную оболочку с Python 3.6.2 от 2017 года. Сервис поддерживает одновременную загрузку нескольких пакетов и работу с пакетами, которых нет в публичном кеше (при условии, что store path доступен через HTTP с правильными CORS-заголовками).

Ограничения: виртуальная машина предоставляет только последовательную консоль — графического интерфейса нет. Поддерживаются только консольные программы.

trynix-preview: код-ревью через браузер

На основе trynix.dev Zakaria построил инструмент trynix-preview — GitHub Action, который при создании pull request автоматически комментирует ссылку. Перейдя по ней, можно загрузить сборку из PR в браузере и протестировать изменения без развёртывания на сервере.

«Никаких серверов, только браузеры», — описывает подход автор.

Что это значит для разработчиков

Для разработчиков, использующих Nix, trynix.dev решает несколько практических задач:

— Проверка исторических версий. Можно быстро запустить старую версию пакета, чтобы проверить совместимость или воспроизвести старую конфигурацию, не восстанавливая окружение локально.

— Код-ревью без развёртывания. trynix-preview позволяет тестировать изменения в изолированном окружении, не выделяя сервер и не загружая CI-раннеры.

— Демонстрация и обучение. Можно поделиться ссылкой на конкретный пакет, и получатель сразу увидит работающее окружение — без инструкций по установке.

— Проверка собственных сборок. Если store path собран и выложен в кеш с CORS, его можно протестировать в браузере, не загружая на целевую машину.

Технические детали и предостережения

Проект опирается на несколько предшествующих разработок Zakaria: nixpkgs-multiverse (индексация всех версий всех пакетов nixpkgs), grail (работа с диапазонами версий) и omniflake (добавление более 16 тысяч flakes из одного источника). В совокупности эти инструменты позволили создать единый индекс store path для всей истории nixpkgs.

Стоит отметить, что trynix.dev — это не замена полноценной Nix-установки. Виртуальная машина работает в браузере и не имеет доступа к локальной файловой системе, сети (кроме загрузки store path) или графическому выводу. Это инструмент для быстрой проверки и тестирования, а не для постоянной разработки.

Для разработчиков, которые хотят попробовать сервис, достаточно открыть trynix.dev, ввести имя пакета (например, hello или python3) и нажать Load. Через несколько секунд появится консоль с работающим окружением.

Источники