{ ... }: { programs.nixvim = { enable = true; defaultEditor = true; globals = { mapleader = " "; maplocalleader = "\\"; }; opts = { relativenumber = true; number = true; signcolumn = "yes"; cursorline = false; wrap = true; shiftwidth = 4; tabstop = 4; expandtab = true; list = true; clipboard = "unnamedplus"; spell = true; spelllang = [ "pl" "en" ]; }; colorschemes.catppuccin = { enable = true; settings.flavour = "mocha"; }; keymaps = [ { mode = [ "n" "v" ]; key = ""; action = ""; options.silent = true; } { mode = "x"; key = ">"; action = ">gv"; options.desc = "Shift code right"; } { mode = "x"; key = "<"; action = "ff" = { action = "find_files"; options.desc = "Telescope find files"; }; "fg" = { action = "git_files"; options.desc = "Telescope find git files"; }; }; }; harpoon = { enable = true; enableTelescope = true; }; lsp = { enable = true; servers = { # script lua_ls.enable = true; # web cssls.enable = true; html.enable = true; emmet_ls.enable = true; friendly-snippets.enable = true; # dev clangd.enable = true; pylsp = { enable = true; settings = { plugins = { ruff = { enabled = true; format = [ "I" ]; }; pylsp_mypy.enabled = true; jedi_completion.enabled = true; jedi_definition.enabled = true; }; }; }; rust_analyzer = { enable = true; installCargo = true; installRustc = true; }; # nix nil_ls.enable = true; # other marksman.enable = true; }; keymaps = { lspBuf = { "gd" = "definition"; "gi" = "implementation"; "ca" = "code_action"; "cf" = "format"; "r" = "rename"; }; }; }; lsp-format.enable = true; luasnip.enable = true; treesitter = { enable = true; settings = { highlight.enable = true; indent.enable = false; }; }; cursorline = { enable = true; timeout = 0; }; mini-indentscope = { enable = true; settings.draw.delay = 0; }; cmp = { enable = true; settings = { snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; sources = [ { name = "nvim_lsp"; } { name = "luasnip"; } { name = "buffer"; } ]; mapping = { "" = "cmp.mapping.select_prev_item()"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping.abort()"; }; window = { documentation = { border = "rounded"; }; }; }; }; }; extraConfigLua = '' vim.diagnostic.config({ virtual_text = { prefix = "●", spacing = 2, source = "if_many", } }); ''; }; }