aboutsummaryrefslogtreecommitdiffstats
path: root/modules/tools/editor
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tools/editor')
-rw-r--r--modules/tools/editor/neovim/config/options.lua16
-rw-r--r--modules/tools/editor/neovim/default.nix30
-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
10 files changed, 119 insertions, 33 deletions
diff --git a/modules/tools/editor/neovim/config/options.lua b/modules/tools/editor/neovim/config/options.lua
index 17772ca..450e613 100644
--- a/modules/tools/editor/neovim/config/options.lua
+++ b/modules/tools/editor/neovim/config/options.lua
@@ -31,11 +31,11 @@ vim.api.nvim_create_autocmd("FileType", {
});
-- Exception that use spaces
-vim.api.nvim_create_autocmd("FileType", {
- pattern = {},
- callback = function()
- vim.bo.expandtab = true;
- vim.bo.tabstop = 2;
- vim.bo.shiftwidth = 2;
- end,
-});
+-- vim.api.nvim_create_autocmd("FileType", {
+-- pattern = {},
+-- callback = function()
+-- vim.bo.expandtab = true;
+-- vim.bo.tabstop = 2;
+-- vim.bo.shiftwidth = 2;
+-- end,
+-- });
diff --git a/modules/tools/editor/neovim/default.nix b/modules/tools/editor/neovim/default.nix
index 87fad55..64f2600 100644
--- a/modules/tools/editor/neovim/default.nix
+++ b/modules/tools/editor/neovim/default.nix
@@ -3,34 +3,34 @@
{
options.tools.editor.neovim = {
enable = lib.mkEnableOption "Enables neovim.";
+ configuration = lib.mkOption {
+ type = lib.types.enum [
+ "minimal"
+ "full"
+ ];
+ default = "minimal";
+ description = "The configuration for neovim to use.";
+ };
};
- config = lib.mkIf config.tools.editor.neovim.enable {
+ config =
+ let
+ plugins = import ./plugins { inherit config pkgs lib; };
+ in lib.mkIf config.tools.editor.neovim.enable {
programs.neovim.enable = true;
programs.neovim.viAlias = true;
programs.neovim.vimAlias = true;
programs.neovim.vimdiffAlias = true;
programs.neovim.defaultEditor = true;
- programs.neovim.extraPackages = with pkgs; [
- gcc # Required for treesitter
- ];
+ home.packages = plugins.requirements;
programs.neovim.extraLuaConfig =
''
${import ./config}
-${import ./plugins { inherit config; }}
+${plugins.configuration}
'';
- programs.neovim.plugins = with pkgs.vimPlugins; [
- 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";
- }))
- ];
+ programs.neovim.plugins = plugins.list;
};
}
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
+ ];
+}