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

View File

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

View File

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