This commit is contained in:
Valyn Tyler 2025-11-20 14:32:16 +01:00
commit 6f458a4aea

View file

@ -18,7 +18,7 @@
formattingCmd = mkIf (cfg.format.enable && cfg.lsp.enable) { formattingCmd = mkIf (cfg.format.enable && cfg.lsp.enable) {
formatting = mkMerge [ formatting = mkMerge [
(mkIf (cfg.format.type == "alejandra") { (mkIf (cfg.format.type == "alejandra") {
command = [(getExe pkgs.alejandra) "--quiet"]; command = [(getExe pkgs.alejandra)];
}) })
(mkIf (cfg.format.type == "nixfmt") { (mkIf (cfg.format.type == "nixfmt") {
command = [(getExe pkgs.nixfmt-rfc-style)]; command = [(getExe pkgs.nixfmt-rfc-style)];
@ -32,10 +32,13 @@
enable = true; enable = true;
cmd = [(getExe pkgs.nil)]; cmd = [(getExe pkgs.nil)];
settings = { settings = {
nil = formattingCmd; nil.formatting.command = [(getExe pkgs.alejandra)];
}; };
filetypes = ["nix"]; filetypes = ["nix"];
root_markers = [".git" "flake.nix"]; root_markers = [
".git"
"flake.nix"
];
}; };
nixd = { nixd = {
@ -45,7 +48,10 @@
nixd = formattingCmd; nixd = formattingCmd;
}; };
filetypes = ["nix"]; filetypes = ["nix"];
root_markers = [".git" "flake.nix"]; root_markers = [
".git"
"flake.nix"
];
}; };
}; };
@ -60,7 +66,10 @@
}; };
}; };
defaultDiagnosticsProvider = ["statix" "deadnix"]; defaultDiagnosticsProvider = [
"statix"
"deadnix"
];
diagnosticsProviders = { diagnosticsProviders = {
statix = { statix = {
package = pkgs.statix; package = pkgs.statix;
@ -91,12 +100,20 @@ in {
enable = mkEnableOption "Nix language support"; enable = mkEnableOption "Nix language support";
treesitter = { treesitter = {
enable = mkEnableOption "Nix treesitter" // {default = config.vim.languages.enableTreesitter;}; enable =
mkEnableOption "Nix treesitter"
// {
default = config.vim.languages.enableTreesitter;
};
package = mkGrammarOption pkgs "nix"; package = mkGrammarOption pkgs "nix";
}; };
lsp = { lsp = {
enable = mkEnableOption "Nix LSP support" // {default = config.vim.lsp.enable;}; enable =
mkEnableOption "Nix LSP support"
// {
default = config.vim.lsp.enable;
};
servers = mkOption { servers = mkOption {
type = deprecatedSingleOrListOf "vim.language.nix.lsp.servers" (enum (attrNames servers)); type = deprecatedSingleOrListOf "vim.language.nix.lsp.servers" (enum (attrNames servers));
default = defaultServers; default = defaultServers;
@ -105,7 +122,11 @@ in {
}; };
format = { format = {
enable = mkEnableOption "Nix formatting" // {default = config.vim.languages.enableFormat;}; enable =
mkEnableOption "Nix formatting"
// {
default = config.vim.languages.enableFormat;
};
type = mkOption { type = mkOption {
description = "Nix formatter to use"; description = "Nix formatter to use";
@ -115,7 +136,11 @@ in {
}; };
extraDiagnostics = { extraDiagnostics = {
enable = mkEnableOption "extra Nix diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; enable =
mkEnableOption "extra Nix diagnostics"
// {
default = config.vim.languages.enableExtraDiagnostics;
};
types = diagnostics { types = diagnostics {
langDesc = "Nix"; langDesc = "Nix";
@ -171,10 +196,12 @@ in {
vim.diagnostics.nvim-lint = { vim.diagnostics.nvim-lint = {
enable = true; enable = true;
linters_by_ft.nix = cfg.extraDiagnostics.types; linters_by_ft.nix = cfg.extraDiagnostics.types;
linters = mkMerge (map (name: { linters = mkMerge (
map (name: {
${name}.cmd = getExe diagnosticsProviders.${name}.package; ${name}.cmd = getExe diagnosticsProviders.${name}.package;
}) })
cfg.extraDiagnostics.types); cfg.extraDiagnostics.types
);
}; };
}) })
]); ]);