dotfiles/nix/configs/nvim.nix
2024-07-31 07:17:52 +02:00

123 lines
2.4 KiB
Nix

{ pkgs, ... }: {
programs.nixvim = {
enable = true;
#TODO floaterm
# test tool
plugins.neotest = {
enable = true;
};
# TODO nvim-lspconfig
# a snippet engine
plugins.luasnip = {
enable = true;
};
# TODO lsp_signature idk if it exists
#plugins.lsp_signature = {
# enable = true;
#};
# TODO gen.nvim not in nixvim
# highlites colors (like #FFF)
plugins.nvim-colorizer = {
enable = true;
};
# todo-comments
# TODO feline-nvim and theme for it
# inline git blame
plugins.gitsigns = {
enable = true;
settings = {
current_line_blame = true;
trouble = true;
};
};
# inline error display
plugins.trouble = {
enable = true;
};
#plugins.nvimtree.enable = true;
# when adding " or any letter the selected word gets wrapped in it
plugins.surround.enable = true;
# file explorer
plugins.chadtree = {
enable = true;
};
# a cool summary searcher
plugins.navbuddy.enable = true;
# language server
plugins.lsp = {
enable = true;
servers.rust-analyzer = {
enable = false;
# for devshells
installRustc = false;
installCargo = false;
};
};
# a completion engine using LSP
# TODO language detection
plugins.coq-nvim = {
enable = true;
installArtifacts = true;
settings.completion.always = true;
# TODO start with nvim
};
# languages
plugins.rustaceanvim.enable = true;
plugins.nix.enable = true;
keymaps = [
{
key = "<leader>v";
action = "<cmd>CHADopen --always-focus<cr>";
}
{
key = "<leader>e";
action = "<cmd>CHADopen<cr>";
}
];
opts = {
number = true;
relativenumber = true;
};
globals.mapleader = " ";
# TODO shades of purple colorscheme
extraPlugins = [ pkgs.vimPlugins.gruvbox ];
colorscheme = "gruvbox";
# extraPlugins = [
# pkgs.vimUtils.buildVimPlugin
# {
# pname = "shades-of-purple";
# version = "1.1.1";
# src = pkgs.fetchFromGitHub {
# owner = "Rigellute";
# repo = "shades-of-purple.vim";
# rev = "e806d38190a6a2e8b9244824c2953d6567f141f3";
# hash = "sha256-iiGASgVlIXnnUNBlp9viKgDBfHiOP5P/yJx9XyELT9g=";
# };
# buildScript = ":";
# }
# ];
};
}