Outil CLI
cachix/devenv avatar
cachix/devenv

devenv : des environnements de développement déclaratifs sur Nix, du devenv.nix au conteneur OCI

Environnements de développement rapides, déclaratifs, reproductibles et composables utilisant Nix.

7 645 étoiles567 forksRustApache-2.0

En bref

De quoi s’agit-il ?
Analyse de cachix/devenv : manifeste devenv.nix, shell interactif pendant la reconstruction, cache d'évaluation sous 100 ms annoncé, 40+ services, conteneurs OCI et secret management par SecretSpec.
À qui s’adresse-t-il ?
devenv s'adresse aux équipes qui veulent des environnements reproductibles sans écrire du Nix brut, et qui acceptent de dépendre de Nix en coulisse ; il ne convient pas à ceux qui refusent toute dépendance au store Nix. Avant l'adoption, lancez devenv init dans un répertoire de test puis devenv shell, chronométrez la seconde activation pour vérifier la promesse de cache sub-100 ms sur votre machine, et fixez vos dépendances dans devenv.yaml avant un devenv update.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement Rust, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

devenv init et devenv shell : le contrat d'entrée sur Nix

devenv construit des environnements de développement déclaratifs, reproductibles et composables au-dessus de Nix. Le point d'entrée est devenv init, qui génère un devenv.nix montrant les blocs de base : env.GREET, une liste packages avec pkgs.git, les languages.rust.enable ou services.postgres.enable commentés, un script scripts.hello.exec et un enterShell qui exécute le tout. La commande devenv shell active l'environnement.

Le fichier devenv.yaml complète le tableau avec les inputs Nix, et devenv.lock fige leurs révisions, mise à jour par devenv update. Cette séparation entre le manifeste du projet et l'épinglage des dépendances reprend un schéma familier aux utilisateurs de lockfiles, appliqué cette fois à l'arbre Nix. Le projet affiche 7441 étoiles et 550 forks au moment de l'indexation.

devenv 2.0 : terminal UI, rechargement natif et évaluation annoncée sous 100 ms

La version 2.0, présentée en mars 2026, refait l'expérience : une interface terminal affiche la progression des builds en direct, la hiérarchie des tâches et le détail des erreurs. Le rechargement natif du shell reconstruit en arrière-plan pendant que le shell reste interactif, ce qui supprime l'attente bloquante à chaque modification du manifeste.

Sur la performance, le README revendique des environnements instantanés grâce au cache incrémental d'évaluation Nix, sous 100 ms quand rien n'a changé. Ce chiffre est une annonce du projet, issue d'un billet d'octobre 2024, et non une mesure indépendante : elle dépend de la machine et de la taille de l'environnement. Un LSP pour devenv.nix, adossé au serveur nixd embarqué, apporte autocomplétion, documentation au survol et aller à la définition.

Gestionnaire de processus en Rust : ordre de dépendance, probes et ports alloués

Le gestionnaire de processus natif, écrit en Rust, dépasse le simple lancement de commandes : ordonnancement par dépendances, politiques de redémarrage, probes de readiness en exec, HTTP ou systemd notify, activation par socket, watchdogs par heartbeat et surveillance de fichiers. C'est le composant qui remplace le terminal multiplexeur que chaque équipe bricole habituellement.

L'allocation automatique de ports trouve les ports libres pour que des environnements parallèles ne se marchent pas dessus, détail qui change la vie quand on ouvre plusieurs projets en même temps. Côté orchestration, les tâches s'exécutent en DAG avec cache et exécution parallèle, supportent des espaces de noms, et les scripts accèdent à tous les paquets de l'environnement.

50+ langages, 40+ services et conteneurs OCI sans Docker

Le périmètre revendiqué est large : plus de 50 langages avec outillage intégré, compilateurs, serveurs LSP, formatters, linters et sélection de version ; plus de 100 000 paquets issus de Nixpkgs pour Linux et macOS en x64 et ARM64, WSL2 compris ; plus de 40 services dont PostgreSQL, Redis, MySQL, MongoDB et Elasticsearch. Ces chiffres renvoient aux pages dédiées de devenv.sh plutôt qu'à une promesse non étayée.

La sortie de l'environnement ne s'arrête pas au shell : les conteneurs OCI se construisent depuis votre environnement sans Docker, et les outputs empaquettent des applications avec les outils de chaque langage, crate2nix et uv2nix cités en exemple. Le support polyrepo permet de référencer des outputs et des options entre dépôts, ce qui évite de dupliquer la configuration dans chaque projet.

Profils, imports et inputs : la composition entre projets

Les profils déclinent un environnement en variantes activables depuis la CLI, --profile backend --profile testing, sans dupliquer le manifeste. La composition passe par des imports qui partagent et réutilisent des environnements entre projets, et les inputs épinglent ou surchargent les dépendances Nix, le tout materialisé dans devenv.lock.

Ce trio dessine une organisation à deux niveaux : un dépôt de configuration partagée au niveau de l'organisation, et des projets qui l'étendent au lieu de recopier des blocs. La documentation de devenv.sh consacre des pages à chacun de ces mécanismes, signe qu'ils forment le cœur du modèle plutôt que des fonctions annexes.

SecretSpec, direnv, git hooks et serveur MCP : l'intégration au poste

Les secrets passent par SecretSpec, une gestion déclarative agnostique du fournisseur, avec keyring système, 1Password et dotenv en backends cités. L'intégration direnv active le shell automatiquement à l'entrée dans le répertoire, les git hooks passent par git-hooks.nix avec formatters et linters préconfigurés, et devenv test démarre puis arrête les processus nécessaires aux tests.

Deux portes d'entrée IA complètent le tableau : un serveur MCP pour la recherche de paquets et d'options depuis un assistant, et la génération d'environnements par description en langage naturel via devenv.new ou la commande generate. Le README ne promet rien sur la qualité de ces générations ; elles produisent un point de départ à relire, pas une configuration validée.

Init, shell, update, search : ce qu'il faut tester avant d'engager un projet

La CLI expose six commandes : init pour l'échafaudage, shell pour l'activation, update pour le lockfile, search pour interroger paquets et options de nixpkgs, info pour l'état de l'environnement, generate pour la création assistée. Un test d'adoption sérieux passe par ces quatre premières : devenv init dans un répertoire jetable, devenv shell, modification du devenv.nix pour observer le rechargement, puis devenv update pour vérifier le comportement du lockfile.

Le projet compte 359 tickets ouverts, et les releases suivent un rythme serré en été 2026 : v2.2 le 28 juillet, v2.2.1 le 2 août, v2.2.2 le 13 août. Épinglez la version utilisée par l'équipe : un outil qui touche au shell et aux processus ne se met pas à jour en silence au milieu d'un projet.

Conclusion éditoriale

devenv s'adresse aux équipes qui veulent des environnements reproductibles sans écrire du Nix brut, et qui acceptent de dépendre de Nix en coulisse ; il ne convient pas à ceux qui refusent toute dépendance au store Nix. Avant l'adoption, lancez devenv init dans un répertoire de test puis devenv shell, chronométrez la seconde activation pour vérifier la promesse de cache sub-100 ms sur votre machine, et fixez vos dépendances dans devenv.yaml avant un devenv update.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté