1

Update nixvim config

This commit is contained in:
2024-06-01 12:57:18 +02:00
parent 98b1f420ab
commit 9acd886cf7
3 changed files with 219 additions and 148 deletions

View File

@ -183,6 +183,7 @@ rec {
neovim = { neovim = {
enable = true; enable = true;
alias = true; alias = true;
neovide = true;
}; };
# lazyvim = { # lazyvim = {
@ -417,8 +418,6 @@ rec {
lm_sensors lm_sensors
acpica-tools # Dump ACPI tables etc. acpica-tools # Dump ACPI tables etc.
python311
# Web stuff # Web stuff
signal-desktop signal-desktop
# element-desktop # matrix client # element-desktop # matrix client
@ -460,17 +459,20 @@ rec {
# kbibtex # bibtex editor # kbibtex # bibtex editor
# vale # Why not lint everything (including english)? # vale # Why not lint everything (including english)?
# TODO: Development module # TODO: Development module, I need multiple modules to be able to add python packages to a single python install...
# TODO: Does this conflict with devshell pythons? If so, use lowPrio (python311.withPackages (p: with p; [
# TODO: Merge this somehow? I want multiple pythons to merge to one with all the packages...
# (python310.withPackages (p: with p; [
# p.rich # p.rich
# p.numpy # p.numpy
# p.scipy # p.scipy
# p.matplotlib # p.matplotlib
# p.pillow # for ranger # p.pillow # for ranger
# p.pygments # for emacs # p.pygments # for emacs
# ]))
# For nvim CHADtree
pyyaml
std2
pynvim
]))
jetbrains.clion jetbrains.clion
jetbrains.rust-rover jetbrains.rust-rover
jetbrains.pycharm-professional jetbrains.pycharm-professional

View File

