{ config, pkgs, inputs, ... }: { programs.nixvim = { enable = true; # set aliases viAlias = true; vimAlias = true; # default vim options opts = { number = true; relativenumber = true; shiftwidth = 2; tabstop = 2; expandtab = true; incsearch = true; }; # nvim mapleader for all command below globals.mapleader = " "; # set colorscheme to nord colorschemes.nord.enable = true; # nvim plugins plugins.indent-blankline.enable = true; plugins.lualine.enable = true; plugins.nix.enable = true; plugins.nvim-tree.enable = true; plugins.web-devicons.enable = true; plugins.telescope = { enable = true; keymaps = { "ff" = "find_files"; "fg" = "live_grep"; "fb" = "buffers"; "fh" = "help_tags"; }; }; plugins.lsp = { enable = true; servers.tinymist = { enable = true; settings = { formatterMode = "typstyle"; exportPdf = "onSave"; semanticTokens = "disable"; # treesitter handles highlighting better }; }; keymaps.lspBuf = { "K" = "hover"; "gd" = "definition"; "gr" = "references"; "f" = "format"; "rn" = "rename"; "ca" = "code_action"; }; }; plugins.treesitter = { enable = true; settings.ensure_installed = [ "markdown" "markdown_inline" "typst" ]; }; plugins.typst-preview = { enable = true; settings = { open_cmd = "firefox %s"; dependencies_bin = { tinymist = "tinymist"; websocat = null; }; }; }; plugins.typst-vim = { enable = true; settings.pdf_viewer = "zathura"; }; plugins.render-markdown = { enable = true; settings = { # render in normal mode, raw source in insert render_modes = [ "n" "c" "t"]; pipe_table.preset = "round"; heading.width = "block"; file_types = [ "markdown" ]; completions.lsp.enabled = true; }; }; }; # install dependencies home.packages = with pkgs; [ ripgrep ]; }