aboutsummaryrefslogtreecommitdiffstats
path: root/modules/tools/editor/neovim/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tools/editor/neovim/plugins')
-rw-r--r--modules/tools/editor/neovim/plugins/config/base16.mustache.lua (renamed from modules/tools/editor/neovim/plugins/base16.mustache.lua)0
-rw-r--r--modules/tools/editor/neovim/plugins/config/comment.lua (renamed from modules/tools/editor/neovim/plugins/comment.lua)0
-rw-r--r--modules/tools/editor/neovim/plugins/config/default.nix19
-rw-r--r--modules/tools/editor/neovim/plugins/config/lsp-config.lua51
-rw-r--r--modules/tools/editor/neovim/plugins/config/lualine.lua (renamed from modules/tools/editor/neovim/plugins/lualine.lua)0
-rw-r--r--modules/tools/editor/neovim/plugins/config/nvim-tree.lua (renamed from modules/tools/editor/neovim/plugins/nvim-tree.lua)0
-rw-r--r--modules/tools/editor/neovim/plugins/config/treesitter.nix (renamed from modules/tools/editor/neovim/plugins/treesitter.nix)0
-rw-r--r--modules/tools/editor/neovim/plugins/default.nix36
8 files changed, 96 insertions, 10 deletions
diff --git a/modules/tools/editor/neovim/plugins/base16.mustache.lua b/modules/tools/editor/neovim/plugins/config/base16.mustache.lua
index 3c13fcc..3c13fcc 100644
--- a/modules/tools/editor/neovim/plugins/base16.mustache.lua
+++ b/modules/tools/editor/neovim/plugins/config/base16.mustache.lua
diff --git a/modules/tools/editor/neovim/plugins/comment.lua b/modules/tools/editor/neovim/plugins/config/comment.lua
index 9086261..9086261 100644
--- a/modules/tools/editor/neovim/plugins/comment.lua
+++ b/modules/tools/editor/neovim/plugins/config/comment.lua
diff --git a/modules/tools/editor/neovim/plugins/config/default.nix b/modules/tools/editor/neovim/plugins/config/default.nix
new file mode 100644
index 0000000..fb2ac1a
--- /dev/null
+++ b/modules/tools/editor/neovim/plugins/config/default.nix
@@ -0,0 +1,19 @@
+{ config }:
+
+let
+ extra = if config.tools.editor.neovim.configuration == "full" then
+''
+${builtins.readFile ./lsp-config.lua}
+''
+ else "";
+in
+''
+${builtins.readFile ./comment.lua}
+${builtins.readFile ./lualine.lua}
+${import ./treesitter.nix { inherit config; }}
+${builtins.readFile (config.scheme {
+ template = builtins.readFile ./base16.mustache.lua;
+})}
+${builtins.readFile ./nvim-tree.lua}
+${extra}
+''
diff --git a/modules/tools/editor/neovim/plugins/config/lsp-config.lua b/modules/tools/editor/neovim/plugins/config/lsp-config.lua
new file mode 100644
index 0000000..43cdb95
--- /dev/null
+++ b/modules/tools/editor/neovim/plugins/config/lsp-config.lua
@@ -0,0 +1,51 @@
+local lspconfig = require("lspconfig");
+
+local filetype_to_lsp = {
+ lua = "lua_ls",
+ cpp = "clangd",
+ c = "clangd",
+ python = "pyright",
+ javascript = "tsserver",
+ typescript = "tsserver",
+ go = "gopls",
+ html = "html",
+ css = "cssls",
+ json = "jsonls",
+ bash = "bashls",
+ graphql = "graphql",
+ dockerfile = "dockerls",
+ php = "phpactor",
+ rust = "rust_analyzer",
+ haskell = "hls",
+ deno = "denols",
+ vim = "vimls",
+ elixir = "elixirls",
+ clojure = "clojure_lsp",
+ scala = "scala_metals",
+ ruby = "sorbet",
+};
+
+-- Keeping track of all the lsps that have been already configured
+local lsp_setup_done = {};
+
+-- Function to setup LSP based on filetype
+local function setup_lsp(filetype)
+ local lsp_server = filetype_to_lsp[filetype];
+ if lsp_server and not lsp_setup_done[lsp_server] then
+ lsp_setup_done[lsp_server] = true;
+ lspconfig[lsp_server].setup({});
+ end
+end
+
+vim.keymap.set("n", "gd", vim.lsp.buf.definition, { noremap = true, silent = true });
+vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { noremap = true, silent = true });
+vim.keymap.set("n", "gr", vim.lsp.buf.references, { noremap = true, silent = true });
+vim.keymap.set("i", "<C-c>", vim.lsp.buf.completion, { noremap = true, silent = true });
+vim.keymap.set("n", "gk", vim.lsp.buf.hover, { noremap = true, silent = true });
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "*", -- Match all file types
+ callback = function()
+ setup_lsp(vim.bo.filetype); -- Call the setup_lsp function only if the filetype is in the mapping
+ end,
+});
diff --git a/modules/tools/editor/neovim/plugins/lualine.lua b/modules/tools/editor/neovim/plugins/config/lualine.lua
index ba2eda6..ba2eda6 100644
--- a/modules/tools/editor/neovim/plugins/lualine.lua
+++ b/modules/tools/editor/neovim/plugins/config/lualine.lua
diff --git a/modules/tools/editor/neovim/plugins/nvim-tree.lua b/modules/tools/editor/neovim/plugins/config/nvim-tree.lua
index c6c4102..c6c4102 100644
--- a/modules/tools/editor/neovim/plugins/nvim-tree.lua
+++ b/modules/tools/editor/neovim/plugins/config/nvim-tree.lua
diff --git a/modules/tools/editor/neovim/plugins/treesitter.nix b/modules/tools/editor/neovim/plugins/config/treesitter.nix
index be0bdb6..be0bdb6 100644
--- a/modules/tools/editor/neovim/plugins/treesitter.nix
+++ b/modules/tools/editor/neovim/plugins/config/treesitter.nix
diff --git a/modules/tools/editor/neovim/plugins/default.nix b/modules/tools/editor/neovim/plugins/default.nix
index ace5379..6e4f844 100644
--- a/modules/tools/editor/neovim/plugins/default.nix
+++ b/modules/tools/editor/neovim/plugins/default.nix
@@ -1,11 +1,27 @@
-{ config }:
+{ config, pkgs, lib }:
-''
-${builtins.readFile ./comment.lua}
-${builtins.readFile ./lualine.lua}
-${import ./treesitter.nix { inherit config; }}
-${builtins.readFile (config.scheme {
- template = builtins.readFile ./base16.mustache.lua;
-})}
-${builtins.readFile ./nvim-tree.lua}
-''
+{
+ configuration = import ./config { inherit config; };
+
+ list = with pkgs.vimPlugins; lib.mkMerge [
+ [
+ comment-nvim
+ lualine-nvim
+ nvim-treesitter
+ nvim-web-devicons
+ nvim-tree-lua
+ (base16-vim.overrideAttrs (old: {
+ patchPhase = "ln -s ${config.scheme base16-vim} colors/base16-scheme.vim";
+ }))
+ ]
+ (if config.tools.editor.neovim.configuration == "full" then
+ [
+ nvim-lspconfig
+ ]
+ else null)
+ ];
+
+ requirements = with pkgs; [
+ gcc # for treesitter
+ ];
+}