Skip to content
Tech AI Wire

TryNix exécute n'importe quel paquet Nix dans un onglet

TryNix démarre un noyau Linux compilé en WebAssembly et exécute l'une des 310 083 versions de nixpkgs dans un onglet. Python 3 met 7,5 secondes à la première visite.

Par Tech AI Wire Team

3 min de lecture

XLinkedIn
The TryNix page in a browser tab, with the hello package entered and an embedded terminal showing a nix-shell prompt.

Vous pouvez désormais exécuter n'importe quel paquet de toute l'histoire de nixpkgs sans rien installer. Farid Zakaria a publié TryNix le 4 septembre 2026. Il démarre un noyau Linux compilé en WebAssembly dans un onglet du navigateur, puis exécute le paquet demandé.

"You can browse the complete history of nixpkgs, over 310,083 package versions, and run any of them in a Linux machine that boots in your tab", a écrit Zakaria.

Nixpkgs est la collection de paquets derrière Nix et NixOS. Sa propriété déterminante est que chaque version jamais publiée reste adressable, et c'est ce qui rend une telle affirmation possible.

Comment cela fonctionne vraiment

Les pièces sont toutes des technologies existantes, assemblées de façon inhabituelle.

Un noyau Linux compilé en WebAssembly via QEMU-WASM fournit la machine. Ghostty, un émulateur de terminal, fournit l'interface. Un magasin Nix en mémoire contient la clôture du paquet, c'est-à-dire le paquet et tout ce dont il dépend.

Les paquets eux-mêmes arrivent en HTTP simple depuis des caches binaires Nix. Cette partie a une exigence, et Zakaria l'énonce clairement : "The only requirement is that the cache is served with access-control-allow-origin: *."

Cet en-tête est toute l'astuce. Les caches Nix sont déjà des serveurs de fichiers HTTP publics, donc avec des en-têtes cross-origin permissifs, un navigateur peut y puiser directement, sans serveur intermédiaire.

Ce que coûte le démarrage

Les démarrages à froid se comptent en secondes, pas en minutes.

PaquetPremière visiteRetour
hello4,2 s1,5 s
ripgrep4,3 s1,7 s
python37,5 s3,5 s

L'écart entre les deux colonnes, c'est le cache du navigateur qui fait son travail. Une seconde exécution du même paquet évite l'essentiel du téléchargement.

Les limites sont réelles

Trois contraintes décident si cela convient à votre usage.

La taille de clôture plafonne autour de 1,5 Go, contre un plafond dur de 4 Go côté WebAssembly. Les grosses chaînes d'outils et tout ce qui traîne un gros environnement d'exécution ne rentreront pas.

Il y a une console série et rien d'autre, comme le note le dépôt. Pas d'applications graphiques, pas de fenêtrage, pas de navigateur dans le navigateur.

Et tout est traduit de x86-64 vers WebAssembly à l'exécution, ce qui ajoute de la latence. C'est un endroit pour essayer un outil, pas pour le mesurer.

Ce que cela signifie pour les développeurs

L'usage immédiat est la reproduction. Zakaria en fait une formule qui mérite d'être reprise : "Works on my machine" is a URL now for reproduction. Un rapport de bogue contenant un lien qui démarre la version exacte du paquet n'a pas la même qualité qu'un rapport contenant un numéro de version.

Pour qui maintient de la documentation ou un dépôt pédagogique, cela supprime la pire étape de tout tutoriel. "Installez d'abord Nix" fait perdre des lecteurs. Un lien, non.

Vérifiez les en-têtes de votre propre cache binaire si vous voulez que cela marche avec vos paquets. L'en-tête cross-origin est l'exigence, et la plupart des caches privés ne l'ont pas. C'est une ligne à changer et une décision de sécurité à prendre sciemment, car elle ouvre le cache à toute origine.

Ne bâtissez rien de lourd là-dessus. Entre le plafond de clôture de 1,5 Go et le surcoût de traduction, c'est une surface de démonstration, pas un environnement de développement. L'écosystème Nix a connu des mois difficiles. L'équipe centrale de Nixpkgs s'est dissoute, et un article a piégé l'amorçage de NixOS via strip. Un projet qui rend la bonne partie de Nix plus facile à montrer tombe bien.

Sources

  1. Any Nix package, live in your browser - Farid Zakaria
  2. fzakaria/trynix - GitHub

Articles liés