{ ... }: {
  imports = [ ./nixvim/base.nix ]; 

  programs.nixvim = {
    plugins = {
      lsp = {
        enable = true;
        servers = {
          rust-analyzer = {
            enable = true;
            installCargo = true;
            installRustc = true;
          };
          pylsp = {
            enable = true;
            autostart = true;
            installLanguageServer = true;
            settings = {
              plugins = {
                black = {
                  enabled = true;
                  preview = true;
                };
                jedi_completion = {
                  enabled = true;
                  fuzzy = true;
                };
                pylint.enabled = true;
                pylsp_mypy.enabled = true;
              };
            };
          };
          nil_ls.enable = true;
          html.enable = true;
          cssls.enable = true;
          bashls.enable = true;
        };
        keymaps = {
          silent = true;
          diagnostic = {
            "<leader>lk" = {
              action = "goto_prev";
              desc = "Go to prev";
            };
            "<leader>lj" = {
              action = "goto_next";
              desc = "Go to next"; 
            };
          };

          lspBuf = {
            K = {
              action = "hover";
              desc = "Hover";
            };
            "<leader>lr" = {
              action = "references";
              desc = "LSP [r]eferences";  
            };
            "<leader>ld" = {
              action = "definition";
              desc = "LSP [d]efinitions";  
            };
            "<leader>li" = {
              action = "implementation";
              desc = "LSP [i]implementations";  
            };
            "<leader>lt" = {
              action = "type_definition";
              desc = "LSP [t]ype definitions";  
            };
            "<leader>la" = {
              action = "code_action";
              desc = "LSP Code [A]ctions";  
            };
          };
        };
      };
    };
  };
}