Merge pull request #182 from ksonj/feature-terraform

languages: add terraform language support
This commit is contained in:
raf 2023-11-28 13:31:42 +03:00 committed by GitHub
commit a2efe2cd5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 0 deletions

View file

@ -74,6 +74,7 @@ inputs: let
dart.enable = isMaximal; dart.enable = isMaximal;
elixir.enable = false; elixir.enable = false;
bash.enable = isMaximal; bash.enable = isMaximal;
terraform.enable = isMaximal;
}; };
vim.visuals = { vim.visuals = {

View file

@ -21,6 +21,7 @@ in {
./java.nix ./java.nix
./lua.nix ./lua.nix
./php.nix ./php.nix
./terraform.nix
]; ];
options.vim.languages = { options.vim.languages = {

View file

@ -0,0 +1,46 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) nvim mkEnableOption mkOption types mkIf mkMerge;
cfg = config.vim.languages.terraform;
in {
options.vim.languages.terraform = {
enable = mkEnableOption "Terraform/HCL support";
treesitter = {
enable = mkEnableOption "Terraform treesitter" // {default = config.vim.languages.enableTreesitter;};
package = nvim.types.mkGrammarOption pkgs "terraform";
};
lsp = {
enable = mkEnableOption "Terraform LSP support (terraform-ls)" // {default = config.vim.languages.enableLSP;};
package = mkOption {
description = "terraform-ls package";
type = with types; package;
default = pkgs.terraform-ls;
};
};
};
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.terraform-ls = ''
lspconfig.terraformls.setup {
capabilities = capabilities,
on_attach=default_on_attach,
cmd = {"${cfg.lsp.package}/bin/terraform-ls", "serve"},
}
'';
})
]);
}