# Configurer vim et ses greffons avec un module customConfig

**URL:** <https://forum.glfos.org/t/configurer-vim-et-ses-greffons-avec-un-module-customconfig/147>\
**Category:** Configuration et personnalisation\
**Created:** [Septembre 17, 2026, 9:49 UTC](https://forum.glfos.org/t/configurer-vim-et-ses-greffons-avec-un-module-customconfig/147 "2026-09-17T09:49:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![NoBoDyZ](https://forum.glfos.org/user_avatar/forum.glfos.org/nobodyz/32/158_2.png) [@NoBoDyZ](https://forum.glfos.org/u/NoBoDyZ)\
**Post date:** [Septembre 17, 2026, 9:49 UTC](https://forum.glfos.org/t/configurer-vim-et-ses-greffons-avec-un-module-customconfig/147/1 "2026-09-17T09:49:31Z")

</div>

Sur NixOS, on ne laisse pas vim installer ses greffons lui-même. On décrit la liste dans un fichier `.nix`, et on obtient un vim complet, identique sur toutes ses machines, reconstruit à l'identique après une réinstallation. Plus de Vundle, plus de vim-plug, plus de dossier `~/.vim` à sauvegarder. Voici comment, et surtout ce qui change par rapport à une installation classique.

> ℹ **Remarque**  
> Cet article fait partie d'une série sur les modules à importer dans `customConfig`. Si vous n'avez jamais édité ces fichiers, lisez d'abord [Ajouter vos programmes](https://forum.glfos.org/t/ajouter-vos-programmes/88) et [Configuration personnalisée](https://forum.glfos.org/t/configuration-custom/87).

  

## Ce que vous obtenez

- la commande `vim` avec vos greffons déjà présents, pour tous les comptes de la machine ;
- votre `vimrc` versionné avec le reste de la configuration ;
- aucun gestionnaire de greffons à installer, à mettre à jour ou à réparer.

  

## Le fichier

Créez `/etc/nixos/customConfig/vim.nix` :

```nix
{ pkgs, ... }:

{
  environment.systemPackages = [
    pkgs.universal-ctags

    (pkgs.vim-full.customize {
      name = "vim";
      vimrcConfig.customRC = builtins.readFile ./vimrc;
      vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
        start = [
          nerdtree
          ctrlp-vim
          tagbar
          vim-airline
          vim-airline-themes
          vim-commentary
          vim-surround
          vim-fugitive
          vim-colorschemes
        ];
      };
    })
  ];
}

```

Et à côté, dans le même dossier, un fichier `vimrc` :

```vim
set nocompatible
filetype plugin indent on

packloadall
silent! helptags ALL

syntax on
colorscheme monokai

set number
set encoding=utf-8
set expandtab shiftwidth=2 tabstop=2
set ignorecase smartcase
set incsearch hlsearch
set clipboard=unnamedplus
set mouse=a

let g:airline_powerline_fonts = 1
let g:airline_theme = 'dark'

nnoremap <C-n> :NERDTreeToggle<CR>
nnoremap <F8> :TagbarToggle<CR>
nnoremap <leader>h :nohlsearch<CR>

```

  

## Ce que fait chaque ligne

**`pkgs.vim-full`** est la variante complète de vim : interface graphique, prise en charge du presse-papiers système, interpréteurs embarqués. C'est elle qu'il faut si vous voulez que `set clipboard=unnamedplus` fonctionne, car le vim minimal est compilé sans le support X11.

**`.customize`** enveloppe le paquet pour y injecter votre configuration. Les parenthèses autour de l'expression entière sont indispensables : sans elles, Nix croirait que vous listez trois éléments distincts.

**`name = "vim"`** décide du nom de la commande produite. Avec `"vim"`, votre version devient celle que vous obtenez en tapant `vim`.

**`vimrcConfig.customRC`** reçoit le contenu du fichier de configuration. `builtins.readFile ./vimrc` lit le fichier voisin, ce qui vous laisse écrire du vimscript normal, avec la coloration syntaxique de votre éditeur, plutôt que de l'enfermer dans une chaîne Nix.

**`vimrcConfig.packages.myVimPackage.start`** est la liste des greffons chargés au démarrage. Le nom `myVimPackage` est arbitraire, c'est juste une étiquette.

**`pkgs.universal-ctags`** n'est pas un greffon, c'est un programme externe. Tagbar, qui affiche la liste des fonctions du fichier courant, l'appelle pour analyser le code. Sans lui, Tagbar s'ouvre sur un panneau vide en affichant un message que l'on ne lit pas toujours.

Les greffons retenus ici :

| Greffon | Ce qu'il apporte |
| --- | --- |
| `nerdtree` | un explorateur de fichiers en panneau latéral |
| `ctrlp-vim` | ouverture d'un fichier par recherche approximative sur son nom |
| `tagbar` | la structure du fichier courant, fonctions et classes |
| `vim-airline` | une barre d'état complète, avec la branche git |
| `vim-airline-themes` | les habillages de cette barre |
| `vim-commentary` | `gcc` commente une ligne, `gc` une sélection |
| `vim-surround` | ajouter, changer ou retirer des guillemets et des balises autour d'un texte |
| `vim-fugitive` | git dans vim, `:Git status`, `:Git blame` |
| `vim-colorschemes` | environ trois cents jeux de couleurs, dont monokai |

  

## Les deux pièges du passage à Nix

**`packloadall` en début de vimrc.** Les greffons fournis par Nix sont des paquets natifs de vim, et vim les charge normalement **après** avoir lu votre vimrc. Si vous appelez `colorscheme monokai` sans avoir forcé le chargement, vim répond `E185: Cannot find color scheme 'monokai'`, alors que le greffon est bel et bien installé. La ligne `packloadall` remet les choses dans l'ordre, et `silent! helptags ALL` construit au passage l'index de l'aide.

**Plus aucune ligne Vundle.** Les `Plugin '...'`, les `call vundle#begin()` et les `call vundle#end()` doivent disparaître de votre vimrc. Les greffons sont déjà là, et Vundle chercherait à les réinstaller dans votre dossier personnel, ce qui aboutit à deux versions concurrentes et à des comportements incompréhensibles.

  

## Activer le module

Dans `/etc/nixos/customConfig/default.nix` :

```nix
{
  imports = [./vim.nix];

  environment.systemPackages = [
  # Add your stable apps here (exemple: pkgs.btop)

```

Puis :

```bash
glf-update

```

Vérifiez ensuite depuis un nouveau terminal :

```bash
vim --version | head -1
vim -c ':echo &runtimepath' -c ':q'

```

  

## Les options que vous pouvez changer

- **Garder le vim d'origine à côté.** Mettez `name = "monvim"`. Vous aurez alors `monvim` pour votre version et `vim` pour celle du système.
- **Des greffons chargés à la demande.** À côté de `start`, la liste `opt` déclare des greffons que vim ne charge pas au démarrage. Vous les activez dans la session avec `:packadd nom`. Pratique pour un greffon lourd dont vous vous servez rarement.

```nix
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
  start = [vim-airline];
  opt = [vimtex];
};

```

- **Trouver le nom d'un greffon.** Sur [search.nixos.org](https://search.nixos.org/packages?query=vimPlugins), ou en ligne de commande :

```bash
nix search nixpkgs vimPlugins.nerdtree

```

Les noms reprennent en général celui du dépôt, avec les points remplacés par des tirets : `ctrlp.vim` devient `ctrlp-vim`.
- **De la complétion et du diagnostic.** `syntastic` est le vétéran, mais il vieillit. Regardez plutôt `vim-lsp` ou `coc-nvim`, qui parlent aux serveurs de langage modernes. Attention, ces greffons demandent des programmes externes, à déclarer eux aussi dans `environment.systemPackages`.
- **Pour Neovim** , la même mécanique existe :

```nix
{
  programs.neovim = {
    enable = true;
    defaultEditor = true;
    configure = {
      customRC = builtins.readFile ./init.vim;
      packages.myPlugins.start = with pkgs.vimPlugins; [nerdtree vim-airline];
    };
  };
}

```

- **Faire de vim l'éditeur par défaut** du système, ce qui profite à `sudoedit`, à git et à sops :

```nix
{
  environment.variables.EDITOR = "vim";
}

```

  

## En cas de problème

- **`E185: Cannot find color scheme`** : `packloadall` manque en début de vimrc, ou le greffon de couleurs n'est pas dans la liste.
- **_attribute 'xxx' missing_ à la construction** : le nom du greffon n'existe pas tel quel dans `vimPlugins`. Cherchez-le avec `nix search`, les tirets et les points se ressemblent mais ne s'écrivent pas pareil.
- **Tagbar s'ouvre vide** : il manque `pkgs.universal-ctags` dans les paquets du système.
- **La barre airline affiche des symboles bizarres** : `g:airline_powerline_fonts = 1` demande une police Nerd Font, à installer et à sélectionner dans le terminal. Voyez [l'article sur zsh et Powerlevel10k](https://forum.glfos.org/t/installer-zsh-et-le-theme-powerlevel10k-avec-un-module-customconfig/149), qui traite la même question.
- **_path does not exist_ à l'évaluation** : `builtins.readFile ./vimrc` exige que le fichier existe. Si vous l'avez supprimé ou renommé, le système ne se construit plus tant que la ligne pointe dans le vide.
- **Le presse-papiers système ne suit pas** : vérifiez que vous utilisez bien `vim-full` et non `vim`.

  

## Voir aussi

- [Installer zsh et le thème Powerlevel10k](https://forum.glfos.org/t/installer-zsh-et-le-theme-powerlevel10k-avec-un-module-customconfig/149)
- [Installer Claude Code et son outillage](https://forum.glfos.org/t/installer-claude-code-et-son-outillage-avec-un-module-customconfig/138)
- [Installer Guake, le terminal déroulant](https://forum.glfos.org/t/installer-guake-le-terminal-deroulant-avec-un-module-customconfig/140)
- [Ajouter vos programmes](https://forum.glfos.org/t/ajouter-vos-programmes/88)
