diff --git a/plugins/nvim-lsp/basic-servers.nix b/plugins/nvim-lsp/basic-servers.nix new file mode 100644 index 00000000..6fa1c861 --- /dev/null +++ b/plugins/nvim-lsp/basic-servers.nix @@ -0,0 +1,66 @@ +{ pkgs, config, lib, ... }@args: +let + helpers = import ./helpers.nix args; + servers = [ + { + name = "clangd"; + description = "Enable clangd LSP, for C/C++."; + packages = [ pkgs.clang-tools ]; + } + { + name = "cssls"; + description = "Enable cssls, for CSS"; + packages = [ pkgs.nodePackages.vscode-langservers-extracted ]; + } + { + name = "eslint"; + description = "Enable eslint"; + packages = [ pkgs.nodePackages.vscode-langservers-extracted ]; + } + { + name = "gdscript"; + description = "Enable gdscript, for Godot"; + packages = []; + } + { + name = "gopls"; + description = "Enable gopls, for Go."; + } + { + name = "html"; + description = "Enable html, for HTML"; + packages = [ pkgs.nodePackages.vscode-langservers-extracted ]; + } + { + name = "jsonls"; + description = "Enable jsonls, for JSON"; + packages = [ pkgs.nodePackages.vscode-langservers-extracted ]; + } + { + name = "pyright"; + description = "Enable pyright, for Python."; + } + { + name = "rnix-lsp"; + description = "Enable rnix LSP, for Nix"; + serverName = "rnix"; + } + { + name = "rust-analyzer"; + description = "Enable rust-analyzer, for Rust."; + serverName = "rust_analyzer"; + } + { + name = "vuels"; + description = "Enable vuels, for Vue"; + packages = [ pkgs.nodePackages.vue-language-server ]; + } + { + name = "zls"; + description = "Enable zls, for Zig."; + } + ]; +in +{ + imports = lib.lists.map (helpers.mkLsp) servers; +} diff --git a/plugins/nvim-lsp/clangd.nix b/plugins/nvim-lsp/clangd.nix deleted file mode 100644 index f363e416..00000000 --- a/plugins/nvim-lsp/clangd.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, config, lib, ... }: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.clangd; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.clangd = { - enable = mkEnableOption "Enable clangd LSP, for C/C++."; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.clang-tools ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "clangd" ]; - }; -} diff --git a/plugins/nvim-lsp/default.nix b/plugins/nvim-lsp/default.nix index 3a01d278..6aa67f61 100644 --- a/plugins/nvim-lsp/default.nix +++ b/plugins/nvim-lsp/default.nix @@ -6,12 +6,7 @@ let in { imports = [ - ./clangd.nix - ./rust-analyzer.nix - ./rnix-lsp.nix - ./pyright.nix - ./zls.nix - ./gopls.nix + ./basic-servers.nix ]; options = { diff --git a/plugins/nvim-lsp/gopls.nix b/plugins/nvim-lsp/gopls.nix deleted file mode 100644 index 94da9ffb..00000000 --- a/plugins/nvim-lsp/gopls.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, lib, ...}: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.gopls; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.gopls = { - enable = mkEnableOption "Enable gopls, for Go."; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.gopls ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "gopls" ]; - }; -} diff --git a/plugins/nvim-lsp/helpers.nix b/plugins/nvim-lsp/helpers.nix new file mode 100644 index 00000000..b6282441 --- /dev/null +++ b/plugins/nvim-lsp/helpers.nix @@ -0,0 +1,29 @@ +{ pkgs, config, lib, ... }: + +{ + mkLsp = { + name, + description ? "Enable ${name}.", + serverName ? name, + packages ? [ pkgs.${name} ], + ... }: + # returns a module + { pkgs, config, lib, ... }: + with lib; + let + cfg = config.programs.nixvim.plugins.lsp.servers.${name}; + in + { + options = { + programs.nixvim.plugins.lsp.servers.${name} = { + enable = mkEnableOption description; + }; + }; + + config = mkIf cfg.enable { + programs.nixvim.extraPackages = packages; + + programs.nixvim.plugins.lsp.enabledServers = [ serverName ]; + }; + }; +} diff --git a/plugins/nvim-lsp/pyright.nix b/plugins/nvim-lsp/pyright.nix deleted file mode 100644 index e8b5b5d6..00000000 --- a/plugins/nvim-lsp/pyright.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, lib, ...}: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.pyright; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.pyright = { - enable = mkEnableOption "Enable pyright, for Python."; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.pyright ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "pyright"]; - }; -} diff --git a/plugins/nvim-lsp/rnix-lsp.nix b/plugins/nvim-lsp/rnix-lsp.nix deleted file mode 100644 index 639cab4c..00000000 --- a/plugins/nvim-lsp/rnix-lsp.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, config, lib, ... }: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.rnix-lsp; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.rnix-lsp = { - enable = mkEnableOption "Enable rnix LSP, for Nix"; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.rnix-lsp ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "rnix" ]; - }; -} diff --git a/plugins/nvim-lsp/rust-analyzer.nix b/plugins/nvim-lsp/rust-analyzer.nix deleted file mode 100644 index c55f7a48..00000000 --- a/plugins/nvim-lsp/rust-analyzer.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, config, lib, ... }: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.rust-analyzer; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.rust-analyzer = { - enable = mkEnableOption "Enable rust-analyzer, for Rust."; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.rust-analyzer ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "rust_analyzer" ]; - }; -} diff --git a/plugins/nvim-lsp/zls.nix b/plugins/nvim-lsp/zls.nix deleted file mode 100644 index a0537d29..00000000 --- a/plugins/nvim-lsp/zls.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, lib, ... }: -with lib; -let - cfg = config.programs.nixvim.plugins.lsp.servers.zls; -in -{ - options = { - programs.nixvim.plugins.lsp.servers.zls = { - enable = mkEnableOption "Enable zls, for Zig."; - }; - }; - - config = mkIf cfg.enable { - programs.nixvim.extraPackages = [ pkgs.zls ]; - - programs.nixvim.plugins.lsp.enabledServers = [ "zls" ]; - }; -}