{ pkgs, lib, config, options, ... }:
let inherit (builtins) readFile; in
{
config = {
  programs.vim = {
    extraConfig =
      readFile vim/vimrc
      #+ readFile home/vim/syntastic.vim
      #+ readFile home/vim/coc.vim
      + readFile vim/ale.vim
      ;
    # Plugin list:
    # nix-instantiate -E --eval 'builtins.attrNames (import <nixpkgs> {}).vimPlugins'
    plugins = [
      #pkgs.vimPlugins.vim-lsc
      pkgs.vimPlugins.gitgutter
      #pkgs.vimPlugins.nvim-yarp
      #pkgs.vimPlugins.deoplete-nvim
      #pkgs.vimPlugins.deoplete-lsp
      #pkgs.vimPlugins.LanguageClient-neovim
      #pkgs.vimPlugins.fzf-vim
      #pkgs.vimPlugins.echodoc
      pkgs.vimPlugins.ale
      #pkgs.vimPlugins.indentLine
      #pkgs.vimPlugins.vim-indent-guides
      #pkgs.vimPlugins.coc-nvim
      #pkgs.vimPlugins.coc-diagnostic
      #pkgs.vimPlugins.coc-json
      #pkgs.vimPlugins.coc-lists
      pkgs.vimPlugins.easy-align
      pkgs.vimPlugins.hoogle
      pkgs.vimPlugins.Recover-vim
      #pkgs.vimPlugins.syntastic
      #pkgs.vimPlugins.The_NERD_tree
      pkgs.vimPlugins.vim-dirvish
      pkgs.vimPlugins.vim-buffergator
      pkgs.vimPlugins.vim-markdown
      pkgs.vimPlugins.vimproc
      #pkgs.vimPlugins.fugitive
    ];
  };
  programs.neovim = {
    extraConfig =
      readFile neovim/init.vim +
      readFile vim/ale.vim;
    plugins = [
      #pkgs.vimPlugins.vim-lsc
      pkgs.vimPlugins.gitgutter
      #pkgs.vimPlugins.nvim-yarp
      #pkgs.vimPlugins.deoplete-nvim
      #pkgs.vimPlugins.deoplete-lsp
      #pkgs.vimPlugins.LanguageClient-neovim
      #pkgs.vimPlugins.fzf-vim
      #pkgs.vimPlugins.echodoc
      pkgs.vimPlugins.ale
      #pkgs.vimPlugins.indentLine
      #pkgs.vimPlugins.vim-indent-guides
      #pkgs.vimPlugins.coc-nvim
      #pkgs.vimPlugins.coc-diagnostic
      #pkgs.vimPlugins.coc-json
      #pkgs.vimPlugins.coc-lists
      pkgs.vimPlugins.easy-align
      pkgs.vimPlugins.hoogle
      pkgs.vimPlugins.Recover-vim
      #pkgs.vimPlugins.syntastic
      #pkgs.vimPlugins.The_NERD_tree
      pkgs.vimPlugins.vim-dirvish
      pkgs.vimPlugins.vim-buffergator
      pkgs.vimPlugins.vim-markdown
      pkgs.vimPlugins.vimproc
      #pkgs.vimPlugins.fugitive
    ];
  };
} // lib.optionalAttrs (options ? "nixpkgs") {
  nixpkgs.config.vim.gui = if config.host.desktop then "gtk3" else "";
};
}