{ pkgs, ... }: { programs.nixvim = { enable = true; defaultEditor = true; colorschemes.catppuccin = { enable = true; settings = { flavour = "mocha"; term_colors = true; }; }; globals = { mapleader = " "; maplocalleader = "\\"; }; opts = { number = true; relativenumber = true; # Tabs tabstop = 2; softtabstop = 2; shiftwidth = 2; expandtab = true; smartindent = true; # Search ignorecase = true; smartcase = true; # UI cursorline = true; termguicolors = true; scrolloff = 8; # System mouse = "a"; clipboard = "unnamedplus"; undofile = true; }; plugins = { lualine.enable = true; bufferline.enable = true; web-devicons.enable = true; which-key.enable = true; # Treesitter treesitter = { enable = true; settings = { highlight.enable = true; indent.enable = true; }; }; # File Explorer neo-tree = { enable = true; closeIfLastWindow = true; }; # Fuzzy Finder telescope = { enable = true; keymaps = { "ff" = "find_files"; "fg" = "live_grep"; "fb" = "buffers"; "fh" = "help_tags"; }; }; # LSP & Completion lsp = { enable = true; servers = { nixd.enable = true; # Nix lua_ls.enable = true; # Lua pyright.enable = true; # Python bashls.enable = true; # Bash html.enable = true; # HTML cssls.enable = true; # CSS ts_ls.enable = true; # TS/JS }; }; cmp = { enable = true; autoEnableSources = true; settings = { sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ]; mapping = { "" = "cmp.mapping.complete()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.select_prev_item()"; }; }; }; cmp-nvim-lsp.enable = true; cmp-path.enable = true; cmp-buffer.enable = true; # UI Improvements notify = { enable = true; settings.background_colour = "#000000"; }; noice = { enable = true; settings = { notify.enabled = true; presets = { bottom_search = true; command_palette = true; long_message_to_split = true; inc_rename = false; lsp_doc_border = false; }; }; }; }; keymaps = [ { mode = "n"; key = "e"; action = "Neotree toggle"; options.desc = "Toggle Explorer"; } { mode = "n"; key = ""; action = "w"; options.desc = "Save File"; } ]; }; }