Merge branch 'NotAShelf:main' into improve-terraformls

This commit is contained in:
ppenguin 2026-01-16 14:14:09 +01:00 committed by GitHub
commit 10fd334227
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 673 additions and 366 deletions

View file

@ -38,6 +38,7 @@ in {
./svelte.nix
./tailwind.nix
./terraform.nix
./toml.nix
./ts.nix
./typst.nix
./zig.nix

View file

@ -31,6 +31,13 @@
filetypes = ["markdown"];
root_markers = [".git" ".obsidian" ".moxide.toml"];
};
rumdl = {
enable = true;
cmd = [(getExe pkgs.rumdl) "server"];
filetypes = ["markdown"];
root_markers = [".git" ".rumdl.toml" "rumdl.toml" ".config/rumdl.toml" "pyproject.toml"];
};
};
defaultFormat = ["deno_fmt"];
@ -42,6 +49,9 @@
deno_fmt = {
command = getExe pkgs.deno;
};
rumdl = {
command = getExe pkgs.rumdl;
};
prettierd = {
command = getExe pkgs.prettierd;
};
@ -51,6 +61,9 @@
markdownlint-cli2 = {
package = pkgs.markdownlint-cli2;
};
rumdl = {
package = pkgs.rumdl;
};
};
in {
options.vim.languages.markdown = {

View file

@ -20,6 +20,21 @@
defaultServers = ["basedpyright"];
servers = {
pyrefly = {
enable = true;
cmd = [(getExe pkgs.pyrefly) "server"];
filetypes = ["python"];
root_markers = [
"pyproject.toml"
"pyrefly.toml"
"setup.py"
"setup.cfg"
"requirements.txt"
"Pipfile"
".git"
];
};
pyright = {
enable = true;
cmd = [(getExe' pkgs.pyright "pyright-langserver") "--stdio"];
@ -126,6 +141,34 @@
".git"
];
};
ruff = {
enable = true;
cmd = [(getExe pkgs.ruff) "server"];
filetypes = ["python"];
root_markers = [
"pyproject.toml"
"setup.py"
"setup.cfg"
"requirements.txt"
"Pipfile"
".git"
];
};
ty = {
enable = true;
cmd = [(getExe pkgs.ty) "server"];
filetypes = ["python"];
root_markers = [
"pyproject.toml"
"setup.py"
"setup.cfg"
"requirements.txt"
"Pipfile"
".git"
];
};
};
defaultFormat = ["black"];

View file

@ -15,6 +15,7 @@
cfg = config.vim.languages.sql;
sqlfluffDefault = pkgs.sqlfluff;
sqruffDefault = pkgs.sqruff;
defaultServers = ["sqls"];
servers = {
@ -39,6 +40,10 @@
command = getExe sqlfluffDefault;
append_args = ["--dialect=${cfg.dialect}"];
};
sqruff = {
command = getExe sqruffDefault;
append_args = ["--dialect=${cfg.dialect}"];
};
};
defaultDiagnosticsProvider = ["sqlfluff"];
@ -50,6 +55,13 @@
args = ["lint" "--format=json" "--dialect=${cfg.dialect}"];
};
};
sqruff = {
package = sqruffDefault;
config = {
cmd = getExe sqruffDefault;
args = ["lint" "--format=json" "--dialect=${cfg.dialect}" "-"];
};
};
};
in {
options.vim.languages.sql = {
@ -58,7 +70,7 @@ in {
dialect = mkOption {
type = str;
default = "ansi";
description = "SQL dialect for sqlfluff (if used)";
description = "SQL dialect for formatters and diagnostics (if used)";
};
treesitter = {

View file

@ -0,0 +1,151 @@
{
config,
pkgs,
lib,
...
}: let
inherit (builtins) attrNames;
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) bool enum;
inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.toml;
defaultServers = ["tombi"];
servers = {
tombi = {
enable = true;
cmd = [
(getExe pkgs.tombi)
"lsp"
];
filetypes = ["toml"];
root_markers = [
"tombi.toml"
".git"
];
};
};
defaultFormat = ["tombi"];
formats = {
tombi = {
command = getExe pkgs.tombi;
args = [
"format"
"--stdin-filepath"
"$FILENAME"
"-"
];
};
};
defaultDiagnosticsProvider = ["tombi"];
diagnosticsProviders = {
tombi = {
package = pkgs.tombi;
args = ["lint"];
};
};
in {
options.vim.languages.toml = {
enable = mkEnableOption "TOML configuration language support";
treesitter = {
enable =
mkEnableOption "TOML treesitter"
// {
default = config.vim.languages.enableTreesitter;
};
package = mkGrammarOption pkgs "toml";
};
lsp = {
enable =
mkEnableOption "TOML LSP support"
// {
default = config.vim.lsp.enable;
};
servers = mkOption {
description = "TOML LSP server to use";
type = deprecatedSingleOrListOf "vim.language.toml.lsp.servers" (enum (attrNames servers));
default = defaultServers;
};
};
format = {
enable =
mkEnableOption "TOML formatting"
// {
default = config.vim.languages.enableFormat;
};
type = mkOption {
type = deprecatedSingleOrListOf "vim.language.toml.format.type" (enum (attrNames formats));
default = defaultFormat;
description = "TOML formatter to use.";
};
};
extraDiagnostics = {
enable =
mkEnableOption "extra TOML diagnostics"
// {
default = config.vim.languages.enableExtraDiagnostics;
};
types = diagnostics {
langDesc = "TOML";
inherit diagnosticsProviders;
inherit defaultDiagnosticsProvider;
};
};
};
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.treesitter.enable {
vim.treesitter.enable = true;
vim.treesitter.grammars = [
cfg.treesitter.package
];
})
(mkIf cfg.lsp.enable {
vim.lsp.servers =
mapListToAttrs (n: {
name = n;
value = servers.${n};
})
cfg.lsp.servers;
})
(mkIf cfg.format.enable {
vim.formatter.conform-nvim = {
enable = true;
setupOpts = {
formatters_by_ft.toml = cfg.format.type;
formatters =
mapListToAttrs (name: {
inherit name;
value = formats.${name};
})
cfg.format.type;
};
};
})
(mkIf cfg.extraDiagnostics.enable {
vim.diagnostics.nvim-lint = {
enable = true;
linters_by_ft.toml = cfg.extraDiagnostics.types;
linters = mkMerge (
map (name: {
${name}.cmd = getExe diagnosticsProviders.${name}.package;
})
cfg.extraDiagnostics.types
);
};
})
]);
}