niksos/modules/tui/neovim.nix

164 lines
5.5 KiB
Nix
Raw Normal View History

2023-09-08 16:10:15 +02:00
{
config,
inputs,
lib,
pkgs,
...
2024-03-24 14:05:27 +01:00
}: with lib; let
cfg = config.myOptions.programs.neovim;
2024-04-14 18:49:29 +02:00
inherit (config.myOptions.other.system) username;
2023-10-13 21:04:24 +02:00
in {
2024-04-05 22:59:32 +02:00
options.myOptions.programs.neovim.enable = mkEnableOption "neovim";
2023-11-25 17:12:09 +01:00
config = mkIf cfg.enable {
environment.sessionVariables = {
EDITOR = "nvim";
};
home-manager.users.${username} = {
imports = [ inputs.nvf.homeManagerModules.default ];
2023-11-25 17:12:09 +01:00
programs.neovim-flake = {
enable = true;
settings.vim = {
package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.neovim;
viAlias = false;
vimAlias = false;
enableLuaLoader = true;
scrollOffset = 7;
preventJunkFiles = true;
tabWidth = 4;
autoIndent = false;
cmdHeight = 1;
useSystemClipboard = false;
2023-11-25 17:12:09 +01:00
# a fix for the weird treesitter thingy
syntaxHighlighting = false;
theme = {
enable = true;
name = "catppuccin";
style = "mocha";
transparent = true;
};
maps = {
normal = {
"<leader>v" = {
2024-04-18 21:52:41 +02:00
action = "<CMD>Neotree toggle<CR>";
silent = true;
};
"<leader>m" = {
action = "<CMD>MarkdownPreviewToggle<CR>";
silent = true;
};
};
};
2024-04-18 21:52:41 +02:00
filetree.neo-tree = {
enable = true;
};
statusline.lualine = {
enable = true;
theme = "catppuccin";
};
extraPlugins = with pkgs.vimPlugins; {
zen-mode.package = zen-mode-nvim;
};
treesitter = {
enable = true;
fold = true;
context.enable = true;
};
autocomplete = {
enable = true;
alwaysComplete = false;
};
# TODO neo-tree
terminal.toggleterm = {
enable = true;
setupOpts.direction = "float";
mappings.open = "<C-\>";
# TODO shading_factor
# TODO shade_terminals
# TODO size
};
git = {
enable = true;
gitsigns = {
enable = true;
# TODO enable / disable all the settings
};
};
lsp = {
enable = true;
lspSignature.enable = true;
lspconfig.enable = true;
lsplines.enable = true;
mappings = {
addWorkspaceFolder = "<leader>wa";
codeAction = "<leader>a";
format = "<C-f>";
goToDeclaration = "gD";
goToDefinition = "gd";
hover = "K";
listImplementations = "gi";
listReferences = "gr";
listWorkspaceFolders = "<leader>wl";
nextDiagnostic = "<leader>k";
previousDiagnostic = "<leader>j";
openDiagnosticFloat = "<leader>e";
removeWorkspaceFolder = "<leader>wr";
renameSymbol = "<leader>r";
signatureHelp = "<C-k>";
};
};
languages = {
enableDAP = true;
enableExtraDiagnostics = true;
enableFormat = true;
enableLSP = true;
enableTreesitter = true;
bash.enable = true;
clang = {
enable = true;
cHeader = true;
};
java.enable = true;
markdown.enable = true;
nix.enable = true;
rust = {
enable = true;
crates.enable = true;
2023-12-21 13:53:58 +01:00
};
};
utility = {
motion.leap.enable = true;
preview.markdownPreview.enable = true;
# TODO settings.theme = "dark";
2024-02-14 13:21:18 +01:00
};
visuals.fidget-nvim.enable = true;
# TODO laytan/cloak.nvim
telescope.enable = true;
comments.comment-nvim.enable = true;
# TODO learn and add harpoon
};
2023-11-25 17:12:09 +01:00
};
2023-09-08 16:10:15 +02:00
};
};
}