Flake for my NixOS devices

Better handling of Git commit/rebase in toggleterm

bwc9876.dev 53b0f819 d0032410

verified
+124 -118
+124 -118
nixosModules/dev/nvim.nix
··· 4 config, 5 lib, 6 ... 7 - }: { 8 environment.systemPackages = with pkgs; [ 9 ripgrep 10 fd 11 ]; 12 13 home-manager.users.bean = { 14 - imports = [inputs.nixvim.homeManagerModules.nixvim]; 15 16 programs.nixvim = { 17 enable = true; ··· 62 background = true; 63 }; 64 virtual_text = { 65 - errors = ["italic"]; 66 - hints = ["italic"]; 67 - information = ["italic"]; 68 - warnings = ["italic"]; 69 - ok = ["italic"]; 70 }; 71 underlines = { 72 - errors = ["underline"]; 73 - hints = ["underline"]; 74 - information = ["underline"]; 75 - warnings = ["underline"]; 76 }; 77 }; 78 }; ··· 93 ''; 94 95 autoGroups = { 96 - restore_cursor = {}; 97 - open_neotree = {}; 98 }; 99 100 opts = { ··· 114 autoCmd = [ 115 { 116 group = "restore_cursor"; 117 - event = ["BufReadPost"]; 118 pattern = "*"; 119 callback.__raw = '' 120 function() ··· 131 } 132 { 133 group = "open_neotree"; 134 - event = ["BufRead"]; 135 pattern = "*"; 136 once = true; 137 callback.__raw = '' ··· 228 ]; 229 230 extraPlugins = with pkgs.vimPlugins; [ 231 - {plugin = pkgs.nvim-mdx;} 232 - {plugin = pkgs.nvim-flatten;} 233 - {plugin = tiny-devicons-auto-colors-nvim;} 234 - {plugin = nvim-biscuits;} 235 ]; 236 237 plugins = { ··· 304 opts = { 305 position = "center"; 306 }; 307 - layout = let 308 - o = { 309 - position = "center"; 310 - }; 311 - txt = s: { 312 - type = "text"; 313 - val = s; 314 - opts = 315 { 316 - hl = "Keyword"; 317 - } 318 - // o; 319 - }; 320 - grp = g: { 321 - type = "group"; 322 - val = g; 323 - opts.spacing = 1; 324 - }; 325 - btn = { 326 - val, 327 - onClick, 328 - ... 329 - }: { 330 - type = "button"; 331 - inherit val; 332 - opts = o; 333 - on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 334 - }; 335 - cmd = { 336 - command, 337 - width, 338 - height, 339 - }: { 340 - type = "terminal"; 341 - inherit command width height; 342 - opts = o; 343 - }; 344 - pad = { 345 - type = "padding"; 346 - val = 2; 347 - }; 348 - in 349 [ 350 pad 351 pad ··· 355 ( 356 let 357 banner = 358 - pkgs.runCommand "nvim-banner" {} 359 - ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 360 # bannerText = builtins.readFile banner; 361 in 362 - cmd { 363 - command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 364 - # Hardcoding to prevent IFD 365 - width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 366 - height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 367 - } 368 ) 369 (grp [ 370 (btn { ··· 385 ]) 386 (txt "::<シ>") 387 ]) 388 - ++ [pad]; 389 }; 390 391 trouble = { ··· 417 vim.api.nvim_set_current_win(opts.winnr) 418 end 419 420 - if ft == "gitcommit" or ft == "gitrebase" then 421 vim.api.nvim_create_autocmd("BufWritePost", { 422 buffer = opts.bufnr, 423 once = true, 424 callback = vim.schedule_wrap(function() 425 - vim.api.nvim_buf_delete(opts.bufnr, {}) 426 end), 427 }) 428 end ··· 517 hover = { 518 enabled = true; 519 delay = 150; 520 - reveal = ["close"]; 521 }; 522 sort_by = "insert_at_end"; 523 diagnostics = "nvim_lsp"; ··· 532 533 statuscol = { 534 enable = true; 535 - settings.segments = let 536 - dispCond = { 537 - __raw = '' 538 - function(ln) 539 - return vim.bo.filetype ~= "neo-tree" 540 - end 541 - ''; 542 - }; 543 - in [ 544 - { 545 - click = "v:lua.ScSa"; 546 - condition = [ 547 - dispCond 548 - ]; 549 - text = [ 550 - "%s" 551 - ]; 552 - } 553 - { 554 - click = "v:lua.ScLa"; 555 - condition = [dispCond]; 556 - text = [ 557 - { 558 - __raw = "require('statuscol.builtin').lnumfunc"; 559 - } 560 - ]; 561 - } 562 - { 563 - click = "v:lua.ScFa"; 564 - condition = [ 565 - dispCond 566 - { 567 - __raw = "require('statuscol.builtin').not_empty"; 568 - } 569 - ]; 570 - text = [ 571 - { 572 - __raw = "require('statuscol.builtin').foldfunc"; 573 - } 574 - " " 575 - ]; 576 - } 577 - ]; 578 }; 579 580 dropbar = { ··· 600 601 options = { 602 theme = "catppuccin"; 603 - disabled_filetypes = ["neo-tree"]; 604 - ignore_focus = ["neo-tree"]; 605 }; 606 }; 607 }; ··· 689 cmp = { 690 enable = true; 691 settings = { 692 - sources = map (name: {inherit name;}) [ 693 "nvim_lsp" 694 "nvim_lsp_signature_help" 695 "path"
··· 4 config, 5 lib, 6 ... 7 + }: 8 + { 9 environment.systemPackages = with pkgs; [ 10 ripgrep 11 fd 12 ]; 13 14 home-manager.users.bean = { 15 + imports = [ inputs.nixvim.homeManagerModules.nixvim ]; 16 17 programs.nixvim = { 18 enable = true; ··· 63 background = true; 64 }; 65 virtual_text = { 66 + errors = [ "italic" ]; 67 + hints = [ "italic" ]; 68 + information = [ "italic" ]; 69 + warnings = [ "italic" ]; 70 + ok = [ "italic" ]; 71 }; 72 underlines = { 73 + errors = [ "underline" ]; 74 + hints = [ "underline" ]; 75 + information = [ "underline" ]; 76 + warnings = [ "underline" ]; 77 }; 78 }; 79 }; ··· 94 ''; 95 96 autoGroups = { 97 + restore_cursor = { }; 98 + open_neotree = { }; 99 }; 100 101 opts = { ··· 115 autoCmd = [ 116 { 117 group = "restore_cursor"; 118 + event = [ "BufReadPost" ]; 119 pattern = "*"; 120 callback.__raw = '' 121 function() ··· 132 } 133 { 134 group = "open_neotree"; 135 + event = [ "BufRead" ]; 136 pattern = "*"; 137 once = true; 138 callback.__raw = '' ··· 229 ]; 230 231 extraPlugins = with pkgs.vimPlugins; [ 232 + { plugin = pkgs.nvim-mdx; } 233 + { plugin = pkgs.nvim-flatten; } 234 + { plugin = tiny-devicons-auto-colors-nvim; } 235 + { plugin = nvim-biscuits; } 236 ]; 237 238 plugins = { ··· 305 opts = { 306 position = "center"; 307 }; 308 + layout = 309 + let 310 + o = { 311 + position = "center"; 312 + }; 313 + txt = s: { 314 + type = "text"; 315 + val = s; 316 + opts = { 317 + hl = "Keyword"; 318 + } // o; 319 + }; 320 + grp = g: { 321 + type = "group"; 322 + val = g; 323 + opts.spacing = 1; 324 + }; 325 + btn = 326 + { 327 + val, 328 + onClick, 329 + ... 330 + }: 331 { 332 + type = "button"; 333 + inherit val; 334 + opts = o; 335 + on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 336 + }; 337 + cmd = 338 + { 339 + command, 340 + width, 341 + height, 342 + }: 343 + { 344 + type = "terminal"; 345 + inherit command width height; 346 + opts = o; 347 + }; 348 + pad = { 349 + type = "padding"; 350 + val = 2; 351 + }; 352 + in 353 [ 354 pad 355 pad ··· 359 ( 360 let 361 banner = 362 + pkgs.runCommand "nvim-banner" { } 363 + ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 364 # bannerText = builtins.readFile banner; 365 in 366 + cmd { 367 + command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 368 + # Hardcoding to prevent IFD 369 + width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 370 + height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 371 + } 372 ) 373 (grp [ 374 (btn { ··· 389 ]) 390 (txt "::<シ>") 391 ]) 392 + ++ [ pad ]; 393 }; 394 395 trouble = { ··· 421 vim.api.nvim_set_current_win(opts.winnr) 422 end 423 424 + if opts.filetype == "gitcommit" or opts.filetype == "gitrebase" then 425 vim.api.nvim_create_autocmd("BufWritePost", { 426 buffer = opts.bufnr, 427 once = true, 428 callback = vim.schedule_wrap(function() 429 + require('bufdelete').bufdelete(opts.bufnr, true) 430 end), 431 }) 432 end ··· 521 hover = { 522 enabled = true; 523 delay = 150; 524 + reveal = [ "close" ]; 525 }; 526 sort_by = "insert_at_end"; 527 diagnostics = "nvim_lsp"; ··· 536 537 statuscol = { 538 enable = true; 539 + settings.segments = 540 + let 541 + dispCond = { 542 + __raw = '' 543 + function(ln) 544 + return vim.bo.filetype ~= "neo-tree" 545 + end 546 + ''; 547 + }; 548 + in 549 + [ 550 + { 551 + click = "v:lua.ScSa"; 552 + condition = [ 553 + dispCond 554 + ]; 555 + text = [ 556 + "%s" 557 + ]; 558 + } 559 + { 560 + click = "v:lua.ScLa"; 561 + condition = [ dispCond ]; 562 + text = [ 563 + { 564 + __raw = "require('statuscol.builtin').lnumfunc"; 565 + } 566 + ]; 567 + } 568 + { 569 + click = "v:lua.ScFa"; 570 + condition = [ 571 + dispCond 572 + { 573 + __raw = "require('statuscol.builtin').not_empty"; 574 + } 575 + ]; 576 + text = [ 577 + { 578 + __raw = "require('statuscol.builtin').foldfunc"; 579 + } 580 + " " 581 + ]; 582 + } 583 + ]; 584 }; 585 586 dropbar = { ··· 606 607 options = { 608 theme = "catppuccin"; 609 + disabled_filetypes = [ "neo-tree" ]; 610 + ignore_focus = [ "neo-tree" ]; 611 }; 612 }; 613 }; ··· 695 cmp = { 696 enable = true; 697 settings = { 698 + sources = map (name: { inherit name; }) [ 699 "nvim_lsp" 700 "nvim_lsp_signature_help" 701 "path"