From 95f2637d1cbd757a97cd711b0bab5030e9d0db49 Mon Sep 17 00:00:00 2001 From: dish Date: Thu, 29 Jan 2026 12:56:43 -0500 Subject: [PATCH 1/2] languages/rust: lazy-load crates.nvim plugin --- docs/manual/release-notes/rl-0.9.md | 3 +++ modules/plugins/languages/rust.nix | 15 +++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 3df92a8f..61128366 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -132,6 +132,9 @@ - Added [sqruff](https://github.com/quarylabs/sqruff) support to `languages.sql` +- Lazy-load `crates.nvim` plugin when using + `vim.languages.rust.extensions.crates-nvim.enable` + - Added [Pyrefly](https://pyrefly.org/) and [zuban](https://zubanls.com/) support to `languages.python` diff --git a/modules/plugins/languages/rust.nix b/modules/plugins/languages/rust.nix index 015b2956..ec5a3d81 100644 --- a/modules/plugins/languages/rust.nix +++ b/modules/plugins/languages/rust.nix @@ -228,10 +228,17 @@ in { (mkIf cfg.extensions.crates-nvim.enable { vim = mkMerge [ { - startPlugins = ["crates-nvim"]; - pluginRC.rust-crates = entryAnywhere '' - require("crates").setup(${toLuaObject cfg.extensions.crates-nvim.setupOpts}) - ''; + lazy.plugins.crates-nvim = { + package = "crates-nvim"; + setupModule = "crates"; + setupOpts = cfg.extensions.crates-nvim.setupOpts; + event = [ + { + event = "BufRead"; + pattern = "Cargo.toml"; + } + ]; + }; } ]; }) From 2b7dd7ecb1a2c99e82bd82933c18be86206bd53e Mon Sep 17 00:00:00 2001 From: dish Date: Thu, 29 Jan 2026 13:36:08 -0500 Subject: [PATCH 2/2] languages/jinja: init (#1359) --- configuration.nix | 2 +- docs/manual/release-notes/rl-0.9.md | 2 + modules/plugins/languages/default.nix | 1 + modules/plugins/languages/jinja.nix | 65 +++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 modules/plugins/languages/jinja.nix diff --git a/configuration.nix b/configuration.nix index 040a076e..7be2e5cb 100644 --- a/configuration.nix +++ b/configuration.nix @@ -93,7 +93,7 @@ isMaximal: { fsharp.enable = false; just.enable = false; qml.enable = false; - + jinja.enable = false; tailwind.enable = false; svelte.enable = false; diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 61128366..476fce1b 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -142,6 +142,8 @@ [Tombi](https://tombi-toml.github.io/tombi/) language server, linter, and formatter. +- Added Jinja support via `languages.jinja` + - Added [hlargs.nvim](https://github.com/m-demare/hlargs.nvim) support as `visuals.hlargs-nvim`. diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 8b550c39..1dad1434 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -21,6 +21,7 @@ in { ./html.nix ./haskell.nix ./java.nix + ./jinja.nix ./json.nix ./lua.nix ./markdown.nix diff --git a/modules/plugins/languages/jinja.nix b/modules/plugins/languages/jinja.nix new file mode 100644 index 00000000..a4635f58 --- /dev/null +++ b/modules/plugins/languages/jinja.nix @@ -0,0 +1,65 @@ +{ + config, + pkgs, + lib, + ... +}: let + inherit (builtins) attrNames; + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) enum listOf; + inherit (lib.nvim.types) mkGrammarOption; + inherit (lib.nvim.attrsets) mapListToAttrs; + + cfg = config.vim.languages.jinja; + defaultServers = ["jinja-lsp"]; + servers = { + jinja-lsp = { + enable = true; + cmd = [(getExe pkgs.jinja-lsp)]; + filetypes = ["jinja"]; + root_markers = [ + ".git" + ]; + }; + }; +in { + options.vim.languages.jinja = { + enable = mkEnableOption "Jinja template language support"; + + treesitter = { + enable = mkEnableOption "Jinja treesitter" // {default = config.vim.languages.enableTreesitter;}; + package = mkGrammarOption pkgs "jinja"; + inlinePackage = mkGrammarOption pkgs "jinja_inline"; + }; + + lsp = { + enable = mkEnableOption "Jinja LSP support" // {default = config.vim.lsp.enable;}; + servers = mkOption { + description = "Jinja LSP server to use"; + type = listOf (enum (attrNames servers)); + default = defaultServers; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf cfg.treesitter.enable { + vim.treesitter.enable = true; + vim.treesitter.grammars = [ + cfg.treesitter.package + cfg.treesitter.inlinePackage + ]; + }) + + (mkIf cfg.lsp.enable { + vim.lsp.servers = + mapListToAttrs (n: { + name = n; + value = servers.${n}; + }) + cfg.lsp.servers; + }) + ]); +}