languages: add terraform language support

This commit is contained in:
Kalle Jepsen 2023-11-28 11:12:34 +01:00
parent 6fbcb59edf
commit f1406a30bb
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"},
}
'';
})
]);
}