Skip to content

Commit ee71a01

Browse files
committed
bump lsp syntax to pure nix
1 parent 07eec4c commit ee71a01

1 file changed

Lines changed: 107 additions & 92 deletions

File tree

config/lsp.nix

Lines changed: 107 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,111 @@
11
{ pkgs, ... }:
22

33
{
4-
# Configure lsps
5-
extraConfigLua = ''
6-
local lspconfig = require("lspconfig")
7-
8-
local function setup_if_available(server_name, config)
9-
if vim.fn.executable(server_name) == 1
10-
then lspconfig[server_name].setup(config or {})
11-
end
12-
end
13-
14-
setup_if_available("clangd")
15-
setup_if_available("basedpyright")
16-
setup_if_available("ts_ls")
17-
setup_if_available("tinymist")
18-
setup_if_available("gopls")
19-
setup_if_available("jdtls")
20-
setup_if_available("texlab")
21-
setup_if_available("terraform-ls")
22-
23-
-- Setup gdscript to connect to the Godot editor
24-
require("lspconfig").gdscript.setup({})
25-
'';
26-
27-
plugins.lsp = {
28-
enable = true;
29-
30-
servers = {
31-
nixd.enable = true;
32-
};
33-
34-
keymaps.lspBuf = {
35-
"gd" = "definition";
36-
"gD" = "references";
37-
"gt" = "type_definition";
38-
"gi" = "implementation";
39-
"K" = "hover";
40-
"<space>rn" = "rename";
41-
};
42-
};
43-
44-
plugins.cmp = {
45-
enable = true;
46-
autoEnableSources = true;
47-
settings = {
48-
mapping = {
49-
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
50-
"<C-f>" = "cmp.mapping.scroll_docs(4)";
51-
"<C-Space>" = "cmp.mapping.complete()";
52-
"<C-e>" = "cmp.mapping.abort()";
53-
"<C-n>" = "cmp.mapping.select_next_item({ modes = {'i', 's'} })";
54-
"<C-p>" = "cmp.mapping.select_prev_item({ modes = {'i', 's'} })";
55-
"<Tab>" = "cmp.mapping.select_next_item({ modes = {'i', 's'} })";
56-
"<S-Tab>" = "cmp.mapping.select_prev_item({ modes = {'i', 's'} })";
57-
"<CR>" = "cmp.mapping.confirm({ select = true})";
58-
};
59-
60-
sources = [
61-
{ name = "nvim_lsp"; }
62-
{ name = "path"; }
63-
{ name = "buffer"; }
64-
{ name = "cmdline"; }
65-
{ name = "copilot"; }
66-
];
67-
68-
window.completion.border = [
69-
"╭"
70-
"─"
71-
"╮"
72-
"│"
73-
"╯"
74-
"─"
75-
"╰"
76-
"│"
77-
];
78-
};
79-
};
80-
81-
# copilot
82-
plugins.copilot-lua.enable = true;
83-
plugins.copilot-chat.enable = true;
84-
85-
plugins.trouble.enable = true;
86-
87-
# Latex
88-
plugins.vimtex = {
89-
enable = true;
90-
texlivePackage = pkgs.tectonic;
91-
settings = {
92-
compiler_method = "tectonic";
93-
view_method = "zathura";
94-
};
95-
};
4+
plugins.lsp = {
5+
enable = true;
6+
7+
servers = {
8+
# Nix language server (managed by nixvim)
9+
nixd.enable = true;
10+
11+
# External LSP servers (managed via devenv)
12+
clangd = {
13+
enable = true;
14+
package = null; # Expects clangd on $PATH from devenv
15+
};
16+
17+
basedpyright = {
18+
enable = true;
19+
package = null; # Expects basedpyright on $PATH from devenv
20+
};
21+
22+
ts_ls = {
23+
enable = true;
24+
package = null; # Expects typescript-language-server on $PATH from devenv
25+
};
26+
27+
tinymist = {
28+
enable = true;
29+
package = null; # Expects tinymist on $PATH from devenv
30+
};
31+
32+
gopls = {
33+
enable = true;
34+
package = null; # Expects gopls on $PATH from devenv
35+
};
36+
37+
jdtls = {
38+
enable = true;
39+
package = null; # Expects jdtls on $PATH from devenv
40+
};
41+
42+
texlab = {
43+
enable = true;
44+
package = null; # Expects texlab on $PATH from devenv
45+
};
46+
47+
terraformls = {
48+
enable = true;
49+
package = null; # Expects terraform-ls on $PATH from devenv
50+
};
51+
52+
gdscript = {
53+
enable = true;
54+
package = null; # Expects gdscript server from Godot editor
55+
};
56+
};
57+
58+
keymaps.lspBuf = {
59+
"gd" = "definition";
60+
"gD" = "references";
61+
"gt" = "type_definition";
62+
"gi" = "implementation";
63+
"K" = "hover";
64+
"<space>rn" = "rename";
65+
};
66+
};
67+
68+
plugins.cmp = {
69+
enable = true;
70+
autoEnableSources = true;
71+
settings = {
72+
mapping = {
73+
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
74+
"<C-f>" = "cmp.mapping.scroll_docs(4)";
75+
"<C-Space>" = "cmp.mapping.complete()";
76+
"<C-e>" = "cmp.mapping.abort()";
77+
"<C-n>" = "cmp.mapping.select_next_item({ modes = {'i', 's'} })";
78+
"<C-p>" = "cmp.mapping.select_prev_item({ modes = {'i', 's'} })";
79+
"<Tab>" = "cmp.mapping.select_next_item({ modes = {'i', 's'} })";
80+
"<S-Tab>" = "cmp.mapping.select_prev_item({ modes = {'i', 's'} })";
81+
"<C-CR>" = "cmp.mapping.confirm({ select = true})";
82+
};
83+
84+
sources = [
85+
{ name = "nvim_lsp"; }
86+
{ name = "path"; }
87+
{ name = "buffer"; }
88+
{ name = "cmdline"; }
89+
{ name = "copilot"; }
90+
];
91+
92+
window.completion.border = [
93+
"╭"
94+
"─"
95+
"╮"
96+
"│"
97+
"╯"
98+
"─"
99+
"╰"
100+
"│"
101+
];
102+
};
103+
};
104+
105+
# copilot
106+
plugins.copilot-lua.enable = true;
107+
plugins.copilot-chat.enable = true;
108+
109+
plugins.trouble.enable = true;
96110
}
111+

0 commit comments

Comments
 (0)