Flake for my NixOS devices

Use nix-develop.nvim

bwc9876.dev 88b8078a 0395d10d

verified
+182 -154
+7 -7
nixosModules/dev/misc.nix
··· 26 26 package = pkgs.wireshark; 27 27 }; 28 28 29 - home-manager.users.bean.programs.direnv = { 30 - enable = true; 31 - enableBashIntegration = true; 32 - enableNushellIntegration = true; 33 - nix-direnv.enable = true; 34 - silent = true; 35 - }; 29 + # home-manager.users.bean.programs.direnv = { 30 + # enable = true; 31 + # enableBashIntegration = true; 32 + # enableNushellIntegration = true; 33 + # nix-direnv.enable = true; 34 + # silent = true; 35 + # }; 36 36 }
+148 -140
nixosModules/dev/nvim.nix
··· 4 4 config, 5 5 lib, 6 6 ... 7 - }: 8 - { 7 + }: { 9 8 environment.systemPackages = with pkgs; [ 10 9 ripgrep 11 10 fd 12 11 ]; 13 12 14 13 home-manager.users.bean = { 15 - imports = [ inputs.nixvim.homeManagerModules.nixvim ]; 14 + imports = [inputs.nixvim.homeManagerModules.nixvim]; 16 15 17 16 programs.nixvim = { 18 17 enable = true; ··· 20 19 defaultEditor = true; 21 20 viAlias = true; 22 21 vimAlias = true; 23 - 24 - dependencies = { 25 - direnv.enable = true; 26 - }; 27 22 28 23 nixpkgs.pkgs = pkgs; 29 24 ··· 63 58 background = true; 64 59 }; 65 60 virtual_text = { 66 - errors = [ "italic" ]; 67 - hints = [ "italic" ]; 68 - information = [ "italic" ]; 69 - warnings = [ "italic" ]; 70 - ok = [ "italic" ]; 61 + errors = ["italic"]; 62 + hints = ["italic"]; 63 + information = ["italic"]; 64 + warnings = ["italic"]; 65 + ok = ["italic"]; 71 66 }; 72 67 underlines = { 73 - errors = [ "underline" ]; 74 - hints = [ "underline" ]; 75 - information = [ "underline" ]; 76 - warnings = [ "underline" ]; 68 + errors = ["underline"]; 69 + hints = ["underline"]; 70 + information = ["underline"]; 71 + warnings = ["underline"]; 77 72 }; 78 73 }; 79 74 }; ··· 95 90 ''; 96 91 97 92 autoGroups = { 98 - restore_cursor = { }; 99 - open_neotree = { }; 93 + restore_cursor = {}; 94 + open_neotree = {}; 100 95 }; 101 96 102 97 opts = { ··· 117 112 autoCmd = [ 118 113 { 119 114 group = "restore_cursor"; 120 - event = [ "BufReadPost" ]; 115 + event = ["BufReadPost"]; 121 116 pattern = "*"; 122 117 callback.__raw = '' 123 118 function() ··· 134 129 } 135 130 { 136 131 group = "open_neotree"; 137 - event = [ "BufRead" ]; 132 + event = ["BufRead"]; 138 133 pattern = "*"; 139 134 once = true; 140 135 callback.__raw = '' ··· 162 157 }; 163 158 }; 164 159 165 - keymaps = 166 - let 167 - prefixMap = 168 - pre: maps: 169 - builtins.map (k: { 170 - action = "<cmd>${k.action}<cr>"; 171 - key = "${pre}${k.key}"; 172 - options = k.options; 173 - }) maps; 174 - in 160 + keymaps = let 161 + prefixMap = pre: maps: 162 + builtins.map (k: { 163 + action = "<cmd>${k.action}<cr>"; 164 + key = "${pre}${k.key}"; 165 + options = k.options; 166 + }) 167 + maps; 168 + in 175 169 lib.lists.flatten ( 176 - builtins.map (g: if builtins.hasAttr "group" g then prefixMap g.prefix g.keys else g) [ 170 + builtins.map (g: 171 + if builtins.hasAttr "group" g 172 + then prefixMap g.prefix g.keys 173 + else g) [ 177 174 { 178 175 group = "Tab Navigation"; 179 176 prefix = "<Tab>"; ··· 294 291 } 295 292 { 296 293 action.__raw = "[[<C-\\><C-n><C-w>]]"; 297 - mode = [ "t" ]; 294 + mode = ["t"]; 298 295 key = "<C-w>"; 299 296 } 300 297 { 301 298 action.__raw = "[[<C-\\><C-n>]]"; 302 - mode = [ "t" ]; 299 + mode = ["t"]; 303 300 key = "<esc>"; 304 301 } 305 302 { ··· 310 307 ); 311 308 312 309 extraPlugins = with pkgs.vimPlugins; [ 313 - { plugin = pkgs.nvim-mdx; } 314 - { plugin = satellite-nvim; } 315 - { plugin = flatten-nvim; } 316 - { plugin = tiny-devicons-auto-colors-nvim; } 310 + {plugin = pkgs.nvim-mdx;} 311 + {plugin = satellite-nvim;} 312 + {plugin = flatten-nvim;} 313 + {plugin = tiny-devicons-auto-colors-nvim;} 317 314 ]; 318 315 319 316 plugins = { ··· 385 382 opts = { 386 383 position = "center"; 387 384 }; 388 - layout = 389 - let 390 - o = { 391 - position = "center"; 392 - }; 393 - txt = s: { 394 - type = "text"; 395 - val = s; 396 - opts = { 397 - hl = "Keyword"; 398 - } // o; 399 - }; 400 - grp = g: { 401 - type = "group"; 402 - val = g; 403 - opts.spacing = 1; 404 - }; 405 - btn = 406 - { 407 - val, 408 - onClick, 409 - ... 410 - }: 411 - { 412 - type = "button"; 413 - inherit val; 414 - opts = o; 415 - on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 416 - }; 417 - cmd = 418 - { 419 - command, 420 - width, 421 - height, 422 - }: 385 + layout = let 386 + o = { 387 + position = "center"; 388 + }; 389 + txt = s: { 390 + type = "text"; 391 + val = s; 392 + opts = 423 393 { 424 - type = "terminal"; 425 - inherit command width height; 426 - opts = o; 427 - }; 428 - pad = { 429 - type = "padding"; 430 - val = 2; 431 - }; 432 - in 394 + hl = "Keyword"; 395 + } 396 + // o; 397 + }; 398 + grp = g: { 399 + type = "group"; 400 + val = g; 401 + opts.spacing = 1; 402 + }; 403 + btn = { 404 + val, 405 + onClick, 406 + ... 407 + }: { 408 + type = "button"; 409 + inherit val; 410 + opts = o; 411 + on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 412 + }; 413 + cmd = { 414 + command, 415 + width, 416 + height, 417 + }: { 418 + type = "terminal"; 419 + inherit command width height; 420 + opts = o; 421 + }; 422 + pad = { 423 + type = "padding"; 424 + val = 2; 425 + }; 426 + in 433 427 [ 434 428 pad 435 429 pad ··· 439 433 ( 440 434 let 441 435 banner = 442 - pkgs.runCommand "nvim-banner" { } 443 - ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 436 + pkgs.runCommand "nvim-banner" {} 437 + ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 444 438 # bannerText = builtins.readFile banner; 445 439 in 446 - cmd { 447 - command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 448 - # Hardcoding to prevent IFD 449 - width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 450 - height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 451 - } 440 + cmd { 441 + command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 442 + # Hardcoding to prevent IFD 443 + width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 444 + height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 445 + } 452 446 ) 453 447 (grp [ 454 448 (btn { ··· 469 463 ]) 470 464 (txt "::<シ>") 471 465 ]) 472 - ++ [ pad ]; 466 + ++ [pad]; 473 467 }; 474 468 475 469 trouble = { ··· 591 585 hover = { 592 586 enabled = true; 593 587 delay = 150; 594 - reveal = [ "close" ]; 588 + reveal = ["close"]; 595 589 }; 596 590 sort_by = "insert_at_end"; 597 591 diagnostics = "nvim_lsp"; ··· 606 600 607 601 statuscol = { 608 602 enable = true; 609 - settings.segments = 610 - let 611 - dispCond = { 612 - __raw = '' 613 - function(ln) 614 - return vim.bo.filetype ~= "neo-tree" 615 - end 616 - ''; 617 - }; 618 - in 619 - [ 620 - { 621 - click = "v:lua.ScSa"; 622 - condition = [ 623 - dispCond 624 - ]; 625 - text = [ 626 - "%s" 627 - ]; 628 - } 629 - { 630 - click = "v:lua.ScLa"; 631 - condition = [ dispCond ]; 632 - text = [ 633 - { 634 - __raw = "require('statuscol.builtin').lnumfunc"; 635 - } 636 - ]; 637 - } 638 - { 639 - click = "v:lua.ScFa"; 640 - condition = [ 641 - dispCond 642 - { 643 - __raw = "require('statuscol.builtin').not_empty"; 644 - } 645 - ]; 646 - text = [ 647 - { 648 - __raw = "require('statuscol.builtin').foldfunc"; 649 - } 650 - " " 651 - ]; 652 - } 653 - ]; 603 + settings.segments = let 604 + dispCond = { 605 + __raw = '' 606 + function(ln) 607 + return vim.bo.filetype ~= "neo-tree" 608 + end 609 + ''; 610 + }; 611 + in [ 612 + { 613 + click = "v:lua.ScSa"; 614 + condition = [ 615 + dispCond 616 + ]; 617 + text = [ 618 + "%s" 619 + ]; 620 + } 621 + { 622 + click = "v:lua.ScLa"; 623 + condition = [dispCond]; 624 + text = [ 625 + { 626 + __raw = "require('statuscol.builtin').lnumfunc"; 627 + } 628 + ]; 629 + } 630 + { 631 + click = "v:lua.ScFa"; 632 + condition = [ 633 + dispCond 634 + { 635 + __raw = "require('statuscol.builtin').not_empty"; 636 + } 637 + ]; 638 + text = [ 639 + { 640 + __raw = "require('statuscol.builtin').foldfunc"; 641 + } 642 + " " 643 + ]; 644 + } 645 + ]; 654 646 }; 655 647 656 648 dropbar = { ··· 676 668 677 669 options = { 678 670 theme = "catppuccin"; 679 - disabled_filetypes = [ "neo-tree" ]; 680 - ignore_focus = [ "neo-tree" ]; 671 + disabled_filetypes = ["neo-tree"]; 672 + ignore_focus = ["neo-tree"]; 681 673 }; 682 674 }; 683 675 }; 684 676 685 - direnv.enable = true; 677 + nix-develop = { 678 + enable = true; 679 + package = 680 + pkgs.vimPlugins.nix-develop-nvim.overrideAttrs ( 681 + prev: next: { 682 + src = 683 + pkgs.fetchFromGitHub { 684 + owner = "Bwc9876"; 685 + repo = "nix-develop.nvim"; 686 + rev = "089cd52191ccbb3726594e21cd96567af6088dd5"; 687 + sha256 = "sha256-EIEJk8/IAuG+UICUJ2F8QakgRpFrQ1ezDSJ79NAVuD8= 688 + "; 689 + }; 690 + } 691 + ); 692 + }; 686 693 687 694 project-nvim = { 688 695 enable = true; ··· 742 749 fidget = { 743 750 enable = true; 744 751 settings.notification = { 752 + override_vim_notify = true; 745 753 window = { 746 754 y_padding = 2; 747 755 x_padding = 2; ··· 771 779 cmp = { 772 780 enable = true; 773 781 settings = { 774 - sources = map (name: { inherit name; }) [ 782 + sources = map (name: {inherit name;}) [ 775 783 "nvim_lsp" 776 784 "nvim_lsp_signature_help" 777 785 "path"
+27 -7
nixosModules/imperm.nix
··· 22 22 23 23 fileSystems."/tmp/nix-build" = { 24 24 device = "${cacheRoot}/nix-build"; 25 - options = ["bind" "X-fstrim.notrim" "x-gvfs-hide"]; 25 + options = [ 26 + "bind" 27 + "X-fstrim.notrim" 28 + "x-gvfs-hide" 29 + ]; 26 30 }; 27 31 28 32 systemd.services.nix-daemon = { 29 33 environment.TMPDIR = "/tmp/nix-build"; 30 - unitConfig.RequiresMountsFor = ["/tmp/nix-build" "/nix/store"]; 34 + unitConfig.RequiresMountsFor = [ 35 + "/tmp/nix-build" 36 + "/nix/store" 37 + ]; 31 38 }; 32 39 33 40 environment.persistence.${cacheRoot} = { 34 41 enable = true; 35 42 hideMounts = true; 36 43 directories = 37 - (preWith "/var" ([ 44 + (preWith "/var" ( 45 + [ 38 46 "log" 39 47 ] 40 48 ++ preWith "lib" ( ··· 48 56 "backlight" 49 57 "rfkill" 50 58 ] 51 - ))) 59 + ) 60 + )) 52 61 ++ [ 53 62 { 54 63 directory = "/var/lib/colord"; ··· 65 74 ".pnpm" 66 75 ".local/state/wireplumber" 67 76 ] 68 - ++ (preShare ["Steam" "Trash" "dolphin"]) 69 - ++ (preConf ["gh" "GitHub Desktop" "spotify" "vesktop" "kdeconnect" "keepassxc"]); 77 + ++ (preShare [ 78 + "Steam" 79 + "Trash" 80 + "dolphin" 81 + ]) 82 + ++ (preConf [ 83 + "gh" 84 + "GitHub Desktop" 85 + "spotify" 86 + "vesktop" 87 + "kdeconnect" 88 + "keepassxc" 89 + ]); 70 90 }; 71 91 72 92 environment.persistence.${persistRoot} = { ··· 107 127 "Cemu" 108 128 ]) 109 129 ++ (preShare [ 110 - "direnv" 130 + # "direnv" 111 131 "ow-mod-man" 112 132 "OuterWildsModManager" 113 133 "PrismLauncher"