Files
nix-config/home/programs/neovim.nix
T

100 lines
2.1 KiB
Nix

{ lib, stable, ... }:
{
programs.nixvim = {
enable = true;
dependencies.ripgrep.enable = true;
dependencies.fd.enable = true;
colorschemes.catppuccin.enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
opts = {
number = true;
relativenumber = true;
shiftwidth = 4;
mouse = "";
};
globals.mapleader = " ";
lsp = {
servers = {
rust_analyzer = {
enable = true;
};
lua_ls.enable = true;
nil_ls.enable = true;
tinymist = {
enable = true;
config = {
formatterMode = "typstyle";
};
};
clangd = {
enable = true;
config = {
filetypes = [ "c" ];
};
};
};
};
plugins.lsp.enable = true;
# There has been some drama, the repo was archived and stuff.
# plugins.tresitter.enable = true;
plugins.telescope.enable = true;
plugins.fidget.enable = true;
plugins.cmp = {
enable = false;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
];
}
// lib.optionalAttrs (!stable) {
autoEnableSources = true;
};
keymaps = [
{
key = "<leader>fg";
action = "<cmd>Telescope live_grep<CR>";
}
{
key = "<leader>ff";
action = "<cmd>Telescope find_files<CR>";
}
];
plugins.web-devicons.enable = true;
lsp.keymaps = [
{
key = "<leader>fm";
lspBufAction = "format";
}
{
key = "<leader>gd";
lspBufAction = "definition";
}
{
key = "<leader>gD";
lspBufAction = "references";
}
{
key = "<leader>gt";
lspBufAction = "type_definition";
}
{
key = "<leader>gi";
lspBufAction = "implementation";
}
{
key = "<leader>K";
lspBufAction = "hover";
}
];
}
// lib.optionalAttrs (false) {
plugins.lsp-format = {
enable = true;
lspServersToEnable = "all";
};
};
}