{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;

    keymaps = [
      # Equivalent to nnoremap ; :
      {
        key = ";";
        action = ":";
      }

      # Equivalent to nmap <silent> <buffer> <leader>gg <cmd>Man<CR>
      {
        key = "<leader>gg";
        action = "<cmd>Man<CR>";
        options = {
          silent = true;
          remap = false;
        };
      }
      # Etc...
    ];

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

    # 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"]
            ["readonly" "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];
  };
}