From ebfeee20bfaca81ec55563db66bc908ddafda367 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Sat, 18 Nov 2023 18:38:20 -0500 Subject: [PATCH] set checks on individual languages --- modules/common/neovim/config/lsp.nix | 18 ++++++++++++++---- modules/common/neovim/config/syntax.nix | 15 +++++++-------- modules/common/neovim/default.nix | 4 +++- modules/common/programming/c.nix | 1 + 4 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 modules/common/programming/c.nix diff --git a/modules/common/neovim/config/lsp.nix b/modules/common/neovim/config/lsp.nix index 532bd34..52e52eb 100644 --- a/modules/common/neovim/config/lsp.nix +++ b/modules/common/neovim/config/lsp.nix @@ -1,10 +1,11 @@ { pkgs, lib, config, dsl, ... }: { # Terraform optional because non-free - options.terraform = lib.mkEnableOption "Whether to enable Terraform LSP"; options.github = lib.mkEnableOption "Whether to enable GitHub features"; options.kubernetes = lib.mkEnableOption "Whether to enable Kubernetes features"; + options.python = lib.mkEnableOption "Whether to enable Python LSP"; + options.terraform = lib.mkEnableOption "Whether to enable Terraform LSP"; config = @@ -18,6 +19,12 @@ '' else ""; + pythonFormat = if config.python then '' + require("null-ls").builtins.formatting.black.with({ command = "${pkgs.black}/bin/black" }), + require("null-ls").builtins.diagnostics.ruff.with({ command = "${pkgs.ruff}/bin/ruff" }), + '' else + ""; + in { plugins = [ pkgs.vimPlugins.nvim-lspconfig @@ -41,7 +48,11 @@ }; use.lspconfig.pyright.setup = dsl.callWith { - cmd = [ "${pkgs.pyright}/bin/pyright-langserver" "--stdio" ]; + cmd = if config.python then [ + "${pkgs.pyright}/bin/pyright-langserver" + "--stdio" + ] else + [ "echo" ]; }; use.lspconfig.terraformls.setup = dsl.callWith { @@ -70,8 +81,6 @@ require("null-ls").setup({ sources = { require("null-ls").builtins.formatting.stylua.with({ command = "${pkgs.stylua}/bin/stylua" }), - require("null-ls").builtins.formatting.black.with({ command = "${pkgs.black}/bin/black" }), - require("null-ls").builtins.diagnostics.ruff.with({ command = "${pkgs.ruff}/bin/ruff" }), require("null-ls").builtins.formatting.fish_indent.with({ command = "${pkgs.fish}/bin/fish_indent" }), require("null-ls").builtins.formatting.nixfmt.with({ command = "${pkgs.nixfmt}/bin/nixfmt" }), require("null-ls").builtins.formatting.rustfmt.with({ command = "${pkgs.rustfmt}/bin/rustfmt" }), @@ -80,6 +89,7 @@ command = "${pkgs.shfmt}/bin/shfmt", extra_args = { "-i", "4", "-ci" }, }), + ${pythonFormat} ${terraformFormat} }, diff --git a/modules/common/neovim/config/syntax.nix b/modules/common/neovim/config/syntax.nix index 872ad8d..856a023 100644 --- a/modules/common/neovim/config/syntax.nix +++ b/modules/common/neovim/config/syntax.nix @@ -1,12 +1,11 @@ -{ pkgs, lib, ... }: { +{ pkgs, lib, config, ... }: { plugins = [ (pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins: - with pkgs.tree-sitter-grammars; [ + with pkgs.tree-sitter-grammars; + [ tree-sitter-bash - # tree-sitter-c tree-sitter-fish - tree-sitter-hcl tree-sitter-ini tree-sitter-json tree-sitter-lua @@ -14,15 +13,15 @@ tree-sitter-markdown-inline tree-sitter-nix tree-sitter-puppet - tree-sitter-python tree-sitter-rasi tree-sitter-toml tree-sitter-yaml - ])) + ] ++ (if config.c.enable then [ tree-sitter-c ] else [ ]) + ++ (if config.python.enable then [ tree-sitter-python ] else [ ]) + ++ (if config.terraform.enable then [ tree-sitter-hcl ] else [ ]))) pkgs.vimPlugins.vim-matchup # Better % jumping in languages pkgs.vimPlugins.playground # Tree-sitter experimenting pkgs.vimPlugins.nginx-vim - pkgs.vimPlugins.vim-helm pkgs.baleia-nvim # Clean ANSI from kitty scrollback # pkgs.hmts-nvim # Tree-sitter injections for home-manager (pkgs.vimUtils.buildVimPlugin { @@ -30,7 +29,7 @@ version = "0.1"; src = ../plugin; }) - ]; + ] ++ (if config.kubernetes.enable then [ pkgs.vimPlugins.vim-helm ] else [ ]); setup."nvim-treesitter.configs" = { highlight = { enable = true; }; diff --git a/modules/common/neovim/default.nix b/modules/common/neovim/default.nix index d841874..730408e 100644 --- a/modules/common/neovim/default.nix +++ b/modules/common/neovim/default.nix @@ -5,9 +5,11 @@ let neovim = import ./package { inherit pkgs; colors = config.theme.colors; - terraform = config.terraform.enable; + c = config.c.enable; github = true; kubernetes = config.kubernetes.enable; + python = config.python.enable; + terraform = config.terraform.enable; }; in { diff --git a/modules/common/programming/c.nix b/modules/common/programming/c.nix new file mode 100644 index 0000000..2a328cd --- /dev/null +++ b/modules/common/programming/c.nix @@ -0,0 +1 @@ +{ lib, ... }: { options.c.enable = lib.mkEnableOption "C language tools."; }