summaryrefslogtreecommitdiff
path: root/nixvim/plugins/lsp/servers.nix
blob: 63349397213fc1cf6d181f2cd9df10fc65bfbd22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
{ pkgs, helpers, ... }:
{
  extraPackages = [
    # bashls
    pkgs.shellcheck
    pkgs.shfmt

    # nil-ls
    pkgs.nixfmt-rfc-style
  ];

  globals = {
    # Required for Deno's LSP
    markdown_fenced_languages = [ "ts=typescript" ];
  };

  plugins.lsp.servers = {
    astro.enable = true;
    bashls.enable = true;
    biome.enable = true;
    clangd.enable = true;
    denols.enable = true;
    eslint.enable = true;

    lua-ls = {
      enable = true;
      settings = {
        diagnostics.globals = [ "vim" ];
        runtime.version = "LuaJIT";
        workspace = {
          checkThirdParty = false;
          library = [ (helpers.mkRaw "vim.env.VIMRUNTIME") ];
        };
      };
    };

    nil-ls = {
      enable = true;

      settings = {
        formatting.command = [ "nixfmt" ];
      };
    };

    nimls.enable = true;
    pyright = {
      enable = true;

      settings = {
        # Use ruff for imports
        pyright = {
          disableOrganizeImports = true;
        };
        python.ignore = [ "*" ];
      };
    };

    ruff-lsp = {
      enable = true;

      # pyright should handle this
      onAttach.function = ''
        client.server_capabilities.hoverProvider = false
      '';
    };

    rust-analyzer = {
      enable = true;

      installCargo = false;
      installRustc = false;

      settings = {
        check.command = "clippy";
      };
    };

    tsserver.enable = true;
    typos-lsp.enable = true;
    typst-lsp.enable = true;
  };
}