summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorozpv <39195175+ozpv@users.noreply.github.com>2024-03-27 01:49:44 +0000
committerGitHub <noreply@github.com>2024-03-27 01:49:44 +0000
commitef5de419fae7c47069d0fb4415626dbbfab33595 (patch)
tree0b9cebdf481cd80c0fce483a8a37f308c6cbd5da
parentcdf380222440fdda6cc6739e8a925cbdbd7c12cb (diff)
start neovim config
-rw-r--r--configuration.nix12
-rw-r--r--home.nix32
-rw-r--r--nvim/options.lua0
-rw-r--r--nvim/plugin/lsp.lua48
-rw-r--r--nvim/plugin/lualine.lua40
5 files changed, 121 insertions, 11 deletions
diff --git a/configuration.nix b/configuration.nix
index 3c136a6..4b24286 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -114,21 +114,13 @@
maim
sxiv
xwallpaper
- lf
wget
git
home-manager
];
- programs.neovim = {
- enable = true;
- defaultEditor = true;
- configure = {
- customRC = ''
- set nu
- '';
- };
- };
+ # neovim
+ programs.neovim.enable = true;
# gtk
programs.dconf.enable = true;
diff --git a/home.nix b/home.nix
index 20b94d2..8b843cc 100644
--- a/home.nix
+++ b/home.nix
@@ -23,7 +23,37 @@
];
home.sessionVariables = {
- EDITOR = "vim";
+ EDITOR = "nvim";
+ };
+
+ programs.neovim = {
+ enable = true;
+
+ plugins = with pkgs.vimPlugins; [
+ comment-nvim
+
+ {
+ plugin = lualine-nvim;
+ type = "lua";
+ config = "${builtins.readFile nvim/plugin/lualine.lua}";
+ }
+ nvim-web-devicons
+
+ {
+ plugin = gruvbox;
+ config = "colorscheme gruvbox";
+ }
+
+ {
+ plugin = nvim-lspconfig;
+ type = "lua";
+ config = "${builtins.readFile nvim/plugin/lsp.lua}";
+ }
+ ];
+
+ extraLuaConfig = ''
+ ${builtins.readFile nvim/options.lua }
+ '';
};
programs.home-manager.enable = true;
diff --git a/nvim/options.lua b/nvim/options.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/nvim/options.lua
diff --git a/nvim/plugin/lsp.lua b/nvim/plugin/lsp.lua
new file mode 100644
index 0000000..b12d34a
--- /dev/null
+++ b/nvim/plugin/lsp.lua
@@ -0,0 +1,48 @@
+local lspconfig = require('lspconfig')
+lspconfig.pyright.setup {}
+lspconfig.tsserver.setup {}
+lspconfig.rust_analyzer.setup {
+ -- Server-specific settings. See `:help lspconfig-setup`
+ settings = {
+ ['rust-analyzer'] = {},
+ },
+}
+
+
+-- Global mappings.
+-- See `:help vim.diagnostic.*` for documentation on any of the below functions
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
+vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
+
+-- Use LspAttach autocommand to only map the following keys
+-- after the language server attaches to the current buffer
+vim.api.nvim_create_autocmd('LspAttach', {
+ group = vim.api.nvim_create_augroup('UserLspConfig', {}),
+ callback = function(ev)
+ -- Enable completion triggered by <c-x><c-o>
+ vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
+
+ -- Buffer local mappings.
+ -- See `:help vim.lsp.*` for documentation on any of the below functions
+ local opts = { buffer = ev.buf }
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
+ vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
+ vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
+ vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
+ vim.keymap.set('n', '<space>wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, opts)
+ vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
+ vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
+ vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
+ vim.keymap.set('n', '<space>f', function()
+ vim.lsp.buf.format { async = true }
+ end, opts)
+ end,
+})
diff --git a/nvim/plugin/lualine.lua b/nvim/plugin/lualine.lua
new file mode 100644
index 0000000..d1913a5
--- /dev/null
+++ b/nvim/plugin/lualine.lua
@@ -0,0 +1,40 @@
+require('lualine').setup {
+ options = {
+ icons_enabled = true,
+ theme = 'gruvbox',
+ component_separators = { left = '', right = ''},
+ section_separators = { left = '', right = ''},
+ disabled_filetypes = {
+ statusline = {},
+ winbar = {},
+ },
+ ignore_focus = {},
+ always_divide_middle = true,
+ globalstatus = false,
+ refresh = {
+ statusline = 1000,
+ tabline = 1000,
+ winbar = 1000,
+ }
+ },
+ sections = {
+ lualine_a = {'mode'},
+ lualine_b = {'branch', 'diff', 'diagnostics'},
+ lualine_c = {'filename'},
+ lualine_x = {'encoding', 'fileformat', 'filetype'},
+ lualine_y = {'progress'},
+ lualine_z = {'location'}
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {'filename'},
+ lualine_x = {'location'},
+ lualine_y = {},
+ lualine_z = {}
+ },
+ tabline = {},
+ winbar = {},
+ inactive_winbar = {},
+ extensions = {}
+}