{ lib, pkgs, auxiliaryPkgs, ... }: let configs = [ ../configs/.vimrc ../configs/plugins.vimrc ]; configVars = { "@ycm_extra_conf@" = ../configs/.ycm_extra_conf.py; }; processRCFile = f: with builtins; (replaceStrings (lib.attrNames configVars) (map toString (lib.attrValues configVars)) (readFile f)); customRC = builtins.foldl' (r: f: r + (processRCFile f)) "" configs; vim-configured = with pkgs; vim-full.customize { name = "vim"; # explicitly replace vim vimrcConfig = { inherit customRC; packages.collection = with vimPlugins; { start = [ fzf-vim vim-fugitive vim-gitgutter vim-easymotion vim-sleuth vim-better-whitespace vim-tmux-navigator ] ++ (with auxiliaryPkgs; [ youcompleteme ]); opt = [ ]; }; }; }; in { programs.vim = { defaultEditor = true; package = vim-configured; }; }