Flake for my NixOS devices

Toggleterm bindings

bwc9876.dev fb3e3f41 af211e01

verified
+341 -351
+139 -141
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; ··· 63 62 background = true; 64 63 }; 65 64 virtual_text = { 66 - errors = [ "italic" ]; 67 - hints = [ "italic" ]; 68 - information = [ "italic" ]; 69 - warnings = [ "italic" ]; 70 - ok = [ "italic" ]; 65 + errors = ["italic"]; 66 + hints = ["italic"]; 67 + information = ["italic"]; 68 + warnings = ["italic"]; 69 + ok = ["italic"]; 71 70 }; 72 71 underlines = { 73 - errors = [ "underline" ]; 74 - hints = [ "underline" ]; 75 - information = [ "underline" ]; 76 - warnings = [ "underline" ]; 72 + errors = ["underline"]; 73 + hints = ["underline"]; 74 + information = ["underline"]; 75 + warnings = ["underline"]; 77 76 }; 78 77 }; 79 78 }; ··· 94 93 ''; 95 94 96 95 autoGroups = { 97 - restore_cursor = { }; 98 - open_neotree = { }; 96 + restore_cursor = {}; 97 + open_neotree = {}; 99 98 }; 100 99 101 100 opts = { ··· 116 115 autoCmd = [ 117 116 { 118 117 group = "restore_cursor"; 119 - event = [ "BufReadPost" ]; 118 + event = ["BufReadPost"]; 120 119 pattern = "*"; 121 120 callback.__raw = '' 122 121 function() ··· 133 132 } 134 133 { 135 134 group = "open_neotree"; 136 - event = [ "BufRead" ]; 135 + event = ["BufRead"]; 137 136 pattern = "*"; 138 137 once = true; 139 138 callback.__raw = '' ··· 161 160 }; 162 161 }; 163 162 164 - keymaps = 165 - let 166 - prefixMap = 167 - pre: maps: 168 - builtins.map (k: { 169 - action = "<cmd>${k.action}<cr>"; 170 - key = "${pre}${k.key}"; 171 - options = k.options; 172 - }) maps; 173 - in 163 + keymaps = let 164 + prefixMap = pre: maps: 165 + builtins.map (k: { 166 + action = "<cmd>${k.action}<cr>"; 167 + key = "${pre}${k.key}"; 168 + options = k.options; 169 + }) 170 + maps; 171 + in 174 172 lib.lists.flatten ( 175 - builtins.map (g: if builtins.hasAttr "group" g then prefixMap g.prefix g.keys else g) [ 173 + builtins.map (g: 174 + if builtins.hasAttr "group" g 175 + then prefixMap g.prefix g.keys 176 + else g) [ 176 177 { 177 178 group = "Tab Navigation"; 178 179 prefix = "<Tab>"; ··· 291 292 key = "<leader><leader>"; 292 293 options.desc = "Telescope Launch"; 293 294 } 295 + { 296 + action.__raw = "[[<C-\\><C-n><C-w>]]"; 297 + mode = ["t"]; 298 + key = "<C-w>"; 299 + } 300 + { 301 + action.__raw = "[[<C-\\><C-n>]]"; 302 + mode = ["t"]; 303 + key = "<esc>"; 304 + } 294 305 ] 295 306 ); 296 307 297 308 extraPlugins = with pkgs.vimPlugins; [ 298 - { plugin = pkgs.nvim-mdx; } 299 - { plugin = pkgs.nvim-flatten; } 300 - { plugin = tiny-devicons-auto-colors-nvim; } 301 - { plugin = nvim-biscuits; } 309 + {plugin = pkgs.nvim-mdx;} 310 + {plugin = pkgs.nvim-flatten;} 311 + {plugin = tiny-devicons-auto-colors-nvim;} 312 + {plugin = nvim-biscuits;} 302 313 ]; 303 314 304 315 plugins = { ··· 370 381 opts = { 371 382 position = "center"; 372 383 }; 373 - layout = 374 - let 375 - o = { 376 - position = "center"; 377 - }; 378 - txt = s: { 379 - type = "text"; 380 - val = s; 381 - opts = { 384 + layout = let 385 + o = { 386 + position = "center"; 387 + }; 388 + txt = s: { 389 + type = "text"; 390 + val = s; 391 + opts = 392 + { 382 393 hl = "Keyword"; 383 - } // o; 384 - }; 385 - grp = g: { 386 - type = "group"; 387 - val = g; 388 - opts.spacing = 1; 389 - }; 390 - btn = 391 - { 392 - val, 393 - onClick, 394 - ... 395 - }: 396 - { 397 - type = "button"; 398 - inherit val; 399 - opts = o; 400 - on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 401 - }; 402 - cmd = 403 - { 404 - command, 405 - width, 406 - height, 407 - }: 408 - { 409 - type = "terminal"; 410 - inherit command width height; 411 - opts = o; 412 - }; 413 - pad = { 414 - type = "padding"; 415 - val = 2; 416 - }; 417 - in 394 + } 395 + // o; 396 + }; 397 + grp = g: { 398 + type = "group"; 399 + val = g; 400 + opts.spacing = 1; 401 + }; 402 + btn = { 403 + val, 404 + onClick, 405 + ... 406 + }: { 407 + type = "button"; 408 + inherit val; 409 + opts = o; 410 + on_press.__raw = "function() vim.cmd[[${onClick}]] end"; 411 + }; 412 + cmd = { 413 + command, 414 + width, 415 + height, 416 + }: { 417 + type = "terminal"; 418 + inherit command width height; 419 + opts = o; 420 + }; 421 + pad = { 422 + type = "padding"; 423 + val = 2; 424 + }; 425 + in 418 426 [ 419 427 pad 420 428 pad ··· 424 432 ( 425 433 let 426 434 banner = 427 - pkgs.runCommand "nvim-banner" { } 428 - ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 435 + pkgs.runCommand "nvim-banner" {} 436 + ''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out''; 429 437 # bannerText = builtins.readFile banner; 430 438 in 431 - cmd { 432 - command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 433 - # Hardcoding to prevent IFD 434 - width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 435 - height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 436 - } 439 + cmd { 440 + command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)''; 441 + # Hardcoding to prevent IFD 442 + width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3; 443 + height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1; 444 + } 437 445 ) 438 446 (grp [ 439 447 (btn { ··· 454 462 ]) 455 463 (txt "::<シ>") 456 464 ]) 457 - ++ [ pad ]; 465 + ++ [pad]; 458 466 }; 459 467 460 468 trouble = { ··· 517 525 start_in_insert = true; 518 526 insert_mappings = true; 519 527 terminal_mappings = true; 520 - # winbar = { 521 - # enabled = true; 522 - # # name_formatter.__raw = '' 523 - # # function(term) 524 - # # return term:_display_name() .. " (" .. tostring(term.id) .. ")" 525 - # # end 526 - # # ''; 527 - # }; 528 528 }; 529 529 }; 530 530 ··· 586 586 hover = { 587 587 enabled = true; 588 588 delay = 150; 589 - reveal = [ "close" ]; 589 + reveal = ["close"]; 590 590 }; 591 591 sort_by = "insert_at_end"; 592 592 diagnostics = "nvim_lsp"; ··· 601 601 602 602 statuscol = { 603 603 enable = true; 604 - settings.segments = 605 - let 606 - dispCond = { 607 - __raw = '' 608 - function(ln) 609 - return vim.bo.filetype ~= "neo-tree" 610 - end 611 - ''; 612 - }; 613 - in 614 - [ 615 - { 616 - click = "v:lua.ScSa"; 617 - condition = [ 618 - dispCond 619 - ]; 620 - text = [ 621 - "%s" 622 - ]; 623 - } 624 - { 625 - click = "v:lua.ScLa"; 626 - condition = [ dispCond ]; 627 - text = [ 628 - { 629 - __raw = "require('statuscol.builtin').lnumfunc"; 630 - } 631 - ]; 632 - } 633 - { 634 - click = "v:lua.ScFa"; 635 - condition = [ 636 - dispCond 637 - { 638 - __raw = "require('statuscol.builtin').not_empty"; 639 - } 640 - ]; 641 - text = [ 642 - { 643 - __raw = "require('statuscol.builtin').foldfunc"; 644 - } 645 - " " 646 - ]; 647 - } 648 - ]; 604 + settings.segments = let 605 + dispCond = { 606 + __raw = '' 607 + function(ln) 608 + return vim.bo.filetype ~= "neo-tree" 609 + end 610 + ''; 611 + }; 612 + in [ 613 + { 614 + click = "v:lua.ScSa"; 615 + condition = [ 616 + dispCond 617 + ]; 618 + text = [ 619 + "%s" 620 + ]; 621 + } 622 + { 623 + click = "v:lua.ScLa"; 624 + condition = [dispCond]; 625 + text = [ 626 + { 627 + __raw = "require('statuscol.builtin').lnumfunc"; 628 + } 629 + ]; 630 + } 631 + { 632 + click = "v:lua.ScFa"; 633 + condition = [ 634 + dispCond 635 + { 636 + __raw = "require('statuscol.builtin').not_empty"; 637 + } 638 + ]; 639 + text = [ 640 + { 641 + __raw = "require('statuscol.builtin').foldfunc"; 642 + } 643 + " " 644 + ]; 645 + } 646 + ]; 649 647 }; 650 648 651 649 dropbar = { ··· 671 669 672 670 options = { 673 671 theme = "catppuccin"; 674 - disabled_filetypes = [ "neo-tree" ]; 675 - ignore_focus = [ "neo-tree" ]; 672 + disabled_filetypes = ["neo-tree"]; 673 + ignore_focus = ["neo-tree"]; 676 674 }; 677 675 }; 678 676 }; ··· 766 764 cmp = { 767 765 enable = true; 768 766 settings = { 769 - sources = map (name: { inherit name; }) [ 767 + sources = map (name: {inherit name;}) [ 770 768 "nvim_lsp" 771 769 "nvim_lsp_signature_help" 772 770 "path"
+202 -210
nixosModules/graphics/floorp.nix
··· 2 2 lib, 3 3 pkgs, 4 4 ... 5 - }: 6 - { 5 + }: { 7 6 environment.systemPackages = with pkgs; [ 8 7 floorp 9 8 ]; ··· 51 50 EmailTracking = true; 52 51 }; 53 52 54 - Preferences = 55 - let 56 - lock = val: { 57 - Value = val; 58 - Status = "locked"; 59 - }; 60 - in 61 - { 62 - # General 63 - "browser.aboutConfig.showWarning" = lock false; 64 - "media.eme.enabled" = lock true; # Encrypted Media Extensions (DRM) 65 - "layout.css.prefers-color-scheme.content-override" = lock 0; 66 - "browser.startup.page" = 3; # Restore previous session 67 - "toolkit.telemetry.server" = lock ""; 53 + Preferences = let 54 + lock = val: { 55 + Value = val; 56 + Status = "locked"; 57 + }; 58 + in { 59 + # General 60 + "browser.aboutConfig.showWarning" = lock false; 61 + "media.eme.enabled" = lock true; # Encrypted Media Extensions (DRM) 62 + "layout.css.prefers-color-scheme.content-override" = lock 0; 63 + "browser.startup.page" = 3; # Restore previous session 64 + "toolkit.telemetry.server" = lock ""; 68 65 69 - # New Tab 70 - "browser.newtabpage.activity-stream.showSponsored" = lock false; 71 - "browser.newtabpage.activity-stream.system.showSponsored" = lock false; 72 - "browser.newtabpage.activity-stream.feeds.section.topstories" = lock false; 73 - "browser.newtabpage.activity-stream.feeds.topsites" = lock false; 74 - "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock false; 75 - "browser.newtabpage.activity-stream.showWeather" = lock false; 76 - "browser.newtabpage.activity-stream.system.showWeather" = lock false; 77 - "browser.newtabpage.activity-stream.feeds.weatherfeed" = lock false; 78 - "browser.newtabpage.activity-stream.feeds.telemetry" = lock false; 79 - "browser.newtabpage.activity-stream.telemetry" = lock false; 80 - "browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = lock ""; 81 - "browser.newtabpage.pinned" = lock [ ]; 82 - "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = lock ""; 83 - "browser.urlbar.suggest.weather" = lock false; 84 - "browser.urlbar.quicksuggest.scenario" = lock "offline"; 85 - "browser.urlbar.suggest.quicksuggest.nonsponsored" = lock false; 86 - "browser.urlbar.suggest.quicksuggest.sponsored" = lock false; 66 + # New Tab 67 + "browser.newtabpage.activity-stream.showSponsored" = lock false; 68 + "browser.newtabpage.activity-stream.system.showSponsored" = lock false; 69 + "browser.newtabpage.activity-stream.feeds.section.topstories" = lock false; 70 + "browser.newtabpage.activity-stream.feeds.topsites" = lock false; 71 + "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock false; 72 + "browser.newtabpage.activity-stream.showWeather" = lock false; 73 + "browser.newtabpage.activity-stream.system.showWeather" = lock false; 74 + "browser.newtabpage.activity-stream.feeds.weatherfeed" = lock false; 75 + "browser.newtabpage.activity-stream.feeds.telemetry" = lock false; 76 + "browser.newtabpage.activity-stream.telemetry" = lock false; 77 + "browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = lock ""; 78 + "browser.newtabpage.pinned" = lock []; 79 + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = lock ""; 80 + "browser.urlbar.suggest.weather" = lock false; 81 + "browser.urlbar.quicksuggest.scenario" = lock "offline"; 82 + "browser.urlbar.suggest.quicksuggest.nonsponsored" = lock false; 83 + "browser.urlbar.suggest.quicksuggest.sponsored" = lock false; 87 84 88 - # Devtools 89 - "devtools.theme" = lock "dark"; 90 - "devtools.dom.enabled" = lock true; 91 - "devtools.command-button-rulers.enabled" = lock true; 92 - "devtools.command-button-measure.enabled" = lock true; 93 - "devtools.command-button-screenshot.enabled" = lock true; 94 - "devtools.toolbox.host" = lock "right"; 95 - "devtools.webconsole.persistlog" = lock true; 96 - "devtools.webconsole.timestampMessages" = lock true; 85 + # Devtools 86 + "devtools.theme" = lock "dark"; 87 + "devtools.dom.enabled" = lock true; 88 + "devtools.command-button-rulers.enabled" = lock true; 89 + "devtools.command-button-measure.enabled" = lock true; 90 + "devtools.command-button-screenshot.enabled" = lock true; 91 + "devtools.toolbox.host" = lock "right"; 92 + "devtools.webconsole.persistlog" = lock true; 93 + "devtools.webconsole.timestampMessages" = lock true; 97 94 98 - # Privacy 99 - "dom.private-attribution.submission.enabled" = lock false; 100 - "privacy.globalprivacycontrol.enabled" = lock true; 101 - }; 95 + # Privacy 96 + "dom.private-attribution.submission.enabled" = lock false; 97 + "privacy.globalprivacycontrol.enabled" = lock true; 98 + }; 102 99 103 100 Extensions.Install = 104 101 map (x: "https://addons.mozilla.org/firefox/downloads/latest/${x}/latest.xpi") 105 - [ 106 - # Appearance 107 - "catppuccin-mocha-green" 108 - "darkreader" 109 - "material-icons-for-github" 110 - "refined-github-" 102 + [ 103 + # Appearance 104 + "catppuccin-mocha-green" 105 + "darkreader" 106 + "material-icons-for-github" 107 + "refined-github-" 111 108 112 - # Security / Privacy 113 - "privacy-badger17" 114 - "decentraleyes" 115 - "canvasblocker" 116 - "facebook-container" 109 + # Security / Privacy 110 + "privacy-badger17" 111 + "decentraleyes" 112 + "canvasblocker" 113 + "facebook-container" 117 114 118 - ## Ads / Youtube 119 - "adnauseam" 120 - "sponsorblock" 121 - "youtube-shorts-block" 122 - "dearrow" 115 + ## Ads / Youtube 116 + "adnauseam" 117 + "sponsorblock" 118 + "youtube-shorts-block" 119 + "dearrow" 123 120 124 - # Information 125 - "flagfox" 126 - "awesome-rss" 121 + # Information 122 + "flagfox" 123 + "awesome-rss" 127 124 128 - # Devtools 129 - "react-devtools" 130 - "open-graph-preview-and-debug" 131 - "wave-accessibility-tool" 132 - "styl-us" 125 + # Devtools 126 + "react-devtools" 127 + "open-graph-preview-and-debug" 128 + "wave-accessibility-tool" 129 + "styl-us" 133 130 134 - # Misc 135 - "plasma-integration" # integration with MPRIS & KDE Connect 136 - "keepassxc-browser" # integration with KeepassXC 137 - "meowad" # Replace ads on Twitter with :3 138 - ]; 131 + # Misc 132 + "plasma-integration" # integration with MPRIS & KDE Connect 133 + "keepassxc-browser" # integration with KeepassXC 134 + "meowad" # Replace ads on Twitter with :3 135 + ]; 139 136 140 137 ExtensionSettings."*" = { 141 138 default_area = "menupanel"; ··· 145 142 force = true; 146 143 default = "ddg@search.mozilla.orgdefault"; 147 144 privateDefault = "ddg@search.mozilla.orgdefault"; 148 - engines = 149 - let 150 - mkEngineForceFavicon = aliases: queryUrl: iconUrl: { 151 - definedAliases = aliases; 152 - icon = iconUrl; 153 - urls = [ { template = queryUrl; } ]; 154 - }; 155 - mkEngine = 156 - aliases: queryUrl: iconExt: 157 - (mkEngineForceFavicon aliases queryUrl ( 158 - let 159 - noPath = lib.strings.concatStrings ( 160 - lib.strings.intersperse "/" (lib.lists.take 3 (lib.strings.splitString "/" queryUrl)) 161 - ); 162 - in 163 - "${noPath}/favicon.${iconExt}" 164 - )); 165 - in 166 - { 167 - # Dev 168 - "GitHub Repos" = 169 - mkEngineForceFavicon [ "@gh" "@github" ] 170 - "https://github.com/search?type=repositories&q={searchTerms}" 171 - "https://github.githubassets.com/favicons/favicon-dark.svg"; 172 - "SourceGraph" = mkEngine [ 173 - "@sg" 174 - "@sourcegraph" 175 - ] "https://sourcegraph.com/search?q={searchTerms}" "png"; 145 + engines = let 146 + mkEngineForceFavicon = aliases: queryUrl: iconUrl: { 147 + definedAliases = aliases; 148 + icon = iconUrl; 149 + urls = [{template = queryUrl;}]; 150 + }; 151 + mkEngine = aliases: queryUrl: iconExt: (mkEngineForceFavicon aliases queryUrl ( 152 + let 153 + noPath = lib.strings.concatStrings ( 154 + lib.strings.intersperse "/" (lib.lists.take 3 (lib.strings.splitString "/" queryUrl)) 155 + ); 156 + in "${noPath}/favicon.${iconExt}" 157 + )); 158 + in { 159 + # Dev 160 + "GitHub Repos" = 161 + mkEngineForceFavicon ["@gh" "@github"] 162 + "https://github.com/search?type=repositories&q={searchTerms}" 163 + "https://github.githubassets.com/favicons/favicon-dark.svg"; 164 + "SourceGraph" = mkEngine [ 165 + "@sg" 166 + "@sourcegraph" 167 + ] "https://sourcegraph.com/search?q={searchTerms}" "png"; 176 168 177 - ## Web 178 - "MDN Web Docs" = mkEngine [ 179 - "@mdn" 180 - ] "https://developer.mozilla.org/en-US/search?q={searchTerms}" "ico"; 181 - "Web.Dev" = 182 - mkEngineForceFavicon [ "@webdev" "@lighthouse" ] "https://web.dev/s/results?q={searchTerms}" 183 - "https://www.gstatic.com/devrel-devsite/prod/vc7080045e84cd2ce1faf7f7a3876037748d52d088e5100df2e949d051a784791/web/images/favicon.png"; 184 - "Can I Use" = mkEngineForceFavicon [ 185 - "@ciu" 186 - "@baseline" 187 - ] "https://caniuse.com/?search={searchTerms}" "https://caniuse.com/img/favicon-128.png"; 188 - "NPM" = 189 - mkEngineForceFavicon [ "@npm" ] "https://www.npmjs.com/search?q={searchTerms}" 190 - "https://static-production.npmjs.com/3dc95981de4241b35cd55fe126ab6b2c.png"; 191 - "Iconify" = mkEngine [ 192 - "@iconify" 193 - "@icons" 194 - ] "https://icon-sets.iconify.design/?query={searchTerms}" "ico"; 195 - "Astro" = mkEngineForceFavicon [ 196 - "@astro" 197 - ] "https://a.stro.cc/{searchTerms}" "https://docs.astro.build/favicon.svg"; 198 - "Porkbun" = mkEngine [ "@porkbun" ] "https://porkbun.com/checkout/search?q={searchTerms}" "ico"; 199 - "Http.Cat" = mkEngine [ "@cat" "@hcat" "@httpcat" ] "https://http.cat/{searchTerms}" "ico"; 169 + ## Web 170 + "MDN Web Docs" = mkEngine [ 171 + "@mdn" 172 + ] "https://developer.mozilla.org/en-US/search?q={searchTerms}" "ico"; 173 + "Web.Dev" = 174 + mkEngineForceFavicon ["@webdev" "@lighthouse"] "https://web.dev/s/results?q={searchTerms}" 175 + "https://www.gstatic.com/devrel-devsite/prod/vc7080045e84cd2ce1faf7f7a3876037748d52d088e5100df2e949d051a784791/web/images/favicon.png"; 176 + "Can I Use" = mkEngineForceFavicon [ 177 + "@ciu" 178 + "@baseline" 179 + ] "https://caniuse.com/?search={searchTerms}" "https://caniuse.com/img/favicon-128.png"; 180 + "NPM" = 181 + mkEngineForceFavicon ["@npm"] "https://www.npmjs.com/search?q={searchTerms}" 182 + "https://static-production.npmjs.com/3dc95981de4241b35cd55fe126ab6b2c.png"; 183 + "Iconify" = mkEngine [ 184 + "@iconify" 185 + "@icons" 186 + ] "https://icon-sets.iconify.design/?query={searchTerms}" "ico"; 187 + "Astro" = mkEngineForceFavicon [ 188 + "@astro" 189 + ] "https://a.stro.cc/{searchTerms}" "https://docs.astro.build/favicon.svg"; 190 + "Porkbun" = mkEngine ["@porkbun"] "https://porkbun.com/checkout/search?q={searchTerms}" "ico"; 191 + "Http.Cat" = mkEngine ["@cat" "@hcat" "@httpcat"] "https://http.cat/{searchTerms}" "ico"; 200 192 201 - ## Rust 202 - "Crates.io" = mkEngine [ 203 - "@crates" 204 - "@cratesio" 205 - "@cargo" 206 - ] "https://crates.io/search?q={searchTerms}" "ico"; 207 - "Rust Docs" = 208 - mkEngineForceFavicon [ "@rust" "@rustdocs" "@ruststd" ] 209 - "https://doc.rust-lang.org/std/index.html?search={searchTerms}" 210 - "https://doc.rust-lang.org/static.files/favicon-2c020d218678b618.svg"; 211 - "Docsrs" = mkEngine [ "@docsrs" ] "https://docs.rs/releases/search?query={searchTerms}" "ico"; 193 + ## Rust 194 + "Crates.io" = mkEngine [ 195 + "@crates" 196 + "@cratesio" 197 + "@cargo" 198 + ] "https://crates.io/search?q={searchTerms}" "ico"; 199 + "Rust Docs" = 200 + mkEngineForceFavicon ["@rust" "@rustdocs" "@ruststd"] 201 + "https://doc.rust-lang.org/std/index.html?search={searchTerms}" 202 + "https://doc.rust-lang.org/static.files/favicon-2c020d218678b618.svg"; 203 + "Docsrs" = mkEngine ["@docsrs"] "https://docs.rs/releases/search?query={searchTerms}" "ico"; 212 204 213 - ## Python 214 - "PyPI" = mkEngineForceFavicon [ 215 - "@pypi" 216 - "@pip" 217 - ] "https://pypi.org/search/?q={searchTerms}" "https://pypi.org/static/images/favicon.35549fe8.ico"; 205 + ## Python 206 + "PyPI" = mkEngineForceFavicon [ 207 + "@pypi" 208 + "@pip" 209 + ] "https://pypi.org/search/?q={searchTerms}" "https://pypi.org/static/images/favicon.35549fe8.ico"; 218 210 219 - ## .NET 220 - "NuGet" = mkEngine [ "@nuget" ] "https://www.nuget.org/packages?q={searchTerms}" "ico"; 211 + ## .NET 212 + "NuGet" = mkEngine ["@nuget"] "https://www.nuget.org/packages?q={searchTerms}" "ico"; 221 213 222 - ## Linux Stuff 223 - "Kernel Docs" = mkEngine [ 224 - "@lnx" 225 - "@linux" 226 - "@kernel" 227 - ] "https://www.kernel.org/doc/html/latest/search.html?q={searchTerms}" "ico"; 228 - "Arch Wiki" = mkEngine [ 229 - "@aw" 230 - "@arch" 231 - ] "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search={searchTerms}" "ico"; 232 - "Nerd Fonts" = 233 - mkEngineForceFavicon [ "@nf" "@nerdfonts" ] "https://www.nerdfonts.com/cheat-sheet?q={searchTerms}" 234 - "https://www.nerdfonts.com/assets/img/favicon.ico"; 214 + ## Linux Stuff 215 + "Kernel Docs" = mkEngine [ 216 + "@lnx" 217 + "@linux" 218 + "@kernel" 219 + ] "https://www.kernel.org/doc/html/latest/search.html?q={searchTerms}" "ico"; 220 + "Arch Wiki" = mkEngine [ 221 + "@aw" 222 + "@arch" 223 + ] "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search={searchTerms}" "ico"; 224 + "Nerd Fonts" = 225 + mkEngineForceFavicon ["@nf" "@nerdfonts"] "https://www.nerdfonts.com/cheat-sheet?q={searchTerms}" 226 + "https://www.nerdfonts.com/assets/img/favicon.ico"; 235 227 236 - ### Nix 237 - "Nix Packages" = mkEngine [ 238 - "@nixpkgs" 239 - ] "https://search.nixos.org/packages?channel=unstable&size=500&query={searchTerms}" "png"; 240 - "NixOS Options" = mkEngine [ 241 - "@nixos" 242 - ] "https://search.nixos.org/options?channel=unstable&size=500&query={searchTerms}" "png"; 243 - "NixOS Wiki" = mkEngine [ "@nixwiki" ] "https://nixos.wiki/index.php?search={searchTerms}" "png"; 244 - "Home Manager Options" = 245 - mkEngineForceFavicon [ "@hm" ] 246 - "https://home-manager-options.extranix.com/?release=master&query={searchTerms}" 247 - "https://home-manager-options.extranix.com/images/favicon.png"; 248 - "Noogle" = mkEngine [ 249 - "@noogle" 250 - "@nixlib" 251 - ] "https://noogle.dev/q?limit=100&term={searchTerms}" "png"; 252 - "SourceGraph Nix" = 253 - mkEngine [ "@sgn" "@yoink" ] 254 - "https://sourcegraph.com/search?q=lang:Nix+-repo:NixOS/*+-repo:nix-community/*+{searchTerms}" 255 - "png"; 256 - "Nixpkgs Issues" = 257 - mkEngineForceFavicon [ "@nixissues" ] 258 - "https://github.com/NixOS/nixpkgs/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+{searchTerms}" 259 - "https://github.githubassets.com/favicons/favicon-dark.svg"; 260 - "NixVim Options" = 261 - mkEngineForceFavicon [ "@nixvim" ] 262 - "https://nix-community.github.io/nixvim/search/?option_scope=0&query={searchTerms}" 263 - "https://nix-community.github.io/nixvim/search/favicon.ico"; 228 + ### Nix 229 + "Nix Packages" = mkEngine [ 230 + "@nixpkgs" 231 + ] "https://search.nixos.org/packages?channel=unstable&size=500&query={searchTerms}" "png"; 232 + "NixOS Options" = mkEngine [ 233 + "@nixos" 234 + ] "https://search.nixos.org/options?channel=unstable&size=500&query={searchTerms}" "png"; 235 + "NixOS Wiki" = mkEngine ["@nixwiki"] "https://nixos.wiki/index.php?search={searchTerms}" "png"; 236 + "Home Manager Options" = 237 + mkEngineForceFavicon ["@hm"] 238 + "https://home-manager-options.extranix.com/?release=master&query={searchTerms}" 239 + "https://home-manager-options.extranix.com/images/favicon.png"; 240 + "Noogle" = mkEngine [ 241 + "@noogle" 242 + "@nixlib" 243 + ] "https://noogle.dev/q?limit=100&term={searchTerms}" "png"; 244 + "SourceGraph Nix" = 245 + mkEngine ["@sgn" "@yoink"] 246 + "https://sourcegraph.com/search?q=lang:Nix+-repo:NixOS/*+-repo:nix-community/*+{searchTerms}" 247 + "png"; 248 + "Nixpkgs Issues" = 249 + mkEngineForceFavicon ["@nixissues"] 250 + "https://github.com/NixOS/nixpkgs/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+{searchTerms}" 251 + "https://github.githubassets.com/favicons/favicon-dark.svg"; 252 + "NixVim Options" = 253 + mkEngineForceFavicon ["@nixvim"] 254 + "https://nix-community.github.io/nixvim/search/?option_scope=0&query={searchTerms}" 255 + "https://nix-community.github.io/nixvim/search/favicon.ico"; 264 256 265 - # Media 266 - "youtube" = mkEngine [ "@yt" ] "https://www.youtube.com/results?search_query={searchTerms}" "ico"; 267 - "Spotify" = 268 - mkEngineForceFavicon [ "@sp" "@spotify" ] "https://open.spotify.com/search/{searchTerms}" 269 - "https://open.spotifycdn.com/cdn/images/favicon16.1c487bff.png"; 270 - "Netflix" = mkEngine [ "@nfx" ] "https://www.netflix.com/search?q={searchTerms}" "ico"; 271 - "IMDb" = mkEngine [ "@imdb" ] "https://www.imdb.com/find?q={searchTerms}" "ico"; 257 + # Media 258 + "youtube" = mkEngine ["@yt"] "https://www.youtube.com/results?search_query={searchTerms}" "ico"; 259 + "Spotify" = 260 + mkEngineForceFavicon ["@sp" "@spotify"] "https://open.spotify.com/search/{searchTerms}" 261 + "https://open.spotifycdn.com/cdn/images/favicon16.1c487bff.png"; 262 + "Netflix" = mkEngine ["@nfx"] "https://www.netflix.com/search?q={searchTerms}" "ico"; 263 + "IMDb" = mkEngine ["@imdb"] "https://www.imdb.com/find?q={searchTerms}" "ico"; 272 264 273 - # Misc 274 - "Firefox Add-ons" = mkEngine [ 275 - "@addons" 276 - ] "https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}" "ico"; 277 - "Urban Dictionary" = mkEngine [ 278 - "@ud" 279 - "@urban" 280 - ] "https://www.urbandictionary.com/define.php?term={searchTerms}" "ico"; 265 + # Misc 266 + "Firefox Add-ons" = mkEngine [ 267 + "@addons" 268 + ] "https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}" "ico"; 269 + "Urban Dictionary" = mkEngine [ 270 + "@ud" 271 + "@urban" 272 + ] "https://www.urbandictionary.com/define.php?term={searchTerms}" "ico"; 281 273 282 - # Overrides 283 - "History".metaData.alias = "@h"; 284 - "Bookmarks".metaData.alias = "@b"; 285 - "Tabs".metaData.alias = "@t"; 286 - "bing@search.mozilla.orgdefault".metaData.hidden = true; 287 - "amazondotcom-us@search.mozilla.orgdefault".metaData.alias = "@amz"; 288 - "google@search.mozilla.orgdefault".metaData.alias = "@g"; 289 - "wikipedia@search.mozilla.orgdefault".metaData.alias = "@w"; 290 - }; 274 + # Overrides 275 + "History".metaData.alias = "@h"; 276 + "Bookmarks".metaData.alias = "@b"; 277 + "Tabs".metaData.alias = "@t"; 278 + "bing@search.mozilla.orgdefault".metaData.hidden = true; 279 + "amazondotcom-us@search.mozilla.orgdefault".metaData.alias = "@amz"; 280 + "google@search.mozilla.orgdefault".metaData.alias = "@g"; 281 + "wikipedia@search.mozilla.orgdefault".metaData.alias = "@w"; 282 + }; 291 283 }; 292 284 }; 293 285 };