From 567de2c259f06f49d8e4229e8ed774c6f28ad5d9 Mon Sep 17 00:00:00 2001 From: AleksandarZhekovski Date: Sat, 4 Oct 2025 00:25:35 +0300 Subject: [PATCH] languages/verilog: init module --- configuration.nix | 1 + docs/release-notes/rl-0.8.md | 8 ++++ modules/plugins/languages/default.nix | 1 + modules/plugins/languages/verilog.nix | 57 +++++++++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 modules/plugins/languages/verilog.nix diff --git a/configuration.nix b/configuration.nix index 68776638..0aaa1419 100644 --- a/configuration.nix +++ b/configuration.nix @@ -86,6 +86,7 @@ isMaximal: { haskell.enable = false; ruby.enable = false; fsharp.enable = false; + verilog.enable = false; tailwind.enable = false; svelte.enable = false; diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 82b3c77e..a8b61623 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -506,3 +506,11 @@ - Add inline typst concealing support under `vim.languages.typst` using [typst-concealer]. + +[AleksandarZhekovski](https://github.com/AleksandarZhekovski): + +[tree-sitter-systemverilog]: https://github.com/gmlarumbe/tree-sitter-systemverilog +[verible]: https://github.com/chipsalliance/verible + +- Add Verilog support under 'vim.languages.verilog' using [verible-verilog-ls] + and [tree-sitter-systemverilog]. diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 961d7cc5..49a21bec 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -46,6 +46,7 @@ in { ./wgsl.nix ./yaml.nix ./ruby.nix + ./verilog.nix # This is now a hard deprecation. (mkRenamedOptionModule ["vim" "languages" "enableLSP"] ["vim" "lsp" "enable"]) diff --git a/modules/plugins/languages/verilog.nix b/modules/plugins/languages/verilog.nix new file mode 100644 index 00000000..c9280ed9 --- /dev/null +++ b/modules/plugins/languages/verilog.nix @@ -0,0 +1,57 @@ +{ + config, + pkgs, + lib, + ... +}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.types) package; + inherit (lib.nvim.types) mkGrammarOption; + + cfg = config.vim.languages.verilog; +in { + options.vim.languages.verilog = { + enable = mkEnableOption "Verilog support"; + + treesitter = { + enable = + mkEnableOption "Verilog treesitter" + // { + default = config.vim.languages.enableTreesitter; + }; + package = mkGrammarOption pkgs "systemverilog"; + }; + + lsp = { + enable = + mkEnableOption "Verilog LSP support (verible)" + // { + default = config.vim.lsp.enable; + }; + + package = mkOption { + type = package; + default = pkgs.verible; + description = "verible package"; + }; + }; + }; + 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.lspconfig.enable = true; + vim.lsp.lspconfig.sources.verible = '' + lspconfig.verible.setup { + capabilities = capabilities, + on_attach = default_on_attach, + cmd = {"${cfg.lsp.package}/bin/verible-verilog-ls", "-sv", "-Wall"}, + } + ''; + }) + ]); +}