@ -19,8 +19,13 @@ in {
VISUAL = "nvim"; VISUAL = "nvim";
}; };
home.packages = with pkgs; [ home.packages = with pkgs;
builtins.concatLists [
(optionals cfg.neovide [neovide])
[
(pkgs.ripgrep.override {withPCRE2 = true;}) (pkgs.ripgrep.override {withPCRE2 = true;})
# NOTE: Requires python311packages.{pyyaml, std2, pynvim} in home/christoph/default.nix for chadtree
# Linters # Linters
clippy # rust clippy # rust
@ -39,8 +44,29 @@ in {
prettierd # html/css/js prettierd # html/css/js
# rustfmt # rustfmt
# clang-tools # clang-tools
]
]; ];
# NOTE: Use nixvim.extraConfigLua configuration
# home.file.".config/neovide/config.toml".text = ''
# [font]
# normal = ["JetBrainsMono Nerd Font Mono"] # Will use the bundled Fira Code Nerd Font by default
# size = 13.0
#
# fork = true
# frame = "full" # full, buttonless, none
# idle = true
# maximized = false
# # neovim-bin = "/usr/bin/nvim" # in reality found dynamically on $PATH if unset
# no-multigrid = false
# srgb = false
# tabs = true
# theme = "light"
# title-hidden = true
# vsync = true
# wsl = false
# '';
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
@ -115,7 +141,6 @@ in {
}; };
# TODO: Half of the neovide config doesn't work # TODO: Half of the neovide config doesn't work
# TODO: LSP Window doesn't work. Noice?
extraConfigLua = '' extraConfigLua = ''
local opt = vim.opt local opt = vim.opt
local g = vim.g local g = vim.g
@ -123,20 +148,23 @@ in {
-- Neovide -- Neovide
if g.neovide then if g.neovide then
g.neovide_fullscreen = false require("notify").notify("Running in NeoVide")
g.neovide_hide_mouse_when_typing = false
g.neovide_refresh_rate = 144
-- g.neovide_cursor_vfx_mode = "ripple"
g.neovide_cursor_animate_command_line = true g.neovide_cursor_animate_command_line = true
g.neovide_cursor_animate_in_insert_mode = true g.neovide_cursor_animate_in_insert_mode = true
g.neovide_cursor_vfx_particle_lifetime = 5.0 g.neovide_fullscreen = false
g.neovide_cursor_vfx_particle_density = 14.0 g.neovide_hide_mouse_when_typing = false
g.neovide_cursor_vfx_particle_speed = 12.0 g.neovide_padding_top = 0
-- g.neovide_transparency = 0.8 g.neovide_padding_bottom = 0
g.neovide_padding_right = 0
g.neovide_padding_left = 0
g.neovide_refresh_rate = 144
g.neovide_theme = 'light' g.neovide_theme = 'light'
-- Neovide Fonts -- Neovide Fonts
o.guifont = "JetBrainsMono Nerd Font:h13:Medium:i" o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
else
require("notify").notify("Not running in NeoVide")
end end
-- Hide inline diagnostics and show border -- Hide inline diagnostics and show border
@ -241,6 +269,12 @@ in {
action = "<Esc>\"+pi"; action = "<Esc>\"+pi";
options.desc = "Paste from clipboard"; options.desc = "Paste from clipboard";
} }
{
mode = "i";
key = "<C-v>";
action = "<Esc>\"+pi";
options.desc = "Paste from clipboard";
}
{ {
mode = "v"; mode = "v";
key = "<C-S-c>"; key = "<C-S-c>";
@ -261,12 +295,30 @@ in {
action = "<cmd>quitall<CR>"; action = "<cmd>quitall<CR>";
options.desc = "Quit"; options.desc = "Quit";
} }
{
mode = "n";
key = "<leader><Space>";
action = "<cmd>Telescope buffers<CR>";
options.desc = "Show open buffers";
}
{
mode = "n";
key = "<leader>S";
action = "<cmd>wa<CR>";
options.desc = "Save all buffers";
}
{ {
mode = "n"; mode = "n";
key = "<leader>f"; key = "<leader>f";
action = "<cmd>Telescope find_files<CR>"; action = "<cmd>Telescope find_files<CR>";
options.desc = "Find file"; options.desc = "Find file";
} }
{
mode = "n";
key = "<leader>o";
action = "<cmd>Telescope vim_options<CR>";
options.desc = "Show Vim options";
}
{ {
mode = "n"; mode = "n";
key = "<leader>u"; key = "<leader>u";
@ -279,6 +331,12 @@ in {
action = "<cmd>Telescope current_buffer_fuzzy_find<CR>"; action = "<cmd>Telescope current_buffer_fuzzy_find<CR>";
options.desc = "Find in current buffer"; options.desc = "Find in current buffer";
} }
{
mode = "n";
key = "<leader>n";
action = "<cmd>Telescope notify<CR>";
options.desc = "Show notify history";
}
{ {
mode = "n"; mode = "n";
key = "<leader>s"; key = "<leader>s";
@ -426,11 +484,17 @@ in {
key = "<leader>t"; key = "<leader>t";
action = "+toggle"; action = "+toggle";
} }
# {
# mode = "n";
# key = "<leader>tt";
# action = "<cmd>Neotree action=show toggle=true<CR>";
# options.desc = "Toggle NeoTree";
# }
{ {
mode = "n"; mode = "n";
key = "<leader>tt"; key = "<leader>tt";
action = "<cmd>Neotree action=show toggle=true<CR>"; action = "<cmd>CHADopen --nofocus<CR>";
options.desc = "Toggle NeoTree"; options.desc = "Toggle CHADtree";
} }
{ {
mode = "n"; mode = "n";
@ -438,6 +502,12 @@ in {
action = "<cmd>Navbuddy<CR>"; action = "<cmd>Navbuddy<CR>";
options.desc = "Toggle NavBuddy"; options.desc = "Toggle NavBuddy";
} }
{
mode = "n";
key = "<leader>td";
action = "<cmd>TroubleToggle<CR>";
options.desc = "Toggle Trouble";
}
# { # {
# mode = "n"; # mode = "n";
# key = "<leader>tg"; # key = "<leader>tg";
@ -459,13 +529,13 @@ in {
mode = "n"; mode = "n";
key = "<leader>gg"; key = "<leader>gg";
action = "<cmd>LazyGit<CR>"; action = "<cmd>LazyGit<CR>";
options.desc = "Toggle LazyGit"; options.desc = "Show LazyGit";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gm"; key = "<leader>gm";
action = "<cmd>GitMessenger<CR>"; action = "<cmd>GitMessenger<CR>";
options.desc = "Toggle GitMessenger"; options.desc = "Show GitMessenger";
} }
# { # {
# mode = "n"; # mode = "n";
@ -561,26 +631,6 @@ in {
]; ];
plugins = { plugins = {
# Status line, alternative to lualine
# airline = {
# enable = false;
#
# settings = {
# powerline_fonts = true;
# theme = "catppuccin";
# };
# };
# Auto-close parenthesis, alternative to nvim-autopairs
# autoclose = {
# enable = true;
# };
# Alternative to bufferline
# barbar = {
# enable = true;
# };
# Escape insert mode by pressing jk # Escape insert mode by pressing jk
better-escape = { better-escape = {
enable = true; enable = true;
@ -589,19 +639,12 @@ in {
timeout = 200; # In ms timeout = 200; # In ms
}; };
# Alternative to barbar
# bufferline = {
# enable = true;
# middleMouseCommand = "bdelete! %d";
# # rightMouseCommand = "BufferLineTogglePin";
# separatorStyle = "thin";
# };
# Directory tree # Directory tree
# chadtree = { chadtree = {
# enable = true; enable = true;
# };
theme.textColourSet = "nerdtree_syntax_dark";
};
# clangd-extensions = { # clangd-extensions = {
# enable = false; # enable = false;
@ -794,27 +837,10 @@ in {
# enable = false; # enable = false;
# }; # };
# Changes nvim UI components, alternative to Noice # TODO: Config
# dressing = { flash = {
# enable = false; enable = true;
# }; };
# Notifications + LSP progress, alternative to Noice
# fidget = {
# enable = true;
# };
# Git client
# fugitive = {
# enable = true;
# };
# Alternative to gitsigns
# gitgutter = {
# enable = true;
# grep.package = (pkgs.ripgrep.override {withPCRE2 = true;});
# grep.command = "rg";
# };
# Display message of commit that modified the current line # Display message of commit that modified the current line
gitmessenger = { gitmessenger = {
@ -831,11 +857,6 @@ in {
}; };
}; };
# Vim habit trainer, blocks keys
# hardtime = {
# enable = false;
# };
# Markdown etc. heading highlights # Markdown etc. heading highlights
headlines = { headlines = {
enable = true; enable = true;
@ -955,38 +976,69 @@ in {
# enable = false; # enable = false;
# }; # };
# Render diagnostics as virtual line overlay
# lsp-lines = {
# enable = true;
# };
# Statusline, alternative to airline # Statusline, alternative to airline
lualine = { lualine = {
enable = true; enable = true;
alwaysDivideMiddle = true; alwaysDivideMiddle = true;
globalstatus = true; globalstatus = true;
ignoreFocus = ["neo-tree"]; ignoreFocus = ["neo-tree" "chadtree"];
extensions = ["fzf"]; extensions = ["fzf" "chadtree" "neo-tree" "toggleterm" "trouble"];
sections = { sections = {
lualine_a = ["mode"]; lualine_a = [
{
name = "mode";
# extraConfig = {
# separator = {
# left = "";
# };
# right_padding = "2";
# };
}
];
lualine_b = ["branch" "diff" "diagnostics"]; lualine_b = ["branch" "diff" "diagnostics"];
lualine_c = ["filename"]; lualine_c = [
{
name = "filename";
extraConfig = {
path = 1;
};
}
];
lualine_x = ["filetype" "encoding" "fileformat"]; lualine_x = ["filetype" "encoding" "fileformat"];
lualine_y = ["progress"]; lualine_y = ["progress" "searchcount" "selectioncount"];
lualine_z = ["location" "searchcount" "selectioncount"]; lualine_z = [
{
name = "location";
# extraConfig = {
# separator = {
# right = "";
# };
# left_padding = "2";
# };
}
];
};
tabline = {
lualine_a = ["buffers"];
lualine_z = ["tabs"];
}; };
sectionSeparators = { sectionSeparators = {
left = ""; left = "";
right = ""; right = "";
# left = "";
# right = "";
}; };
componentSeparators = { componentSeparators = {
left = ""; left = "";
right = ""; right = "";
# left = "";
# right = "";
}; };
}; };
@ -1008,6 +1060,14 @@ in {
window.border = "rounded"; window.border = "rounded";
}; };
navic = {
enable = true;
lsp.autoAttach = true;
click = true;
highlight = true;
};
# Generate doc comments # Generate doc comments
# neogen = { # neogen = {
# enable = true; # enable = true;
@ -1018,32 +1078,32 @@ in {
# enable = false; # enable = false;
# }; # };
neo-tree = { # neo-tree = {
enable = true; # enable = true;
enableDiagnostics = true; # enableDiagnostics = true;
enableGitStatus = true; # enableGitStatus = true;
enableModifiedMarkers = true; # enableModifiedMarkers = true;
enableRefreshOnWrite = true; # enableRefreshOnWrite = true;
closeIfLastWindow = true; # closeIfLastWindow = true;
popupBorderStyle = "rounded"; # popupBorderStyle = "rounded";
buffers = { # buffers = {
bindToCwd = true; # bindToCwd = true;
followCurrentFile = { # followCurrentFile = {
enabled = true; # TODO: Doesn't work # enabled = true; # TODO: Doesn't work
}; # };
}; # };
window = { # window = {
width = 40; # width = 40;
height = 15; # height = 15;
autoExpandWidth = false; # autoExpandWidth = false;
mappings = { # mappings = {
"<space>" = "none"; # "<space>" = "none";
}; # };
}; # };
}; # };
# NeoVim UI refresh, alternative to fidget, dressing, notify and lspsaga # NeoVim UI refresh, alternative to fidget, dressing, notify and lspsaga
noice = { noice = {
@ -1086,13 +1146,14 @@ in {
popupmenu = { popupmenu = {
enabled = true; enabled = true;
backend = "nui"; backend = "nui"; # cmp completion is broken
}; };
# cmdline.enabled = false; # cmdline.enabled = false;
# messages.enabled = false; # messages.enabled = false;
routes = [ routes = [
# Hide inline search count info
{ {
filter = { filter = {
event = "msg_show"; event = "msg_show";
@ -1103,9 +1164,16 @@ in {
]; ];
}; };
# Alternative to noice.notify # TODO: Background color in terminal is borked
# Backend noice.notify
notify = { notify = {
enable = true; enable = true;
# backgroundColour = ''
# function()
# return vim.api.nvim_command_output("echo synIDattr(hlID("Normal"), "bg")")
# end
# '';
}; };
# Alternative to autoclose # Alternative to autoclose
@ -1123,11 +1191,6 @@ in {
enable = true; enable = true;
}; };
# File system explorer that is editable like a normal buffer
# oil = {
# enable = true;
# };
# Colorize paranthesis # Colorize paranthesis
rainbow-delimiters = { rainbow-delimiters = {
enable = true; enable = true;
@ -1218,10 +1281,15 @@ in {
enable = true; enable = true;
}; };
# Detect correct comment string, e.g. for inline langs
ts-context-commentstring = {
enable = true;
};
# Window listing detected linting/lsp problems # Window listing detected linting/lsp problems
# trouble = { trouble = {
# enable = true; enable = true;
# }; };
# Don't mess up splits when closing buffers # Don't mess up splits when closing buffers
vim-bbye = { vim-bbye = {

View File

@ -7,4 +7,5 @@ with lib;
with mylib.modules; { with mylib.modules; {
enable = mkEnableOpt "NeoVim"; enable = mkEnableOpt "NeoVim";
alias = mkBoolOpt false "Link nvim to vim/vi"; alias = mkBoolOpt false "Link nvim to vim/vi";
neovide = mkEnableOpt "NeoVide";
} }