trynix: ejecuta cualquier paquete de Nix directamente en el navegador

Fuentes: Any Nix package, live in your browser

trynix es una herramienta web que permite arrancar una máquina virtual Linux dentro de una pestaña del navegador y ejecutar en ella cualquier paquete del repositorio Nixpkgs, sin instalar nada en el equipo del visitante. El proyecto, disponible en trynix.dev, indexa más de 310.083 versiones de paquetes gracias a trabajos previos del mismo autor —nixpkgs-multiverse, grail y omniflake— y aprovecha el llamado "modo rápido" de nixpkgs-multiverse para saltarse la fase de evaluación y obtener directamente la ruta de almacenamiento exacta que Hydra construyó para cada versión histórica.

El sistema combina tres piezas: un kernel x86-64 compilado a WebAssembly (qemu-wasm), un sistema de archivos con un store de Nix cargado en memoria y un emulador de terminal basado en Ghostty. Como el navegador puede actuar como cliente de cualquier caché Nix que sirva los archivos con la cabecera CORS access-control-allow-origin: * —algo que ofrecen cache.nixos.org, Cachix y GitHub Pages sin coste—, cualquier store path es recuperable. Esto incluye paquetes personalizados publicados en GitHub Pages que nunca formaron parte de la caché pública, como una versión modificada de GNU Hello servida como ejemplo.

Para que la experiencia sea ágil, el sitio pre-descarga en segundo plano el motor de emulación y una instantánea de la máquina virtual ya arrancada; cada visita posterior reanuda esa instantánea en lugar de iniciar desde cero, y solo se fetcha el cierre (closure) del paquete solicitado, que se añade al store en caliente, sin reinicio. El cierre total no puede superar unos 1,5 GiB de memoria de pestaña, límite impuesto por el espacio de direcciones de 32 bits de WebAssembly.

El autor plantea usos más allá de la demostración: revisar pull requests ejecutando los artefactos reales generados por CI, compartir binarios entre agentes automatizados, o probar software antiguo sin configurar un entorno local. Reconoce, no obstante, que la ejecución bajo emulación sigue siendo más lenta que en nativo, especialmente la primera vez que se traduce un binario de x86-64 a WebAssembly.