À propos du projet

devenv construit des environnements de développement reproductibles sur Nix, configurés via devenv.nix et devenv.yaml. Il vise une itération rapide : mise en cache incrémentale de l'évaluation Nix, une interface terminal avec progression de build en direct, et un rechargement natif du shell qui reconstruit en arrière-plan pendant que le shell reste interactif. Un LSP basé sur nixd fourni offre l'autocomplétion, la documentation au survol et la navigation vers la définition pour devenv.nix. Les environnements peuvent être créés de manière ad hoc depuis la CLI sans fichiers de configuration, ou récupérés depuis d'autres dépôts avec --from, et les options de configuration peuvent être remplacées par des valeurs typées telles que --option services.postgres.enable:bool true. La couverture inclut plus de 50 langages avec compilateurs, serveurs LSP, formateurs, linters et sélection de version ; plus de 100 000 paquets de Nixpkgs pour Linux, macOS, x64 et ARM64, y compris WSL2 ; et plus de 40 services tels que PostgreSQL, Redis, MySQL, MongoDB, Elasticsearch et Caddy. Un gestionnaire de processus natif écrit en Rust gère l'ordonnancement des dépendances, les politiques de redémarrage, les sondes de disponibilité (exec, HTTP, systemd notify), l'activation par socket, les heartbeats de watchdog et la surveillance de fichiers, ainsi que l'allocation automatique de ports libres. Les tâches prennent en charge l'exécution basée sur DAG, la mise en cache, les exécutions parallèles et les espaces de noms, et les scripts s'exécutent avec accès à tous les paquets de l'environnement. Les fonctionnalités d'empaquetage et de déploiement incluent la construction de conteneurs OCI à partir de l'environnement sans Docker, des sorties pour empaqueter des applications avec des outils spécifiques au langage, et la prise en charge polyrepo pour référencer des sorties et des options entre dépôts. La composition est gérée via des profils, des imports et des entrées épinglées ou remplacées. Les intégrations couvrent SecretSpec pour la gestion déclarative des secrets, les hooks git via git-hooks.nix, les tests avec devenv test qui démarre et arrête automatiquement les processus, direnv pour l'activation automatique du shell, un serveur MCP pour l'intégration avec les assistants IA, et la génération d'environnements par IA à partir d'une description en langage naturel. La CLI propose des commandes incluant init, generate, shell, update, search, info, up, processes, tasks, test, container, inputs, changelogs, repl, gc, build, eval, direnvrc, version, mcp et lsp, ainsi que des options pour la concurrence de build Nix, l'herméticité, le mode hors ligne, les profils, la mise en cache de l'évaluation et la sortie de traçage.