{pkgs, ...}: {
  programs.nixvim = {
    # This just enables NixVim.
    # If all you have is this, then there will be little visible difference
    # when compared to just installing NeoVim.
    enable = true;

    maps.normal = {
      # Equivalent to nnoremap ; :
      ";" = ":";
      # Equivalent to nmap <silent> <buffer> <leader>gg <cmd>Man<CR>
      "<leader>gg" = {
        silent = true;
        remap = false;
        action = "<cmd>Man<CR>";
        # Etc...
      };

      # We can set the leader key:
      leader = ",";

      # We can create maps for every mode!
      # There is .normal, .insert, .visual, .operator, etc!

      # We can also set options:
      options = {
        tabstop = 4;
        shiftwidth = 4;
        expandtab = false;

        mouse = "a";

        # etc...
      };

      # Of course, we can still use comfy vimscript:
      extraConfigVim = builtins.readFile ./init.vim;
      # Or lua!
      extraConfigLua = builtins.readFile ./init.lua;

      # One of the big advantages of NixVim is how it provides modules for
      # popular vim plugins
      # Enabling a plugin this way skips all the boring configuration that
      # some plugins tend to require.
      plugins = {
        lightline = {
          enable = true;

          # This is optional - it will default to your enabled colorscheme
          colorscheme = "wombat";

          # This is one of lightline's example configurations
          active = {
            left = [
              ["mode" "paste"]
              ["redaonly" "filename" "modified" "helloworld"]
            ];
          };

          component = {
            helloworld = "Hello, world!";
          };
        };

        # Of course, there are a lot more plugins available.
        # You can find an up-to-date list here:
        # https://nixvim.pta2002.com/plugins
      };

      # There is a separate namespace for colorschemes:
      colorschemes.gruvbox.enable = true;

      # What about plugins not available as a module?
      # Use extraPlugins:
      extraPlugins = with pkgs.vimPlugins; [vim-toml];
    };
  };
}