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.
3 min de lecture

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.
| Paquet | Première visite | Retour |
|---|---|---|
| hello | 4,2 s | 1,5 s |
| ripgrep | 4,3 s | 1,7 s |
| python3 | 7,5 s | 3,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
- Any Nix package, live in your browser - Farid Zakaria
- fzakaria/trynix - GitHub
Articles liés

Asahi Linux prend désormais officiellement en charge les Mac M3
Asahi Linux a intégré la prise en charge des M3, M3 Pro et M3 Max à son installateur. Le Wi-Fi, l'USB 3 et le décodage AV1 fonctionnent. La veille, le HDMI et la 3D rapide, non.

Kubernetes 1.37 fait passer le mode rootless en bêta
Kubernetes 1.37 fait passer KubeletInUserNamespace en bêta. Le kubelet, les runtimes de conteneurs, les plugins CNI et kube-proxy peuvent tous tourner en utilisateur ordinaire.

Babashka 1.13.220 ajoute une FFI pour les bibliothèques natives
Babashka 1.13.220 ajoute une FFI bâtie sur l'API Panama de Java : un script Clojure peut appeler une bibliothèque native sans écrire de pod ni la moindre ligne de Java.