{ config, pkgs, ... }: let colo = config.local.scheme; local-nvim = pkgs.vimUtils.buildVimPlugin { pname = "local"; version = "0.2"; src = ../../files/nvim/local; }; wal = pkgs.vimUtils.buildVimPlugin { # https://github.com/neovim/neovim/blob/ec8922978eb14fe62671628bb25215743712eac0/src/nvim/highlight_group.c#L432 # ...neovim-unwrapped-0.10.4/share/nvim/runtime/syntax/c.vim pname = "wal"; version = "3.3"; src = pkgs.writeTextDir "colors/wal-gui.vim" '' let g:colors_name = "wal-gui" set background=${colo.lightness} set pumblend=10 " Lag Fix hi! link CurSearch Search " Plugins hi MiniStarterInactive guifg=#${colo.foreground} hi MiniStarterQuery guifg=#${colo.color5} gui=bold hi MiniStarterItemPrefix guifg=#${colo.color4} " https://github.com/NeogitOrg/neogit/blob/nightly/lua/neogit/lib/hl.lua hi link NeogitDiffContext Normal hi link NeogitDiffContextHighlight Normal hi link NeogitDiffContextCursor Normal hi link NeogitHunkHeader NeogitHunkHeaderHighlight " Custom hi ExtraWhitespace guibg=#${colo.color4} hi Normal guifg=#${colo.foreground} guibg=#${colo.background} " Necessary even without tree-sitter. hi @variable guifg=#${colo.foreground} " UI hi Added guifg=#${colo.color2} hi Changed guifg=#${colo.color3} hi ColorColumn guibg=#${colo.color6} hi Conceal guifg=#${colo.color5} hi CurSearch guifg=#${colo.background} guibg=#${colo.color4} hi CursorColumn guibg=#${colo.background} hi CursorLine guibg=#${colo.color5} hi DiffAdd guifg=#${colo.color2} guibg=#${colo.background} hi DiffChange guifg=#${colo.color3} guibg=#${colo.background} hi DiffDelete guifg=#${colo.color1} guibg=#${colo.background} gui=bold hi DiffText guifg=#${colo.color4} guibg=#${colo.background} hi Directory guifg=#${colo.color2} hi ErrorMsg guifg=#${colo.color1} hi FloatShadow guibg=#${colo.color6} blend=80 hi FloatShadowThrough guibg=#${colo.color6} blend=100 hi Folded guifg=#${colo.color5} guibg=#${colo.background} hi LineNr guifg=#${colo.color2} hi MatchParen guifg=#${colo.color2} guibg=#${colo.background} gui=bold hi ModeMsg guifg=#${colo.color4} hi MoreMsg guifg=#${colo.color2} hi NonText guifg=#${colo.color6} hi NormalFloat guibg=#${colo.color5} hi Pmenu guibg=#${colo.color5} hi PmenuThumb guibg=#${colo.color4} hi PmenuSel guibg=#${colo.color5} " Font color. hi PmenuSbar guibg=#${colo.color5} hi Question guifg=#${colo.color3} hi QuickFixLine guifg=#${colo.color3} hi RedrawDebugClear guibg=#${colo.color2} hi RedrawDebugComposed guibg=#${colo.background} hi RedrawDebugRecompose guibg=#${colo.color3} hi Removed guifg=#${colo.color1} hi Search guifg=#${colo.foreground} guibg=#${colo.color1} hi SignColumn guifg=#${colo.color6} hi SpecialKey guifg=#${colo.color6} hi SpellBad guisp=#${colo.color1} gui=undercurl hi SpellCap guisp=#${colo.color4} gui=undercurl hi SpellLocal guisp=#${colo.color4} gui=undercurl hi SpellRare guisp=#${colo.color3} gui=undercurl hi StatusLine guifg=#${colo.background} guibg=#${colo.color5} hi StatusLineNC guifg=#${colo.background} guibg=#${colo.color4} hi Title guifg=#${colo.foreground} gui=bold hi Visual guibg=#${colo.color3} hi WarningMsg guifg=#${colo.color3} hi WinBar guifg=#${colo.color5} guibg=#${colo.background} gui=bold hi WinBarNC guifg=#${colo.color5} guibg=#${colo.background} " // Syntax " "default link Character Constant", " "default link Number Constant", " "default link Boolean Constant", " "default link Float Number", " "default link Conditional Statement", " "default link Repeat Statement", " "default link Label Statement", " "default link Keyword Statement", " "default link Exception Statement", " "default link Include PreProc", " "default link Define PreProc", " "default link Macro PreProc", " "default link PreCondit PreProc", " "default link StorageClass Type", " "default link Structure Type", " "default link Typedef Type", " "default link Tag Special", " "default link SpecialChar Special", " "default link SpecialComment Special", " "default link Debug Special", " "default link Ignore Normal", " Syntax Overrides hi Structure guifg=#${colo.color4} gui=bold hi StorageClass guifg=#${colo.color4} gui=bold hi Number guifg=#${colo.foreground} " ----- hi link Boolean Number hi link Character String hi link SpecialChar Character " Syntax hi Constant guifg=#${colo.foreground} hi Operator guifg=#${colo.foreground} hi PreProc guifg=#${colo.foreground} hi Type guifg=#${colo.foreground} gui=bold hi Delimiter guifg=#${colo.foreground} hi Comment guifg=#${colo.color2} hi String guifg=#${colo.color2} hi Identifier guifg=#${colo.foreground} hi Function guifg=#${colo.foreground} hi Statement guifg=#${colo.foreground} gui=bold hi Special guifg=#${colo.color6} hi Error guifg=#${colo.color1} guibg=#${colo.foreground} " Used for Neogit delete. hi Todo guifg=#${colo.foreground} gui=bold " Diagnostic hi DiagnosticError guifg=#${colo.color1} hi DiagnosticWarn guifg=#${colo.color3} hi DiagnosticInfo guifg=#${colo.color2} hi DiagnosticHint guifg=#${colo.foreground} hi DiagnosticOk guifg=#${colo.color4} hi DiagnosticUnderlineError guisp=#${colo.color1} gui=underline hi DiagnosticUnderlineWarn guisp=#${colo.color3} gui=underline hi DiagnosticUnderlineInfo guisp=#${colo.color2} gui=underline hi DiagnosticUnderlineHint guisp=#${colo.foreground} gui=underline hi DiagnosticUnderlineOk guisp=#${colo.color4} gui=underline hi DiagnosticDeprecated guisp=#${colo.color3} gui=strikethrough ''; }; in { environment.sessionVariables = { EDITOR = "nvim"; }; home-manager.users.andrew = { programs.neovim = let s = config.local.starter; in { enable = true; viAlias = true; vimAlias = true; extraConfig = '' lua << EOF -- Simpler mini.starter builtin actions. local builtin_actions_edit = function() return { { name = 'Edit new buffer', action = 'enew', section = 'Actions' }, { name = 'Quit', action = 'qall', section = 'Actions' } } end local starter = require('mini.starter') starter.setup({ items = { starter.sections.sessions(6, true), starter.sections.recent_files(7, false, false), builtin_actions_edit() }, content_hooks = { starter.gen_hook.adding_bullet(), starter.gen_hook.aligning('center', 'center') }, top_padding = ${toString s.top_padding}, header = '${s.header}', footer = '${s.footer}', footer_offset = ${toString s.footer-offset}, picture = { path = '${s.picture}', kitty = os.getenv('TERM') == 'xterm-kitty', width = ${toString s.width}, position = '${s.position}', padding = { top = ${toString s.padding.top}, left = ${toString s.padding.left}, text = ${toString s.padding.text} } } }) EOF '' + builtins.readFile(../../files/nvim/init.vim); extraPackages = with pkgs; [ fzf chafa ripgrep xxd ]; #(pkgs.vimUtils.buildVimPlugin { # pname = ""; # version = ""; # src = pkgs.fetchFromGitHub { # owner = ""; # repo = ""; # rev = ""; # hash = ""; # }; # meta.homepage = ""; #}) withRuby = false; withPython = false; plugins = with pkgs.vimPlugins; [ local-nvim wal undotree fzf-wrapper fzf-vim vim-gitbranch vim-signify nvim-lspconfig inc-rename-nvim mini-nvim neogit plenary-nvim ccc-nvim ]; }; }; }