1
0
Fork 0
forked from foxora/nix

added toml formatter, split each language into lsp and format

This commit is contained in:
foxora 2026-03-05 05:50:50 +00:00
parent 56d2fe2922
commit 67c8d10658
4 changed files with 184 additions and 125 deletions

View file

@ -1,6 +1,7 @@
local servers = {} local servers = {}
servers.lua_ls = { if nixCats("lang.lua.lsp") then
servers.lua_ls = {
settings = { settings = {
Lua = { Lua = {
formatters = { formatters = {
@ -19,14 +20,18 @@ servers.lua_ls = {
}, },
telemetry = { enabled = false }, telemetry = { enabled = false },
}, },
} }
end
servers.nil_ls = { if nixCats("lang.nix.lsp") then
servers.nil_ls = {
settings = {}, settings = {},
} }
end
local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") if nixCats("lang.rust.lsp") then
servers.rust_analyzer = { local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD")
servers.rust_analyzer = {
cmd = { rust_analyzer_cmd }, cmd = { rust_analyzer_cmd },
settings = { settings = {
server = { server = {
@ -43,28 +48,38 @@ servers.rust_analyzer = {
enable = true, enable = true,
}, },
}, },
} }
end
servers.zls = { if nixCats("lang.zig.lsp") then
servers.zls = {
settings = {}, settings = {},
} }
end
local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD") if nixCats("lang.elixir.lsp") then
servers.elixirls = { local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD")
servers.elixirls = {
cmd = { elixir_ls_cmd }, cmd = { elixir_ls_cmd },
settings = {}, settings = {},
} }
end
servers.gleam = { if nixCats("lang.gleam.lsp") then
servers.gleam = {
settings = {}, settings = {},
} }
end
servers.hls = { if nixCats("lang.haskell.lsp") then
servers.hls = {
settings = {}, settings = {},
} }
end
local java_home = os.getenv("JAVA_HOME") if nixCats("lang.java.lsp") then
servers.jdtls = { local java_home = os.getenv("JAVA_HOME")
servers.jdtls = {
settings = { settings = {
java = { java = {
contentProvider = { preferred = "fernflower" }, contentProvider = { preferred = "fernflower" },
@ -82,11 +97,14 @@ servers.jdtls = {
}, },
}, },
}, },
} }
end
servers.protols = { if nixCats("lang.protobuf.lsp") then
servers.protols = {
settings = {}, settings = {},
} }
end
-- Taken from nixCats example: -- Taken from nixCats example:
-- If you were to comment out this autocommand -- If you were to comment out this autocommand

View file

@ -56,11 +56,12 @@ return {
conform.setup({ conform.setup({
formatters_by_ft = { formatters_by_ft = {
lua = nixCats("lang.lua") and { "stylua" } or nil, lua = nixCats("lang.lua.format") and { "stylua" } or nil,
nix = nixCats("lang.nix") and { "alejandra" } or nil, nix = nixCats("lang.nix.format") and { "alejandra" } or nil,
rust = nixCats("lang.rust") and { "rustfmt", lsp_format = "fallback" } or nil, rust = nixCats("lang.rust.format") and { "rustfmt", lsp_format = "fallback" } or nil,
haskell = nixCats("lang.haskell") and { "ormolu" } or nil, haskell = nixCats("lang.haskell.format") and { "ormolu" } or nil,
proto = nixCats("lang.protobuf") and { "buf" } or nil, proto = nixCats("lang.protobuf.format") and { "buf" } or nil,
toml = nixCats("lang.toml.format") and { "taplo" } or nil,
}, },
format_on_save = { format_on_save = {
timeout_ms = 500, timeout_ms = 500,

View file

@ -1,12 +1,12 @@
return { return {
{ {
"vim-fugitive", "vim-fugitive",
for_cat = "git", enabled = nixCats("git") or false,
cmd = { "Git", "Gvdiffsplit" }, cmd = { "Git", "Gvdiffsplit" },
}, },
{ {
"resolve-nvim", "resolve-nvim",
for_cat = "git", enabled = nixCats("git") or false,
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
after = function(plugin) after = function(plugin)
require("resolve").setup({ require("resolve").setup({

View file

@ -55,43 +55,51 @@ in {
tree-sitter tree-sitter
]; ];
lang = { lang = {
lua = [ lua = {
lua-language-server lsp = [lua-language-server];
stylua format = [stylua];
]; };
nix = [ nix = {
nil lsp = [nil];
nix-doc # TODO: i forgot what this is for format = [alejandra];
alejandra docs = [nix-doc]; # TODO: i forgot how to integrate this into neovim
]; };
rust = [ rust = {
cargo lsp = [cargo mpkgs.rust-analyzer];
mpkgs.rust-analyzer
# nightly rustfmt has nicer features :3 # nightly rustfmt has nicer features :3
inputs.fenix.packages.${system}.complete.rustfmt format = [inputs.fenix.packages.${system}.complete.rustfmt];
]; };
zig = [ zig = {
zls lsp = [zls];
]; # TODO: needs formatter field
elixir = [ };
elixir-ls elixir = {
]; lsp = [elixir-ls];
gleam = [ # TODO: needs formatter field
gleam };
]; gleam = {
haskell = [ lsp = [gleam];
haskell-language-server # TODO: needs formatter field
ormolu };
]; haskell = {
java = [ lsp = [haskell-language-server];
format = [ormolu];
};
java = {
lsp = [
jdt-language-server jdt-language-server
javaPackages.compiler.openjdk17 javaPackages.compiler.openjdk17
javaPackages.compiler.openjdk21 javaPackages.compiler.openjdk21
]; ];
protobuf = [ # TODO: needs formatter field
protols };
buf protobuf = {
]; lsp = [protols];
format = [buf];
};
toml = {
format = [taplo];
};
}; };
}; };
@ -239,15 +247,47 @@ in {
git = false; # not really setup yet git = false; # not really setup yet
lang = { lang = {
lua = true; lua = {
nix = true; lsp = true;
rust = true; format = true;
zig = true; };
elixir = true; nix = {
gleam = true; lsp = true;
haskell = true; format = true;
java = true; docs = true;
protobuf = true; };
rust = {
lsp = true;
format = true;
};
zig = {
lsp = true;
format = true;
};
elixir = {
lsp = true;
format = true;
};
gleam = {
lsp = true;
format = true;
};
haskell = {
lsp = true;
format = true;
};
java = {
lsp = true;
format = true;
};
protobuf = {
lsp = true;
format = true;
};
toml = {
lsp = true;
format = true;
};
}; };
}; };
}; };