{ pkgs, ... }:

{
  programs.vim = { 
    enable = true;
    extraConfig = ''
    " Temporary configuration for editing Nix files
    syntax on
    set autoindent
    set expandtab
    set tabstop=2
    set shiftwidth=2

    " Temporary configuration for editing markdown
    " full configuration with plugins is described here
    " https://blog.elnu.com/2022/06/how-to-configure-vim-for-writing

    setlocal linebreak

    set spell spelllang=en
    set spelllang+=cjk " prevent CJK characters from being spellchecked

    function! Characters()
            return strchars(join(getline(1, '$'), "\n"))
    endfunction
function! Words()
            return wordcount().words
    endfunction

    function! Minutes()
            let wpm = 200
            return (Words() + wpm / 2) / wpm
    endfunction

    set laststatus=2 " enable status line
    set statusline+=%=%{Words()}\ words,
    set statusline+=\ %{Characters()}\ characters,\ about
    set statusline+=\ %{Minutes()}\ minutes
    " remove ugly white background
    hi StatusLine ctermfg=0 ctermbg=none cterm=bold " 0 for the terminal color 0
    '';
  };

  home.sessionVariables = {
    EDITOR = "vim";
  };
}
