{
  pkgs,
  config,
  lib,
  ...
}:
{
  programs.neovim = {
    enable = true;
    defaultEditor = true;
    plugins = with pkgs.vimPlugins; [
      (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
      nvim-treesitter.withAllGrammars
      vim-nix

      telescope-nvim
      todo-comments-nvim

      gitsigns-nvim
    ];
    extraPackages = with pkgs; [
      git
      ripgrep
      fd
      gcc
    ];
    extraConfig = builtins.readFile ./nvimrc;
    extraLuaConfig = builtins.readFile ./nvim.lua;
    vimAlias = true;
    viAlias = true;
  };
}