diff --git a/plugins/by-name/rzls/default.nix b/plugins/by-name/rzls/default.nix new file mode 100644 index 00000000..e1d94043 --- /dev/null +++ b/plugins/by-name/rzls/default.nix @@ -0,0 +1,40 @@ +{ config, lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "rzls"; + package = "rzls-nvim"; + + maintainers = [ lib.maintainers.khaneliman ]; + + dependencies = [ + "rzls" + ]; + + extraOptions = { + enableRazorFiletypeAssociation = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Sets up the filetype association of `.cshtml` and `razor` files to trigger treesitter + and lsp support for razor functionality. + ''; + }; + }; + + extraConfig = cfg: { + assertions = lib.nixvim.mkAssertions "plugins.rzls" { + assertion = config.plugins.roslyn.enable; + message = '' + You must enable `plugins.roslyn` for general functionality in `rzls.nvim`. + ''; + }; + + filetype = lib.mkIf cfg.enableRazorFiletypeAssociation { + extension = { + razor = "razor"; + cshtml = "razor"; + }; + }; + + plugins.rzls.settings.path = lib.mkOptionDefault (lib.getExe config.dependencies.rzls.package); + }; +} diff --git a/tests/test-sources/plugins/by-name/rzls/default.nix b/tests/test-sources/plugins/by-name/rzls/default.nix new file mode 100644 index 00000000..2a93b747 --- /dev/null +++ b/tests/test-sources/plugins/by-name/rzls/default.nix @@ -0,0 +1,29 @@ +{ + empty = { + # TODO: 2025-10-03 + # Transient dependency `vmr` has a build failure + # https://github.com/NixOS/nixpkgs/issues/431811 + dependencies.roslyn_ls.enable = false; + plugins.roslyn.enable = true; + plugins.rzls.enable = true; + }; + + defaults = { + # TODO: 2025-10-03 + # Transient dependency `vmr` has a build failure + # https://github.com/NixOS/nixpkgs/issues/431811 + dependencies.roslyn_ls.enable = false; + plugins.roslyn.enable = true; + plugins.rzls = { + enable = true; + settings = { + on_attach.__raw = '' + function() + return nil + end + ''; + capabilities.__raw = ''vim.lsp.protocol.make_client_capabilities()''; + }; + }; + }; +}