{ pkgs, config, lib, ... }: { ################################################# # Packages ################################################# home.packages = with pkgs; [ zathura ripgrep fd lazygit ]; ################################################# # Neovim ################################################# programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; ################################################# # Plugins ################################################# plugins = with pkgs.vimPlugins; [ # UI / Theme catppuccin-nvim nvim-web-devicons which-key-nvim # Syntax (IDE-style highlighting) (nvim-treesitter.withPlugins (p: [ p.lua p.nix p.rust p.python p.bash p.latex p.c ])) # File Navigation telescope-nvim plenary-nvim nvim-tree-lua # Terminal / Git toggleterm-nvim # Writing / LaTeX vimtex orgmode # Start screen { plugin = vim-startify; config = "let g:startify_change_to_vcs_root = 0"; } ]; ################################################# # Lua Configuration ################################################# extraLuaConfig = '' ------------------------------------------------- -- LEADER ------------------------------------------------- vim.g.mapleader = " " ------------------------------------------------- -- BASIC OPTIONS ------------------------------------------------- vim.opt.number = true vim.opt.relativenumber = true vim.opt.clipboard = "unnamedplus" vim.opt.showtabline = 2 vim.o.timeout = true vim.o.timeoutlen = 300 ------------------------------------------------- -- THEME ------------------------------------------------- require("catppuccin").setup({ flavour = "mocha", transparent_background = false, }) vim.cmd.colorscheme("catppuccin") ------------------------------------------------- -- TREESITTER (IDE-style syntax highlighting) ------------------------------------------------- require("nvim-treesitter.configs").setup({ highlight = { enable = true, additional_vim_regex_highlighting = false, }, indent = { enable = true }, incremental_selection = { enable = true, keymaps = { init_selection = "", node_incremental = "", node_decremental = "", }, }, }) ------------------------------------------------- -- TELESCOPE ------------------------------------------------- local builtin = require("telescope.builtin") require("telescope").setup({ defaults = { layout_strategy = "horizontal", layout_config = { prompt_position = "top" }, sorting_strategy = "ascending", }, }) vim.keymap.set("n", "", builtin.find_files) 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) ------------------------------------------------- -- WHICH-KEY ------------------------------------------------- require("which-key").setup({}) ------------------------------------------------- -- TABS ------------------------------------------------- vim.keymap.set("n", "gt", "tabnew") vim.keymap.set("n", "gc", "tabclose") vim.keymap.set("n", "gn", "tabnext") vim.keymap.set("n", "gp", "tabprevious") vim.keymap.set("n", "g0", "tabfirst") vim.keymap.set("n", "g$", "tablast") ------------------------------------------------- -- NVIM-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 api.config.mappings.default_on_attach(bufnr) -- open file in new tab 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, }) vim.keymap.set("n", "e", "NvimTreeToggle") ------------------------------------------------- -- TOGGLETERM + LAZYGIT ------------------------------------------------- require("toggleterm").setup({ direction = "float", float_opts = { border = "rounded" }, }) local Terminal = require("toggleterm.terminal").Terminal local lazygit = Terminal:new({ cmd = "lazygit", hidden = true, direction = "float", float_opts = { border = "rounded" }, }) vim.keymap.set("n", "gg", function() lazygit:toggle() end) ------------------------------------------------- -- ORGMODE ------------------------------------------------- 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", }) ------------------------------------------------- -- VIMTEX ------------------------------------------------- vim.g.vimtex_view_method = "zathura" vim.g.vimtex_compiler_latexmk = { executable = "latexmk", options = { "-pdf", "-interaction=nonstopmode", "-synctex=1", "-file-line-error", }, } vim.g.vimtex_syntax_enabled = 0 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.textwidth = 0 end, }) ''; }; }