nvf
neovim distribution
#1
366
home/neovim.nix
366
home/neovim.nix
@@ -1,22 +1,356 @@
|
|||||||
{ nvf, ...}: {
|
{
|
||||||
|
nvf,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
nvf.homeManagerModules.default
|
nvf.homeManagerModules.default
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.nvf.enable = true;
|
programs.nvf = {
|
||||||
|
# enable nvf neovim distribution
|
||||||
|
enable = true;
|
||||||
|
|
||||||
### --- OLD NEOVIM CONFIG BASED ON LUA CONFIG ---
|
# set stuff!
|
||||||
#
|
settings = {
|
||||||
# programs.neovim = {
|
vim = {
|
||||||
# enable = true;
|
# setting alias to _always_ use neovim
|
||||||
# defaultEditor = true;
|
viAlias = true;
|
||||||
# vimAlias = true;
|
vimAlias = true;
|
||||||
# };
|
|
||||||
#
|
# useSystemClipboard = true;
|
||||||
# xdg.configFile = {
|
|
||||||
# nvim = {
|
# setting some nvim settings that are not in nvf
|
||||||
# onChange = "nvim --headless -c 'if exists(\":LuaCacheClear\") | :LuaCacheClear' +quitall";
|
luaConfigPost = ''
|
||||||
# source = dirs.defaults + /nvim;
|
vim.opt.tabstop = 2
|
||||||
# };
|
vim.opt.shiftwidth = 2
|
||||||
# };
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.smarttab = true
|
||||||
|
vim.opt.scrolloff = 20;
|
||||||
|
'';
|
||||||
|
|
||||||
|
# clipboard configuration
|
||||||
|
clipboard = {
|
||||||
|
enable = true;
|
||||||
|
providers = {
|
||||||
|
wl-copy.enable = true;
|
||||||
|
};
|
||||||
|
registers = "unnamed,unnamedplus";
|
||||||
|
};
|
||||||
|
|
||||||
|
# LSP configuration
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
formatOnSave = true;
|
||||||
|
lspkind.enable = true;
|
||||||
|
lspconfig.enable = true;
|
||||||
|
lightbulb.enable = false;
|
||||||
|
lspsaga.enable = false;
|
||||||
|
trouble.enable = false;
|
||||||
|
lspSignature.enable = true;
|
||||||
|
otter-nvim.enable = false;
|
||||||
|
nvim-docs-view.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# debugger configuration
|
||||||
|
debugger = {
|
||||||
|
nvim-dap = {
|
||||||
|
enable = true;
|
||||||
|
ui.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# disable spellcheck
|
||||||
|
spellcheck.enable = false;
|
||||||
|
|
||||||
|
# enable diagnostics
|
||||||
|
diagnostics = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
underline = true;
|
||||||
|
virtual_lines = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# language specific configuartion
|
||||||
|
languages = {
|
||||||
|
enableFormat = true;
|
||||||
|
enableTreesitter = true;
|
||||||
|
enableExtraDiagnostics = true;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
enable = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
format = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.alejandra;
|
||||||
|
};
|
||||||
|
extraDiagnostics = {
|
||||||
|
enable = true;
|
||||||
|
types = ["statix"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
markdown.enable = true;
|
||||||
|
bash.enable = true;
|
||||||
|
clang.enable = true;
|
||||||
|
css = {
|
||||||
|
enable = true;
|
||||||
|
format = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.prettierd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
html.enable = true;
|
||||||
|
sql.enable = true;
|
||||||
|
java.enable = true;
|
||||||
|
kotlin = {
|
||||||
|
enable = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
extraDiagnostics.enable = true;
|
||||||
|
};
|
||||||
|
ts = {
|
||||||
|
enable = true;
|
||||||
|
format = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.prettierd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lua.enable = false;
|
||||||
|
python.enable = true;
|
||||||
|
rust = {
|
||||||
|
enable = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
dap.enable = true;
|
||||||
|
format.enable = true;
|
||||||
|
crates.enable = true;
|
||||||
|
};
|
||||||
|
csharp = {
|
||||||
|
enable = true;
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
server = "csharp_ls";
|
||||||
|
};
|
||||||
|
treesitter.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# statusline configuration
|
||||||
|
statusline = {
|
||||||
|
lualine = {
|
||||||
|
enable = true;
|
||||||
|
theme = "catppuccin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# theme configuration
|
||||||
|
theme = {
|
||||||
|
enable = true;
|
||||||
|
name = "catppuccin";
|
||||||
|
style = "mocha";
|
||||||
|
transparent = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# visual/ui configuration
|
||||||
|
visuals = {
|
||||||
|
nvim-scrollbar.enable = false;
|
||||||
|
nvim-web-devicons.enable = true;
|
||||||
|
nvim-cursorline.enable = true;
|
||||||
|
cinnamon-nvim.enable = true;
|
||||||
|
fidget-nvim.enable = false;
|
||||||
|
|
||||||
|
highlight-undo.enable = true;
|
||||||
|
indent-blankline.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
borders.enable = true;
|
||||||
|
noice.enable = false;
|
||||||
|
colorizer.enable = true;
|
||||||
|
modes-nvim.enable = false; # the theme looks terrible with catppuccin
|
||||||
|
illuminate.enable = true;
|
||||||
|
breadcrumbs = {
|
||||||
|
enable = true;
|
||||||
|
navbuddy.enable = false;
|
||||||
|
};
|
||||||
|
fastaction.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# autocomplete/intellisense configuration
|
||||||
|
autopairs.nvim-autopairs.enable = true;
|
||||||
|
autocomplete.nvim-cmp = {
|
||||||
|
enable = true;
|
||||||
|
sources = {
|
||||||
|
nvim-lsp = "nvim_lsp";
|
||||||
|
async-path = "async_path";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# tabline configuration
|
||||||
|
tabline = {
|
||||||
|
nvimBufferline.enable = true;
|
||||||
|
nvimBufferline.mappings = {
|
||||||
|
closeCurrent = "<leader>x";
|
||||||
|
cycleNext = "<tab>";
|
||||||
|
cyclePrevious = "<S-tab>";
|
||||||
|
moveNext = null;
|
||||||
|
movePrevious = null;
|
||||||
|
sortByDirectory = null;
|
||||||
|
sortByExtension = null;
|
||||||
|
sortById = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
treesitter = {
|
||||||
|
context = {
|
||||||
|
enable = true;
|
||||||
|
setupOpts.max_lines = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
binds = {
|
||||||
|
whichKey.enable = true;
|
||||||
|
cheatsheet.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
telescope.enable = true;
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
gitsigns.enable = true;
|
||||||
|
gitsigns.codeActions.enable = false; # throws an annoying debug message
|
||||||
|
git-conflict.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
comments = {
|
||||||
|
comment-nvim.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# discord integration
|
||||||
|
presence = {
|
||||||
|
neocord.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
notify = {
|
||||||
|
nvim-notify.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
dashboard = {
|
||||||
|
dashboard-nvim.enable = false;
|
||||||
|
alpha.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
filetree = {
|
||||||
|
neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
setupOpts.enable_refresh_on_write = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# terminal integration configuration
|
||||||
|
terminal = {
|
||||||
|
toggleterm = {
|
||||||
|
enable = true;
|
||||||
|
lazygit.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# notes!
|
||||||
|
notes = {
|
||||||
|
obsidian = {
|
||||||
|
enable = true; # more to be added here
|
||||||
|
setupOpts = {
|
||||||
|
workspaces = [
|
||||||
|
{
|
||||||
|
name = "notes";
|
||||||
|
path = "~/Source/notes";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
todo-comments.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ai assistant configuration
|
||||||
|
assistant = {
|
||||||
|
copilot = {
|
||||||
|
enable = true;
|
||||||
|
cmp.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# custom key mappings
|
||||||
|
keymaps = [
|
||||||
|
# Ctrl-S save
|
||||||
|
{
|
||||||
|
mode = ["n" "v" "i"];
|
||||||
|
key = "<C-s>";
|
||||||
|
action = "<cmd>w<CR>";
|
||||||
|
}
|
||||||
|
|
||||||
|
# toggle file explorer
|
||||||
|
{
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<leader><o>";
|
||||||
|
action = "<cmd>Neotree toggle left<CR>";
|
||||||
|
}
|
||||||
|
|
||||||
|
# copy/cut/paste to system clipboard
|
||||||
|
# {
|
||||||
|
# mode = ["v"];
|
||||||
|
# key = "<sc-c>";
|
||||||
|
# action = ''
|
||||||
|
# "+y
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# mode = ["n"];
|
||||||
|
# key = "<sc-v>";
|
||||||
|
# action = ''
|
||||||
|
# l"+P
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# mode = ["v"];
|
||||||
|
# key = "<sc-v>";
|
||||||
|
# action = ''
|
||||||
|
# "+P
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# mode = ["c"];
|
||||||
|
# key = "<sc-v>";
|
||||||
|
# action = ''
|
||||||
|
# <C-o>l<C-o>"+<C-o>P<C-o>
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# mode = ["i"];
|
||||||
|
# key = "<sc-v>";
|
||||||
|
# action = ''
|
||||||
|
# <ESC>l"+Pli
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# mode = ["t"];
|
||||||
|
# key = "<sc-v>";
|
||||||
|
# action = ''
|
||||||
|
# <C-\><C-n>"+Pi
|
||||||
|
# '';
|
||||||
|
# noremap = true;
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
|
||||||
|
### end of settings
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user