diff options
author | Andrey0189 | 2024-04-17 05:52:14 +0500 |
---|---|---|
committer | Andrey0189 | 2024-04-17 05:52:14 +0500 |
commit | b51f9bc1014ce350abe73f2c419e0bf6512194c2 (patch) | |
tree | 404799cc86717de0a7115bbcec32ce0d8851241b /nixos/modules/nixvim | |
download | nixos-config-b51f9bc1014ce350abe73f2c419e0bf6512194c2.tar.gz nixos-config-b51f9bc1014ce350abe73f2c419e0bf6512194c2.tar.bz2 nixos-config-b51f9bc1014ce350abe73f2c419e0bf6512194c2.zip |
Initial commit
Diffstat (limited to 'nixos/modules/nixvim')
-rw-r--r-- | nixos/modules/nixvim/autocmds.nix | 10 | ||||
-rw-r--r-- | nixos/modules/nixvim/keymaps.nix | 15 | ||||
-rw-r--r-- | nixos/modules/nixvim/nixvim.nix | 16 | ||||
-rw-r--r-- | nixos/modules/nixvim/opts.nix | 64 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/barbar.nix | 12 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/cmp.nix | 32 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/comment.nix | 10 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/floaterm.nix | 12 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/lsp.nix | 46 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/lualine.nix | 47 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/mini.nix | 20 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/neotree.nix | 7 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/nix.nix | 3 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/plugins-bundle.nix | 15 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/telescope.nix | 29 | ||||
-rw-r--r-- | nixos/modules/nixvim/plugins/transparent.nix | 3 |
16 files changed, 341 insertions, 0 deletions
diff --git a/nixos/modules/nixvim/autocmds.nix b/nixos/modules/nixvim/autocmds.nix new file mode 100644 index 0000000..4fca334 --- /dev/null +++ b/nixos/modules/nixvim/autocmds.nix @@ -0,0 +1,10 @@ +{ + programs.nixvim = { + autoCmd = [ + { + event = [ "VimEnter" ]; + command = ":TransparentEnable"; + } + ]; + }; +} diff --git a/nixos/modules/nixvim/keymaps.nix b/nixos/modules/nixvim/keymaps.nix new file mode 100644 index 0000000..e792ea0 --- /dev/null +++ b/nixos/modules/nixvim/keymaps.nix @@ -0,0 +1,15 @@ +{ + programs.nixvim = { + globals = { + mapleader = "\\"; + maplocalleader = "\\"; + }; + + keymaps = [ + { + key = "<leader>n"; + action = "<cmd>Neotree<CR>"; + } + ]; + }; +} diff --git a/nixos/modules/nixvim/nixvim.nix b/nixos/modules/nixvim/nixvim.nix new file mode 100644 index 0000000..df97be1 --- /dev/null +++ b/nixos/modules/nixvim/nixvim.nix @@ -0,0 +1,16 @@ +{ + + imports = [ + ./opts.nix + ./keymaps.nix + ./autocmds.nix + ./plugins/plugins-bundle.nix + ]; + + programs.nixvim = { + enable = true; + + defaultEditor = true; + colorschemes.oxocarbon.enable = true; + }; +} diff --git a/nixos/modules/nixvim/opts.nix b/nixos/modules/nixvim/opts.nix new file mode 100644 index 0000000..d3d7822 --- /dev/null +++ b/nixos/modules/nixvim/opts.nix @@ -0,0 +1,64 @@ +{ + programs.nixvim = { + + clipboard = { + register = "unnamedplus"; + providers.wl-copy.enable = true; + }; + + opts = { + updatetime = 100; # Faster completion + + relativenumber = true; # Relative line numbers + number = true; # Display the absolute line number of the current line + + hidden = true; # Keep closed buffer open in the background + + mouse = "a"; # Enable mouse control + mousemodel = "extend"; # Mouse right-click extends the current selection + + splitbelow = true; # A new window is put below the current one + splitright = true; # A new window is put right of the current one + + swapfile = false; # Disable the swap file + + modeline = true; # Tags such as 'vim:ft=sh' + modelines = 100; # Sets the type of modelines + + undofile = true; # Automatically save and restore undo history + + incsearch = true; # Incremental search: show match for partly typed search command + + inccommand = "split"; # Search and replace: preview changes in quickfix list + ignorecase = true; # When the search query is lower-case, match both lower and upper-case + smartcase = true; # Override the 'ignorecase' option if the search pattern contains upper + + scrolloff = 12; # Number of screen lines to show around the cursor + + cursorline = false; # Highlight the screen line of the cursor + cursorcolumn = false; # Highlight the screen column of the cursor + signcolumn = "yes"; # Whether to show the signcolumn + colorcolumn = "100"; # Columns to highlight + + laststatus = 3; # When to use a status line for the last window + + fileencoding = "utf-8"; # File-content encoding for the current buffer + + termguicolors = false; # Disables 24-bit RGB color in the |TUI| + + spell = false; # Highlight spelling mistakes (local to window) + wrap = false; # Prevent text from wrapping + + tabstop = 2; # Number of spaces a <Tab> in the text stands for (local to buffer) + shiftwidth = 2; # Number of spaces used for each step of (auto)indent (local to buffer) + expandtab = true; # Expand <Tab> to spaces in Insert mode (local to buffer) + autoindent = true; # Do clever autoindenting + + textwidth = 0; # Maximum width of text that is being inserted. A longer line will be + + foldlevel = 99; # Folds with a level higher than this number will be closed + + completeopt = ["menu" "menuone" "noselect"]; # For CMP plugin + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/barbar.nix b/nixos/modules/nixvim/plugins/barbar.nix new file mode 100644 index 0000000..516ec13 --- /dev/null +++ b/nixos/modules/nixvim/plugins/barbar.nix @@ -0,0 +1,12 @@ +{ + programs.nixvim.plugins.barbar = { + enable = true; + keymaps = { + silent = true; + + next = "<TAB>"; + previous = "<S-TAB>"; + close = "<C-q>"; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/cmp.nix b/nixos/modules/nixvim/plugins/cmp.nix new file mode 100644 index 0000000..66afc03 --- /dev/null +++ b/nixos/modules/nixvim/plugins/cmp.nix @@ -0,0 +1,32 @@ +{ + programs.nixvim.plugins.cmp = { + enable = true; + + settings = { + snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; + + mapping = { + "<C-d>" = "cmp.mapping.scroll_docs(-4)"; + "<C-f>" = "cmp.mapping.scroll_docs(4)"; + "<C-Space>" = "cmp.mapping.complete()"; + "<C-e>" = "cmp.mapping.close()"; + "<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; + "<CR>" = "cmp.mapping.confirm({ select = true })"; + }; + + sources = [ + {name = "path";} + {name = "nvim_lsp";} + {name = "cmp_tabby";} + {name = "luasnip";} + { + name = "buffer"; + # Words from other open buffers can also be suggested. + option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; + } + {name = "neorg";} + ]; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/comment.nix b/nixos/modules/nixvim/plugins/comment.nix new file mode 100644 index 0000000..5aa38ad --- /dev/null +++ b/nixos/modules/nixvim/plugins/comment.nix @@ -0,0 +1,10 @@ +{ + programs.nixvim.plugins.comment = { + enable = true; + + settings = { + opleader.line = "gcc"; + toggler.line = "gcc"; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/floaterm.nix b/nixos/modules/nixvim/plugins/floaterm.nix new file mode 100644 index 0000000..7185d66 --- /dev/null +++ b/nixos/modules/nixvim/plugins/floaterm.nix @@ -0,0 +1,12 @@ +{ + programs.nixvim.plugins.floaterm = { + enable = true; + + width = 0.8; + height = 0.8; + + title = ""; + + keymaps.toggle = "<C-b>"; + }; +} diff --git a/nixos/modules/nixvim/plugins/lsp.nix b/nixos/modules/nixvim/plugins/lsp.nix new file mode 100644 index 0000000..045f7ed --- /dev/null +++ b/nixos/modules/nixvim/plugins/lsp.nix @@ -0,0 +1,46 @@ +{ + programs.nixvim.plugins = { + + treesitter = { + enable = true; + nixvimInjections = true; + folding = true; + indent = true; + }; + + treesitter-refactor = { + enable = true; + highlightDefinitions = { + enable = true; + # Set to false if you have an `updatetime` of ~100. + clearOnCursorMove = false; + }; + }; + + hmts.enable = true; + + # lspkind = { + # enable = true; + # + # cmp = { + # enable = true; + # menu = { + # nvim_lsp = "[LSP]"; + # nvim_lua = "[api]"; + # path = "[path]"; + # luasnip = "[snip]"; + # buffer = "[buffer]"; + # neorg = "[neorg]"; + # cmp_tabby = "[Tabby]"; + # }; + # }; + # }; + + lsp = { + enable = true; + servers = { + nil_ls.enable = true; + }; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/lualine.nix b/nixos/modules/nixvim/plugins/lualine.nix new file mode 100644 index 0000000..4fa95d7 --- /dev/null +++ b/nixos/modules/nixvim/plugins/lualine.nix @@ -0,0 +1,47 @@ +{ + programs.nixvim.plugins.lualine = { + + enable = true; + globalstatus = true; + + # +-------------------------------------------------+ + # | A | B | C X | Y | Z | + # +-------------------------------------------------+ + + sections = { + lualine_a = ["mode"]; + lualine_b = ["branch"]; + lualine_c = ["filename" "diff"]; + + lualine_x = [ + "diagnostics" + + # Show active language server + { + name.__raw = '' + function() + local msg = "" + local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') + local clients = vim.lsp.get_active_clients() + if next(clients) == nil then + return msg + end + for _, client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then + return client.name + end + end + return msg + end + ''; + icon = " "; + # color.fg = "#ffffff"; + } + "encoding" + "fileformat" + "filetype" + ]; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/mini.nix b/nixos/modules/nixvim/plugins/mini.nix new file mode 100644 index 0000000..bd41a68 --- /dev/null +++ b/nixos/modules/nixvim/plugins/mini.nix @@ -0,0 +1,20 @@ +{ + programs.nixvim.plugins.mini = { + enable = true; + + modules = { + align = {}; + basics = { + options.extra_ui = true; + }; + clue = {}; + cursorword = {}; + doc = {}; + extra = {}; + indentscope = {}; + trailspace = {}; + misc = {}; + surround = {}; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/neotree.nix b/nixos/modules/nixvim/plugins/neotree.nix new file mode 100644 index 0000000..b0c19be --- /dev/null +++ b/nixos/modules/nixvim/plugins/neotree.nix @@ -0,0 +1,7 @@ +{ + programs.nixvim.plugins.neo-tree = { + enable = true; + filesystem.followCurrentFile.enabled = true; + closeIfLastWindow = true; + }; +} diff --git a/nixos/modules/nixvim/plugins/nix.nix b/nixos/modules/nixvim/plugins/nix.nix new file mode 100644 index 0000000..295695a --- /dev/null +++ b/nixos/modules/nixvim/plugins/nix.nix @@ -0,0 +1,3 @@ +{ + programs.nixvim.plugins.nix.enable = true; +} diff --git a/nixos/modules/nixvim/plugins/plugins-bundle.nix b/nixos/modules/nixvim/plugins/plugins-bundle.nix new file mode 100644 index 0000000..9dd1140 --- /dev/null +++ b/nixos/modules/nixvim/plugins/plugins-bundle.nix @@ -0,0 +1,15 @@ +{ + imports = [ + ./lualine.nix + ./transparent.nix + ./neotree.nix + ./mini.nix + ./comment.nix + ./floaterm.nix + ./telescope.nix + ./barbar.nix + ./nix.nix + ./lsp.nix + ./cmp.nix + ]; +} diff --git a/nixos/modules/nixvim/plugins/telescope.nix b/nixos/modules/nixvim/plugins/telescope.nix new file mode 100644 index 0000000..1309eca --- /dev/null +++ b/nixos/modules/nixvim/plugins/telescope.nix @@ -0,0 +1,29 @@ +{ + programs.nixvim.plugins.telescope = { + enable = true; + + keymaps = { + "<leader>ff" = "find_files"; + "<leader>b" = "buffers"; + "<leader>fh" = "help_tags"; + "<leader>gf" = "git_files"; + "<leader>of" = "oldfiles"; + # "<leader>fg" = "live_grep"; + # "<leader>fd" = "diagnostics"; + }; + + keymapsSilent = true; + + settings.defaults = { + file_ignore_patterns = [ + "^.git/" + "^.mypy_cache/" + "^__pycache__/" + "^output/" + "^data/" + "%.ipynb" + ]; + set_env.COLORTERM = "truecolor"; + }; + }; +} diff --git a/nixos/modules/nixvim/plugins/transparent.nix b/nixos/modules/nixvim/plugins/transparent.nix new file mode 100644 index 0000000..d2139ee --- /dev/null +++ b/nixos/modules/nixvim/plugins/transparent.nix @@ -0,0 +1,3 @@ +{ + programs.nixvim.plugins.transparent.enable = true; +} |