{ pkgs, config, lib, ... }: { home.packages = with pkgs; [ zathura ripgrep fd ]; programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; plugins = with pkgs.vimPlugins; [ vimtex (nvim-treesitter.withPlugins (p: [ p.lua p.nix p.rust p.python p.bash p.latex p.c])) # Syntax highlighting + language servers telescope-nvim # File search plenary-nvim # Lua functions which-key-nvim # Keybind suggestions catppuccin-nvim # Catppuccin theme nvim-tree-lua # Tree file browser nvim-web-devicons # Icons orgmode # Obsidian.md stuff for neovim toggleterm-nvim # Togglable terminal in Neovim { plugin = vim-startify; # Add the plugin and its coresponding config config = "let g:startify_change_to_vcs_root = 0"; } ]; extraLuaConfig = '' vim.g.mapleader = " " vim.opt.number = true vim.opt.relativenumber = true vim.opt.clipboard = "unnamedplus" vim.o.timeout = true vim.o.timeoutlen = 300 vim.cmd.colorscheme("catppuccin") -- KEYBINDS -- vim.keymap.set("n", "", function() require("telescope.builtin").find_files({ cwd = vim.loop.cwd(), }) end, { desc = "Find files (cwd)" }) -- TAB KEYBINDS (t-based navigation) -- Close tab vim.keymap.set("n", "tc", "tabclose", { desc = "Close tab" }) -- Next tab vim.keymap.set("n", "tn", "tabnext", { desc = "Next tab" }) -- Previous tab vim.keymap.set("n", "tp", "tabprevious", { desc = "Previous tab" }) -- First tab vim.keymap.set("n", "t0", "tabfirst", { desc = "First tab" }) -- Last tab vim.keymap.set("n", "t$", "tablast", { desc = "Last tab" }) -- Catppuccin theme require("catppuccin").setup({ flavour = "mocha", -- latte, frappe, macchiato, mocha transparent_background = false, }) -- Treesitter require("nvim-treesitter.configs").setup({ highlight = { enable = true }, indent = { enable = true }, }) -- Telescope local telescope = require("telescope") local builtin = require("telescope.builtin") telescope.setup({ defaults = { layout_strategy = "horizontal", layout_config = { prompt_position = "top", }, sorting_strategy = "ascending", winblend = 0, }, }) -- Which-key keybind show require("which-key").setup({ -- Optional custom config here }) -- Telescope keymaps vim.keymap.set("n", "ff", builtin.find_files) vim.keymap.set("n", "fg", builtin.live_grep) vim.keymap.set("n", "fb", builtin.buffers) vim.keymap.set("n", "fh", builtin.help_tags)) -- File tree require("nvim-tree").setup({ view = { width = 30, side = "left", }, renderer = { group_empty = true, }, filters = { dotfiles = false, git_ignored = true, }, git = { enable = true, ignore = true, }, on_attach = function(bufnr) local api = require("nvim-tree.api") local function opts(desc) return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true, } end -- load default mappings first api.config.mappings.default_on_attach(bufnr) -- open file in new tab with "t" vim.keymap.set("n", "t", function() local node = api.tree.get_node_under_cursor() if node and node.type == "file" then vim.cmd("tabnew " .. node.absolute_path) end end, opts("Open in new tab")) end, }) -- Keybind to toggle vim.keymap.set("n", "e", "NvimTreeToggle") -- Orgmode setup require('orgmode').setup({ org_agenda_files = {'~/Documents/2. Writing/0. SOČ/org/*.org'}, org_default_notes_file = '~/Documents/2. Writing/0. SOČ/org/index.org', }) ------------------------------------------------------------------ -- LaTeX configuration (from old LazyVim config) ------------------------------------------------------------------ -- vimtex settings vim.g.vimtex_view_method = "zathura" vim.g.vimtex_compiler_latexmk = { build_dir = "", executable = "latexmk", options = { "-pdf", "-interaction=nonstopmode", "-synctex=1", "-file-line-error", }, } -- Let treesitter handle LaTeX highlighting vim.g.vimtex_syntax_enabled = 0 -- ToggleTerm setup require("toggleterm").setup({ size = 20, open_mapping = [[]], direction = "float", float_opts = { border = "rounded", }, }) -- Lazygit floating terminal local Terminal = require("toggleterm.terminal").Terminal local lazygit = Terminal:new({ cmd = "lazygit", hidden = true, direction = "float", float_opts = { border = "rounded", }, }) function _LAZYGIT_TOGGLE() lazygit:toggle() end vim.keymap.set("n", "gg", _LAZYGIT_TOGGLE, { desc = "Lazygit" }) -- Auto settings for LaTeX files vim.api.nvim_create_autocmd("FileType", { pattern = "tex", callback = function() vim.opt_local.wrap = true vim.opt_local.linebreak = true vim.opt_local.breakindent = true vim.opt_local.breakindentopt = "shift:2" vim.opt_local.textwidth = 0 end, }) ''; }; }