Flake for my NixOS devices

Toggleterm improvements

bwc9876.dev d0032410 f12160cf

verified
+184 -119
+4 -3
flake.nix
··· 63 63 "*.nix" = "alejandra ."; 64 64 "*.sh" = "shfmt -w ."; 65 65 }; 66 - packages = 67 - nixpkgs.lib.genAttrs ["wayland-mpris-idle-inhibit" "nu_plugin_dbus"] 68 - (i: {pkgs}: inputs.${i}.packages.${pkgs.system}.default); 66 + 67 + packages = nixpkgs.lib.genAttrs ["wayland-mpris-idle-inhibit" "nu_plugin_dbus"] ( 68 + i: {pkgs}: inputs.${i}.packages.${pkgs.system}.default 69 + ); 69 70 nixDir = ./.; 70 71 nixDirAliases = { 71 72 nixosConfigurations = ["systemConfigs"];
+5 -1
nixosModules/dev+graphics/nvim.nix
··· 1 - {pkg, ...}: { 1 + {pkgs, ...}: { 2 + environment.systemPackages = with pkgs; [ 3 + neovide 4 + ]; 5 + 2 6 home-manager.users.bean = { 3 7 wayland.windowManager.hyprland.settings.bind = [ 4 8 "SUPER,D,exec,neovide"
+1
nixosModules/dev/misc.nix
··· 31 31 enableBashIntegration = true; 32 32 enableNushellIntegration = true; 33 33 nix-direnv.enable = true; 34 + silent = true; 34 35 }; 35 36 }
+77 -53
nixosModules/dev/nvim.nix
··· 10 10 fd 11 11 ]; 12 12 13 - # TODO: Wish list 14 - # - https://github.com/al1-ce/just.nvim 15 - # - DAP Setup? If not just get rid of the plugin... 16 - # - Proper Start screen / projects 17 - # - On project open with no session saved, show a little screen or smth? 18 - # - Neovide let me paste from system clipboard in insert mode 19 - # - Fix hex stuff, working hex editor please 20 - # - Image viewer would be cool 21 - # - More customization of toggleterm, tabs would be really nice 22 - # - Switch project combo if not already present 23 - # - Neotree look nicer 24 - # - Bufferline color "Neovim" in space, im thinking logo in green bold and text in normal green 25 - 26 13 home-manager.users.bean = { 27 14 imports = [inputs.nixvim.homeManagerModules.nixvim]; 28 15 ··· 33 20 viAlias = true; 34 21 vimAlias = true; 35 22 36 - dependencies.direnv.enable = true; 23 + dependencies = { 24 + direnv.enable = true; 25 + }; 37 26 38 27 nixpkgs.pkgs = pkgs; 39 28 ··· 46 35 no_underline = false; 47 36 no_bold = false; 48 37 no_italics = false; 38 + term_colors = true; 49 39 # transparent_background = true; 50 40 integrations = { 51 41 alpha = true; ··· 98 88 }, 99 89 }, 100 90 }) 91 + vim.g.neovide_cursor_vfx_mode = "pixiedust" 92 + 101 93 ''; 102 94 103 95 autoGroups = { ··· 169 161 170 162 keymaps = [ 171 163 { 172 - action = ''"+y''; 173 - key = "<C-S-C>"; 174 - options.desc = "Copy to System Clipboard"; 175 - } 176 - { 177 - action = ''"+p''; 178 - key = "<C-S-V>"; 179 - options.desc = "Paste from System Clipboard"; 180 - } 181 - { 182 - action = ''"+x''; 183 - key = "<C-S-X>"; 184 - options.desc = "Cut to System Clipboard"; 185 - } 186 - { 187 164 action = "<cmd>Lspsaga code_action code_action<cr>"; 188 165 key = "<C-.>a"; 189 166 options.desc = "Code Actions"; ··· 434 411 saved_terminal = term.get(termid) 435 412 end, 436 413 post_open = function(opts) 437 - if opts.is_blocking and saved_terminal then 414 + if saved_terminal then 438 415 saved_terminal:close() 439 416 else 440 417 vim.api.nvim_set_current_win(opts.winnr) ··· 465 442 }) 466 443 ''; 467 444 settings = { 445 + size = 20; 468 446 open_mapping = "[[<C-x>]]"; 469 447 direction = "horizontal"; 470 448 start_in_insert = true; 471 449 insert_mappings = true; 472 450 terminal_mappings = true; 451 + # winbar = { 452 + # enabled = true; 453 + # # name_formatter.__raw = '' 454 + # # function(term) 455 + # # return term:_display_name() .. " (" .. tostring(term.id) .. ")" 456 + # # end 457 + # # ''; 458 + # }; 473 459 }; 474 460 }; 475 461 ··· 487 473 illuminate.enable = true; 488 474 cursorline.enable = true; 489 475 490 - neoscroll = { 491 - enable = true; 492 - settings.easing_function = "cubic"; 493 - }; 494 476 scrollview.enable = true; 495 477 496 478 navbuddy = { ··· 514 496 515 497 bufferline = { 516 498 enable = true; 499 + settings.highlights.__raw = '' 500 + require("catppuccin.groups.integrations.bufferline").get() 501 + ''; 517 502 settings.options = { 518 503 indicator.style = "none"; 519 504 close_icon = ""; ··· 521 506 offsets = [ 522 507 { 523 508 filetype = "neo-tree"; 509 + highlight = "String"; 524 510 text = " Neovim"; 525 511 text_align = "center"; 526 - separator = true; 512 + # separator = true; 527 513 } 528 514 ]; 529 515 separator_style = "slant"; ··· 546 532 547 533 statuscol = { 548 534 enable = true; 549 - settings.segments = [ 535 + settings.segments = let 536 + dispCond = { 537 + __raw = '' 538 + function(ln) 539 + return vim.bo.filetype ~= "neo-tree" 540 + end 541 + ''; 542 + }; 543 + in [ 550 544 { 551 545 click = "v:lua.ScSa"; 546 + condition = [ 547 + dispCond 548 + ]; 552 549 text = [ 553 550 "%s" 554 551 ]; 555 552 } 556 553 { 557 554 click = "v:lua.ScLa"; 555 + condition = [dispCond]; 558 556 text = [ 559 557 { 560 558 __raw = "require('statuscol.builtin').lnumfunc"; ··· 564 562 { 565 563 click = "v:lua.ScFa"; 566 564 condition = [ 567 - true 565 + dispCond 568 566 { 569 567 __raw = "require('statuscol.builtin').not_empty"; 570 568 } ··· 579 577 ]; 580 578 }; 581 579 582 - dropbar.enable = true; 580 + dropbar = { 581 + enable = true; 582 + settings = { 583 + bar.padding.right = 5; 584 + bar.padding.left = 1; 585 + }; 586 + }; 583 587 584 588 nvim-ufo = { 585 589 enable = true; 586 590 }; 587 591 gitsigns.enable = true; 588 592 589 - dap = { 590 - enable = true; 591 - }; 592 - 593 - dap-virtual-text.enable = true; 594 - 595 593 lualine = { 596 594 enable = true; 597 595 settings = { ··· 603 601 options = { 604 602 theme = "catppuccin"; 605 603 disabled_filetypes = ["neo-tree"]; 604 + ignore_focus = ["neo-tree"]; 606 605 }; 607 606 }; 608 607 }; ··· 616 615 617 616 neo-tree = { 618 617 enable = true; 618 + hideRootNode = false; 619 619 addBlankLineAtTop = true; 620 - window.width = 30; 620 + defaultComponentConfigs = { 621 + container.rightPadding = 2; 622 + name.trailingSlash = true; 623 + indent = { 624 + indentSize = 2; 625 + withExpanders = true; 626 + }; 627 + }; 628 + window.width = 40; 629 + autoCleanAfterSessionRestore = true; 621 630 closeIfLastWindow = true; 631 + extraOptions = { 632 + filesystem.components.name.__raw = '' 633 + function(config, node, state) 634 + local components = require('neo-tree.sources.common.components') 635 + local name = components.name(config, node, state) 636 + if node:get_depth() == 1 then 637 + name.text = vim.fs.basename(vim.loop.cwd() or "") .. "/" 638 + end 639 + return name 640 + end 641 + ''; 642 + }; 622 643 }; 623 644 624 645 # image.enable = true; ··· 640 661 enable = true; 641 662 settings.notification = { 642 663 window = { 664 + y_padding = 2; 665 + x_padding = 2; 666 + zindex = 50; 643 667 align = "top"; 644 668 winblend = 0; 645 669 }; ··· 649 673 none-ls = { 650 674 enable = true; 651 675 sources.formatting = { 652 - alejandra.enable = true; 653 676 prettier = { 654 677 enable = true; 655 678 disableTsServerFormatter = true; ··· 692 715 lspkind.enable = true; 693 716 # jupytext.enable = true; 694 717 695 - hex = { 696 - enable = true; 697 - settings = { 698 - assemble_cmd = "xxd -r"; 699 - dump_cmd = "xxd -g 1 -u"; 700 - }; 701 - }; 718 + # Broken 719 + # hex = { 720 + # enable = true; 721 + # settings = { 722 + # assemble_cmd = "xxd -r"; 723 + # dump_cmd = "xxd -g 1 -u"; 724 + # }; 725 + # }; 702 726 703 727 lspsaga = { 704 728 enable = true;
-2
nixosModules/graphics/apps.nix
··· 148 148 ''; 149 149 }; 150 150 151 - environment.variables.NIXOS_OZONE_WL = "1"; 152 - 153 151 environment.systemPackages = with pkgs; [ 154 152 chromium 155 153
+9
nixosModules/graphics/floorp.nix
··· 7 7 floorp 8 8 ]; 9 9 10 + networking.stevenblack = { 11 + enable = true; 12 + block = [ 13 + "fakenews" 14 + "gambling" 15 + "porn" 16 + ]; 17 + }; 18 + 10 19 home-manager.users.bean.programs.floorp = { 11 20 enable = true; 12 21 policies = {
+19 -8
nixosModules/graphics/hypr.nix
··· 4 4 hyprpicker 5 5 uwsm 6 6 ]; 7 + variables = { 8 + NIXOS_OZONE_WL = "1"; 9 + _JAVA_AWT_WM_NONEREPARENTING = "1"; 10 + GDK_BACKEND = "wayland,x11"; 11 + ANKI_WAYLAND = "1"; 12 + MOZ_ENABLE_WAYLAND = "1"; 13 + XDG_SESSION_TYPE = "wayland"; 14 + SDL_VIDEODRIVER = "wayland"; 15 + CLUTTER_BACKEND = "wayland"; 16 + }; 7 17 }; 8 18 9 19 xdg.portal.extraPortals = with pkgs; [xdg-desktop-portal-gtk]; ··· 86 96 mod, 87 97 dispatch, 88 98 }: 89 - builtins.genList 90 - (i: let 91 - num = builtins.toString i; 92 - in "${mod},${num},${dispatch},${ 93 - if num == "0" 94 - then "10" 95 - else num 96 - }") 99 + builtins.genList ( 100 + i: let 101 + num = builtins.toString i; 102 + in "${mod},${num},${dispatch},${ 103 + if num == "0" 104 + then "10" 105 + else num 106 + }" 107 + ) 97 108 10; 98 109 in 99 110 [
+69 -52
nixosModules/graphics/xdg.nix
··· 1 - {config, ...}: { 1 + { 2 + config, 3 + lib, 4 + ... 5 + }: { 2 6 home-manager.users.bean.xdg = { 3 7 enable = true; 4 - userDirs = with config.home-manager.users.bean.home; { 8 + userDirs = let 9 + inherit (config.home-manager.users.bean.home) homeDirectory; 10 + in { 5 11 enable = true; 6 12 createDirectories = true; 7 13 desktop = "${homeDirectory}/Desktop"; ··· 16 22 mimeApps = { 17 23 enable = true; 18 24 defaultApplications = let 19 - textEditors = ["neovide.desktop"]; 25 + types = { 26 + browser = [ 27 + "text/html" 28 + "application/pdf" 29 + "x-scheme-handler/http" 30 + "x-scheme-handler/https" 31 + "x-scheme-handler/ftp" 32 + "x-scheme-handler/about" 33 + "x-scheme-handler/unknown" 34 + ]; 35 + code = [ 36 + "application/json" 37 + "application/xml" 38 + "application/yaml" 39 + "text/english" 40 + "text/plain" 41 + "text/x-makefile" 42 + "text/x-c++hdr" 43 + "text/x-c++src" 44 + "text/x-chdr" 45 + "text/x-csrc" 46 + "text/x-java" 47 + "text/x-moc" 48 + "text/x-pascal" 49 + "text/x-tcl" 50 + "text/x-tex" 51 + "text/x-rust" 52 + "application/x-shellscript" 53 + "text/x-c" 54 + "text/x-c++" 55 + ]; 56 + image = ["image/*"]; 57 + av = [ 58 + "video/*" 59 + "audio/*" 60 + ]; 61 + dir = ["inode/directory"]; 62 + }; 63 + fileBrowsers = ["org.kde.dolphin.desktop"]; 64 + textEditors = [ 65 + "neovide.desktop" 66 + "nvim.desktop" 67 + ]; 20 68 browsers = [ 21 69 "floorp.desktop" 22 70 "chromium.desktop" 23 71 ]; 24 - imageViewers = [ 25 - "org.gnome.Loupe.desktop" 26 - "gimp.desktop" 27 - ]; 28 - videoPlayers = [ 29 - "QMPlay2.desktop" 30 - ]; 31 - in { 32 - "inode/directory" = ["org.kde.dolphin.desktop"]; 33 - "text/plain" = textEditors; 34 - "text/markdown" = textEditors; 35 - "text/xml" = textEditors; 36 - "text/x-markdown" = textEditors; 37 - "text/x-readme" = textEditors; 38 - "text/x-changelog" = textEditors; 39 - "text/x-copying" = textEditors; 40 - "text/x-install" = textEditors; 41 - "text/html" = browsers; 42 - "image/png" = imageViewers; 43 - "image/webp" = imageViewers; 44 - "image/jpeg" = imageViewers; 45 - "image/gif" = browsers; 46 - "image/bmp" = imageViewers; 47 - "image/x-portable-pixmap" = imageViewers; 48 - "image/x-portable-bitmap" = imageViewers; 49 - "image/x-portable-graymap" = imageViewers; 50 - "image/x-portable-anymap" = imageViewers; 51 - "image/svg+xml" = imageViewers; 52 - "video/mp4" = videoPlayers; 53 - "video/AV1" = videoPlayers; 54 - "video/m4a" = videoPlayers; 55 - "video/mpeg" = videoPlayers; 56 - "video/3gpp" = videoPlayers; 57 - "x-terminal-emulator" = ["wezterm.desktop"]; 58 - "x-scheme-handler/http" = browsers; 59 - "x-scheme-handler/https" = browsers; 60 - "x-scheme-handler/chrome" = browsers; 61 - "x-scheme-handler/vscode" = ["code-url-handler.desktop"]; 62 - "x-scheme-handler/x-github-client" = ["github-desktop.desktop"]; 63 - "x-scheme-handler/x-github-desktop-auth" = ["github-desktop.desktop"]; 64 - "application/x-extension-htm" = browsers; 65 - "application/x-extension-html" = browsers; 66 - "application/x-extension-shtml" = browsers; 67 - "application/x-extension-xht" = browsers; 68 - "application/x-extension-xhtml" = browsers; 69 - "application/xhtml+xml" = browsers; 70 - "application/xml" = browsers; 71 - "application/pdf" = browsers; 72 - }; 72 + imageViewers = 73 + [ 74 + "org.gnome.Loupe.desktop" 75 + "gimp.desktop" 76 + ] 77 + ++ browsers; 78 + avPlayers = 79 + [ 80 + "QMPlay2.desktop" 81 + ] 82 + ++ browsers; 83 + genTypeHandler = type: handlers: lib.genAttrs type (_: handlers); 84 + in 85 + (genTypeHandler types.code textEditors) 86 + // (genTypeHandler types.av avPlayers) 87 + // (genTypeHandler types.image imageViewers) 88 + // (genTypeHandler types.dir fileBrowsers) 89 + // (genTypeHandler types.browser browsers); 73 90 }; 74 91 }; 75 92 }