Des devshells parfaits et reproductibles avec Nix Flakes et direnv
Dans mon article précédent sur Nix, j’expliquais pourquoi j’avais progressivement abandonné asdf et Mise au profit de Nix. Puis, nous avons vu comment sécuriser nos secrets avec sops-nix. Aujourd’hui, on s’attaque au nerf de la guerre du dev au quotidien : l’environnement de travail par projet. On a tous connu ce scénario : Le projet A a besoin de Node 18 et d’une version spécifique de pnpm. Le projet B tourne sous Node 22 avec Python 3.12 et des bindings C compilés. Le projet C exige Hugo version extended, un linter Markdown et un client PostgreSQL. Résultat habituel ? Des conflits de versions partout, des nvm use oubliés, des installations globales qui polluent l’OS, ou le recours à de lourds conteneurs Docker/devcontainers juste pour formater du code ou lancer un test. ...