diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 3a09171b..768f2476 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -143,3 +143,8 @@ [nezia1](https://github.com/nezia1) - Add support for [nixd](https://github.com/nix-community/nixd) language server. + +[iynaix](https://github.com/iynaix) + +- Add lsp options support for [nixd](https://github.com/nix-community/nixd) + language server. diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index d6ca6d32..1ae2693e 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -10,9 +10,9 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.strings) optionalString; - inherit (lib.types) enum either listOf package str; + inherit (lib.types) anything attrsOf enum either listOf nullOr package str; inherit (lib.nvim.types) mkGrammarOption diagnostics; - inherit (lib.nvim.lua) expToLua; + inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.languages) diagnosticsToLua; cfg = config.vim.languages.nix; @@ -87,6 +87,7 @@ command = {"${cfg.format.package}/bin/nixfmt"}, }, ''} + options = ${toLuaObject cfg.lsp.options}, }, }, ''} @@ -173,6 +174,12 @@ in { type = either package (listOf str); default = servers.${cfg.lsp.server}.package; }; + + options = mkOption { + type = nullOr (attrsOf anything); + default = null; + description = "Options to pass to nixd LSP server"; + }; }; format = {