{ pkgs, lib, ... }: let lua = cmd: {__raw = cmd;}; luaFunc = cmd: lua '' function () ${cmd} end''; in { colorschemes.base16 = { enable = true; colorscheme = "gruvbox-dark-hard"; }; globals = { mapleader = " "; }; opts = { number = true; relativenumber = true; tabstop = 4; shiftwidth = 2; expandtab = true; smartindent = true; scrolloff = 4; smoothscroll = true; undofile = true; undodir = lua ''vim.fn.expand("$HOME/.local/share/nvim/undo")''; list = true; listchars = builtins.concatStringsSep "," [ "tab: >" "leadmultispace: |" "trail:." "extends:>" "precedes:<" ]; foldlevel = 2; }; extraPlugins = [ (pkgs.vimPlugins.actions-preview-nvim) (pkgs.vimPlugins.vimwiki) ]; extraConfigLua = '' require("actions-preview").setup { highlight_command = { require("actions-preview.highlight").delta("${pkgs.delta}/bin/delta --no-gitconfig --side-by-side"), }, telescope = { sorting_strategy = "ascending", layout_strategy = "vertical", layout_config = { width = 0.8, height = 0.9, prompt_position = "top", preview_cutoff = 20, preview_height = function(_, _, max_lines) return max_lines - 10 end, }, }, } vim.keymap.set({ "v", "n" }, "", require("actions-preview").code_actions) vim.keymap.set({ "n" }, "ca", require("actions-preview").code_actions) ''; keymaps = [ { key = ""; action = ''"+y''; options.desc = "copy to clipboard"; } { key = "ca"; action = '' require("actions-preview").code_actions ''; } { key = ""; action = "tabnext"; } { key = ""; action = "tabprev"; } { key = "bn"; action = "bnext"; } { key = "bp"; action = "bprevious"; } { key = "gl"; action = "g$"; } { key = "gh"; action = "g0"; } { mode = "v"; key = ">"; action = ">gv"; options.desc = "indent"; options.silent = true; } { mode = "v"; key = "<"; action = "fg" = "live_grep"; "/" = "live_grep"; "ff" = "find_files"; "fb" = "buffers"; "fh" = "help_tags"; ":" = "commands"; "ft" = "treesitter"; "fr" = "lsp_references"; "cr" = "lsp_definition"; }; }; lsp = { enable = true; servers = { ts_ls.enable = true; nixd = { enable = true; settings = { nixpkgs.expr = ''import {}''; options.zenix.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.zenix.options''; options.alpine.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.alpine.options''; formatting.command = [(lib.getExe pkgs.alejandra)]; }; }; yamlls.enable = true; gopls.enable = true; ansiblels.enable = true; }; keymaps = { lspBuf = { "ck" = "hover"; "K" = "hover"; "cr" = "rename"; "" = "rename"; }; }; }; dap = { enable = true; extensions.dap-go = { enable = true; # tests.verbose = true; # ??? }; extensions.dap-ui = { enable = true; }; }; cmp = { enable = true; settings = { mapping = { "" = "cmp.mapping.complete()"; "" = "cmp.mapping.scroll_docs(4)"; "" = "cmp.mapping.scroll_docs(-4)"; "" = "cmp.mapping.close()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; }; sources = [ {name = "nvim_lsp";} {name = "path";} {name = "buffer";} ]; }; }; cmp-nvim-lsp.enable = true; cmp-nvim-lsp-signature-help.enable = true; cmp-path.enable = true; cmp-buffer.enable = true; trouble.enable = true; gitsigns.enable = true; git-worktree = { enable = true; enableTelescope = true; }; lazygit.enable = true; which-key.enable = true; harpoon = { enable = true; keymaps = { addFile = "ha"; toggleQuickMenu = "hf"; navNext = "n"; }; }; vim-css-color.enable = true; treesitter = { enable = true; folding = true; }; treesitter-textobjects = { enable = true; select = { enable = true; lookahead = true; keymaps = { "af" = { query = "@function.outer"; desc = "Function Outer"; }; "ac" = { query = "@comment.outer"; desc = "Comment Outer"; }; "if" = { query = "@function.inner"; desc = "Function Inner"; }; }; }; }; oil = { enable = true; settings = { keymaps = { "" = "actions.refresh"; "zh" = "actions.toggle_hidden"; }; view_options.show_hidden = true; }; }; ts-autotag.enable = true; guess-indent.enable = true; codesnap = { enable = true; settings = { has_line_number = true; mac_window_bar = false; save_path = "~/Pictures/Screenshots/"; watermark = ""; bg_padding = 5; }; }; }; }