diff options
Diffstat (limited to 'hm/soft')
| -rw-r--r-- | hm/soft/nixvim/binds.nix | 0 | ||||
| -rw-r--r-- | hm/soft/nixvim/nixvim.nix | 270 | ||||
| -rw-r--r-- | hm/soft/soft.nix | 2 |
3 files changed, 272 insertions, 0 deletions
diff --git a/hm/soft/nixvim/binds.nix b/hm/soft/nixvim/binds.nix new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/hm/soft/nixvim/binds.nix diff --git a/hm/soft/nixvim/nixvim.nix b/hm/soft/nixvim/nixvim.nix new file mode 100644 index 0000000..65de006 --- /dev/null +++ b/hm/soft/nixvim/nixvim.nix @@ -0,0 +1,270 @@ +{ + inputs, + config, + lib, + pkgs, + ... +}: +let + cfg = config.hm.editors.nixvim; +in +{ + imports = [ inputs.nixvim.homeModules.nixvim ]; + + options.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework"; + + config = lib.mkIf cfg.enable { + programs.nixvim = { + diagnostics.virtual_text = false; + enable = true; + package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; + + vimAlias = true; + defaultEditor = true; + waylandSupport = true; + colorschemes.gruvbox.enable = true; + + globals.mapleader = " "; + + clipboard = { + providers.wl-copy.enable = true; + register = "unnamedplus"; + }; + + opts = { + smartindent = true; + autoindent = true; + breakindent = true; + number = true; + relativenumber = true; + termguicolors = true; + ignorecase = true; + smartcase = true; + expandtab = true; + shiftwidth = 2; + encoding = "utf-8"; + fileencoding = "utf-8"; + undofile = true; + swapfile = true; + backup = false; + autoread = true; + cursorline = true; + ruler = true; + gdefault = true; + scrolloff = 5; + }; + + keymaps = [ + { + mode = [ "" ]; + key = "<F1>"; + action = "<NOP>"; + options.silent = true; + } + { + mode = "n"; + key = "<leader>gs"; + action = "<cmd>Neogit<CR>"; + options.desc = "Neogit Status"; + } + { + mode = "n"; + key = "<leader>ff"; + action = "<cmd>Telescope find_files<CR>"; + options.desc = "Find Files"; + } + { + mode = "n"; + key = "gd"; + action = "<cmd>lua vim.lsp.buf.definition()<CR>"; + options.desc = "Go to Definition"; + } + { + mode = "n"; + key = "K"; + action = "<cmd>lua vim.lsp.buf.hover()<CR>"; + options.desc = "Hover Docs"; + } + { + mode = "n"; + key = "<leader>ca"; + action = "<cmd>lua vim.lsp.buf.code_action()<CR>"; + options.desc = "Code Actions"; + } + { + mode = "n"; + key = "<leader>rn"; + action = "<cmd>lua vim.lsp.buf.rename()<CR>"; + options.desc = "Rename Symbol"; + } + { + mode = "n"; + key = "<leauer>fs"; + action = "<cmd>Telescope lsp_document_symbols<CR>"; + options.desc = "Find Symbols (Functions/Variables)"; + } + { + mode = "n"; + key = "<leader>fg"; + action = "<cmd>Telescope live_grep<CR>"; + options.desc = "Live Grep"; + } + { + mode = "n"; + key = "<leader>ma"; + action = "<cmd>MCpattern<CR>"; + options.desc = "Select all matches of pattern"; + } + { + mode = "n"; + key = "<leader>ha"; + action = ''<cmd>lua require("harpoon.mark").add_file()<CR>''; + options.desc = "Harpoon: Mark File"; + } + { + mode = "n"; + key = "<leader>hh"; + action = ''<cmd>lua require("harpoon.ui").toggle_quick_menu()<CR>''; + options.desc = "Harpoon: Show Menu"; + } + { + mode = "n"; + key = "<leader>xx"; + action = "<cmd>Trouble diagnostics toggle<CR>"; + options.desc = "Toggle Trouble (Diagnostics)"; + } + { + mode = "n"; + key = "<leader>p"; + action = "<cmd>Telescope yank_history<CR>"; + options.desc = "Open Yank History"; + } + ]; + + plugins = { + overseer.enable = true; + # neotest.enable = true; + + tiny-inline-diagnostic = { + enable = true; + settings = { + preset = "minimal"; + show_all_diags_on_cursorline = true; + options = { + multilines = { + enabled = true; + always_show = true; + }; + }; + }; + }; + comment.enable = true; + flash = { + enable = true; + settings = { + search.enabled = true; + jump.autojump = true; + }; + }; + notify = { + enable = true; + settings.topDown = false; + }; + yanky = { + enable = true; + settings.ring.history_length = 100; + settings.system_clipboard.sync_with_ring = true; + }; + lualine = { + enable = true; + settings = { + options.theme = "gruvbox-material"; + sections = { + lualine_b = [ "diagnostics" ]; + lualine_c = [ "filename" ]; + lualine_x = [ "filetype" ]; + }; + }; + }; + + treesitter-context = { + enable = true; + settings = { + indent.enable = true; + max_lines = 2; + trim_scope = "outer"; + }; + }; + oil.enable = true; + nvim-autopairs.enable = true; + neoscroll.enable = true; + bufferline.enable = true; + web-devicons.enable = true; + lsp-kind.enable = true; + + blink-cmp = { + enable = true; + settings = { + keymap = { + preset = "default"; + "<C-space>" = [ + "show" + "show_documentation" + "hide" + ]; + # "<CR>" = [ + # "accept" + # "fallback" + # ]; + # "<Tab>" = [ + # "select_next" + # "fallback" + # ]; + # "<S-Tab>" = [ + # "select_prev" + # "fallback" + # ]; + }; + }; + }; + + # gitsigns.enable = true; + which-key.enable = true; + harpoon = { + enable = true; + enableTelescope = true; + }; + toggleterm.enable = true; + treesitter.enable = true; + telescope = { + enable = true; + extensions.fzf-native.enable = true; + }; + noice.enable = true; + dressing.enable = true; + + conform-nvim = { + enable = true; + settings = { + formatters_by_ft = { + nix = [ "alejandra" ]; + }; + format_on_save = { + lsp_fallback = true; + timeout_ms = 500; + }; + }; + }; + + lsp = { + enable = true; + servers = { + zls.enable = true; + nil_ls.enable = true; + clangd.enable = true; + }; + }; + }; + }; + }; +} diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix index 05740bb..127a5fe 100644 --- a/hm/soft/soft.nix +++ b/hm/soft/soft.nix @@ -16,5 +16,7 @@ ./torrent.nix ./yt-dlp.nix ./sioyek.nix + + ./nixvim/nixvim.nix ]; } |
