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 4 config, 5 5 lib, 6 6 ... 7 - }: { 7 + }: 8 + { 8 9 environment.systemPackages = with pkgs; [ 9 10 ripgrep 10 11 fd 11 12 ]; 12 13 13 14 home-manager.users.bean = { 14 - imports = [inputs.nixvim.homeManagerModules.nixvim]; 15 + imports = [ inputs.nixvim.homeManagerModules.nixvim ]; 15 16 16 17 programs.nixvim = { 17 18 enable = true; ··· 62 63 background = true; 63 64 }; 64 65 virtual_text = { 65 - errors = ["italic"]; 66 - hints = ["italic"]; 67 - information = ["italic"]; 68 - warnings = ["italic"]; 69 - ok = ["italic"]; 66 + errors = [ "italic" ]; 67 + hints = [ "italic" ]; 68 + information = [ "italic" ]; 69 + warnings = [ "italic" ]; 70 + ok = [ "italic" ]; 70 71 }; 71 72 underlines = { 72 - errors = ["underline"]; 73 - hints = ["underline"]; 74 - information = ["underline"]; 75 - warnings = ["underline"]; 73 + errors = [ "underline" ]; 74 + hints = [ "underline" ]; 75 + information = [ "underline" ]; 76 + warnings = [ "underline" ]; 76 77 }; 77 78 }; 78 79 }; ··· 93 94 ''; 94 95 95 96 autoGroups = { 96 - restore_cursor = {}; 97 - open_neotree = {}; 97 + restore_cursor = { }; 98 + open_neotree = { }; 98 99 }; 99 100 100 101 opts = { ··· 114 115 autoCmd = [ 115 116 { 116 117 group = "restore_cursor"; 117 - event = ["BufReadPost"]; 118 + event = [ "BufReadPost" ]; 118 119 pattern = "*"; 119 120 callback.__raw = '' 120 121 function() ··· 131 132 } 132 133 { 133 134 group = "open_neotree"; 134 - event = ["BufRead"]; 135 + event = [ "BufRead" ]; 135 136 pattern = "*"; 136 137 once = true; 137 138 callback.__raw = '' ··· 228 229 ]; 229 230 230 231 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;} 232 + { plugin = pkgs.nvim-mdx; } 233 + { plugin = pkgs.nvim-flatten; } 234 + { plugin = tiny-devicons-auto-colors-nvim; } 235 + { plugin = nvim-biscuits; } 235 236 ]; 236 237 237 238 plugins = { ··· 304 305 opts = { 305 306 position = "center"; 306 307 }; 307 - layout = let 308 - o = { 309 - position = "center"; 310 - }; 311 - txt = s: { 312 - type = "text"; 313 - val = s; 314 - opts = 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 + }: 315 331 { 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 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 349 353 [ 350 354 pad 351 355 pad ··· 355 359 ( 356 360 let 357 361 banner = 358 - pkgs.runCommand "nvim-banner" {} 359 - ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 362 + pkgs.runCommand "nvim-banner" { } 363 + ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 360 364 # bannerText = builtins.readFile banner; 361 365 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 - } 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 + } 368 372 ) 369 373 (grp [ 370 374 (btn { ··· 385 389 ]) 386 390 (txt "::<シ>") 387 391 ]) 388 - ++ [pad]; 392 + ++ [ pad ]; 389 393 }; 390 394 391 395 trouble = { ··· 417 421 vim.api.nvim_set_current_win(opts.winnr) 418 422 end 419 423 420 - if ft == "gitcommit" or ft == "gitrebase" then 424 + if opts.filetype == "gitcommit" or opts.filetype == "gitrebase" then 421 425 vim.api.nvim_create_autocmd("BufWritePost", { 422 426 buffer = opts.bufnr, 423 427 once = true, 424 428 callback = vim.schedule_wrap(function() 425 - vim.api.nvim_buf_delete(opts.bufnr, {}) 429 + require('bufdelete').bufdelete(opts.bufnr, true) 426 430 end), 427 431 }) 428 432 end ··· 517 521 hover = { 518 522 enabled = true; 519 523 delay = 150; 520 - reveal = ["close"]; 524 + reveal = [ "close" ]; 521 525 }; 522 526 sort_by = "insert_at_end"; 523 527 diagnostics = "nvim_lsp"; ··· 532 536 533 537 statuscol = { 534 538 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 - ]; 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 + ]; 578 584 }; 579 585 580 586 dropbar = { ··· 600 606 601 607 options = { 602 608 theme = "catppuccin"; 603 - disabled_filetypes = ["neo-tree"]; 604 - ignore_focus = ["neo-tree"]; 609 + disabled_filetypes = [ "neo-tree" ]; 610 + ignore_focus = [ "neo-tree" ]; 605 611 }; 606 612 }; 607 613 }; ··· 689 695 cmp = { 690 696 enable = true; 691 697 settings = { 692 - sources = map (name: {inherit name;}) [ 698 + sources = map (name: { inherit name; }) [ 693 699 "nvim_lsp" 694 700 "nvim_lsp_signature_help" 695 701 "path"