Files
nixconfig/modules/home-manager/nixvim.nix
T

104 lines
2.4 KiB
Nix

{ pkgs, inputs, ... }:
{
programs.nixvim = {
enable = true;
# same nixpkgs as the flake's `follows`, silences nixvim's pin warning
nixpkgs.source = inputs.nixpkgs;
# 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 = " ";
# 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 = {
"<leader>ff" = "find_files";
"<leader>fg" = "live_grep";
"<leader>fb" = "buffers";
"<leader>fh" = "help_tags";
};
};
plugins.lsp = {
enable = true;
servers.tinymist = {
enable = true;
settings = {
formatterMode = "typstyle";
exportPdf = "onSave";
semanticTokens = "disable"; # treesitter handles highlighting better
};
};
servers.pyright.enable = true;
servers.ruff.enable = true;
keymaps.lspBuf = {
"<leader>K" = "hover";
"<leader>gd" = "definition";
"<leader>gr" = "references";
"<leader>f" = "format";
"<leader>rn" = "rename";
"<leader>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;
};
};
};
# telescope live_grep
home.packages = [ pkgs.ripgrep ];
}