Contexte

Je travaille sur un Mac mini headless auquel j’accède en SSH et tmux, et mon éditeur est Neovim. Mes dotfiles sont versionnés et déployés avec GNU Stow.

Plutôt que de partir d’une distribution préconfigurée, j’ai voulu construire ma propre config depuis zéro pour maîtriser chaque ligne. Elle s’isole du reste via NVIM_APPNAME et tourne donc en parallèle de n’importe quelle autre installation Neovim.

Approche technique

Les plugins sont gérés par lazy.nvim avec des versions épinglées par lockfile. La structure du code repose sur nvim-treesitter (rewrite main), ses textobjects et context, avec un folding structurel. Le LSP utilise l’API native vim.lsp.config de Neovim 0.11+ couplée à Mason (lua_ls, rust_analyzer, basedpyright), la complétion passe par blink.cmp, et conform.nvim assure le formatage à la sauvegarde (stylua, rustfmt, ruff). S’y ajoutent telescope + fzf-native, neo-tree, gitsigns, mini.surround, mini.pairs, flash.nvim, undotree et une UI kanagawa-dragon avec lualine et which-key.

L’assistance IA est intégrée via sidekick.nvim (CLIs Claude Code et Codex), avec un kill-switch par projet : un fichier marqueur .noai ou des chemins bloqués coupent l’IA. Mes projets d’école restent ainsi entièrement sans assistance.

Ce que j’en retire

Construire cette config sans distribution m’a forcé à comprendre chaque brique, du LSP natif au moteur de plugins. Le lockfile et GNU Stow me donnent un environnement reproductible et redéployable.

Le kill-switch IA est un choix délibéré : garder mes travaux scolaires à l’abri de toute assistance automatisée, tout en profitant des outils IA ailleurs.