Flake for my NixOS devices

Switch to Firefox, Update Nushell Scripts

bwc9876.dev 4a44235e 217e910b

verified
+308 -324
+1 -1
nixosModules/base/nushell.nix
··· 36 36 } 37 37 let multiple_completers = {|spans| 38 38 # if the current command is an alias, get it's expansion 39 - let expanded_alias = (scope aliases | where name == $spans.0 | get -i 0 | get -i expansion) 39 + let expanded_alias = (scope aliases | where name == $spans.0 | get -o 0 | get -o expansion) 40 40 41 41 # overwrite 42 42
+293
nixosModules/graphics/firefox.nix
··· 1 + { 2 + lib, 3 + pkgs, 4 + ... 5 + }: let 6 + package = pkgs.firefox-devedition; 7 + in { 8 + environment.systemPackages = [ 9 + package 10 + ]; 11 + 12 + home-manager.users.bean = { 13 + programs.firefox = { 14 + inherit package; 15 + enable = true; 16 + 17 + policies = { 18 + DisableTelemetry = true; 19 + DisableFirefoxStudies = true; 20 + DisableSetDesktopBackground = true; 21 + DontCheckDefaultBrowser = true; 22 + AppAutoUpdate = false; 23 + DNSOverHTTPS.Enabled = true; 24 + ShowHomeButton = true; 25 + DisplayBookmarksToolbar = "always"; 26 + DisableProfileImport = true; 27 + DisablePocket = true; 28 + DisableFirefoxAccounts = true; 29 + OfferToSaveLoginsDefault = false; 30 + OverrideFirstRunPage = ""; 31 + NoDefaultBookmarks = true; 32 + PasswordManagerEnabled = false; 33 + SearchBar = "unified"; 34 + EncryptedMediaExtensions = true; 35 + 36 + EnableTrackingProtection = { 37 + Value = true; 38 + Locked = true; 39 + Cryptomining = true; 40 + Fingerprinting = true; 41 + EmailTracking = true; 42 + }; 43 + 44 + Preferences = let 45 + lock = val: { 46 + Value = val; 47 + Status = "locked"; 48 + }; 49 + in { 50 + # General 51 + "browser.aboutConfig.showWarning" = lock false; 52 + "media.eme.enabled" = lock true; # Encrypted Media Extensions (DRM) 53 + "layout.css.prefers-color-scheme.content-override" = lock 0; 54 + "browser.startup.page" = 3; # Restore previous session 55 + "toolkit.telemetry.server" = lock ""; 56 + 57 + # New Tab 58 + "browser.newtabpage.activity-stream.showSponsored" = lock false; 59 + "browser.newtabpage.activity-stream.system.showSponsored" = lock false; 60 + "browser.newtabpage.activity-stream.feeds.section.topstories" = lock false; 61 + "browser.newtabpage.activity-stream.feeds.topsites" = lock false; 62 + "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock false; 63 + "browser.newtabpage.activity-stream.showWeather" = lock false; 64 + "browser.newtabpage.activity-stream.system.showWeather" = lock false; 65 + "browser.newtabpage.activity-stream.feeds.weatherfeed" = lock false; 66 + "browser.newtabpage.activity-stream.feeds.telemetry" = lock false; 67 + "browser.newtabpage.activity-stream.telemetry" = lock false; 68 + "browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = lock ""; 69 + "browser.newtabpage.pinned" = lock []; 70 + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = lock ""; 71 + "browser.urlbar.suggest.weather" = lock false; 72 + "browser.urlbar.quicksuggest.scenario" = lock "offline"; 73 + "browser.urlbar.suggest.quicksuggest.nonsponsored" = lock false; 74 + "browser.urlbar.suggest.quicksuggest.sponsored" = lock false; 75 + 76 + # Devtools 77 + "devtools.theme" = lock "dark"; 78 + "devtools.dom.enabled" = lock true; 79 + "devtools.command-button-rulers.enabled" = lock true; 80 + "devtools.command-button-measure.enabled" = lock true; 81 + "devtools.command-button-screenshot.enabled" = lock true; 82 + "devtools.toolbox.host" = lock "right"; 83 + "devtools.webconsole.persistlog" = lock true; 84 + "devtools.webconsole.timestampMessages" = lock true; 85 + 86 + # Privacy 87 + "dom.private-attribution.submission.enabled" = lock false; 88 + "privacy.globalprivacycontrol.enabled" = lock true; 89 + }; 90 + 91 + Extensions.Install = 92 + map (x: "https://addons.mozilla.org/firefox/downloads/latest/${x}/latest.xpi") 93 + [ 94 + # Appearance 95 + "firefox-color" 96 + "material-icons-for-github" 97 + 98 + # Security / Privacy 99 + "facebook-container" 100 + 101 + ## Ads / Youtube 102 + "ublock-origin" 103 + "sponsorblock" 104 + 105 + # Information 106 + "flagfox" 107 + "awesome-rss" 108 + 109 + # Devtools 110 + "react-devtools" 111 + "open-graph-preview-and-debug" 112 + "wave-accessibility-tool" 113 + "styl-us" 114 + 115 + # Misc 116 + "keepassxc-browser" # integration with KeepassXC 117 + ]; 118 + 119 + ExtensionSettings."*" = { 120 + default_area = "menupanel"; 121 + }; 122 + }; 123 + profiles.dev-edition-default = { 124 + extensions = { 125 + force = true; 126 + settings = { 127 + "sponsorBlocker@ajay.app".settings.alreadyInstalled = true; 128 + "uBlock0@raymondhill.net".settings.selectedFilterLists = [ 129 + "ublock-filters" 130 + "ublock-badware" 131 + "ublock-privacy" 132 + "ublock-unbreak" 133 + "ublock-quick-fixes" 134 + ]; 135 + # Stylus 136 + "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = { 137 + dbInChromeStorage = true; # required se DB is stored in state.js 138 + updateOnlyEnabled = true; 139 + patchCsp = true; 140 + instantInject = true; 141 + }; 142 + }; 143 + }; 144 + search = { 145 + force = true; 146 + default = "ddg"; 147 + privateDefault = "ddg"; 148 + engines = let 149 + mkEngineForceFavicon = aliases: queryUrl: iconUrl: { 150 + definedAliases = aliases; 151 + icon = iconUrl; 152 + urls = [{template = queryUrl;}]; 153 + }; 154 + mkEngine = aliases: queryUrl: iconExt: (mkEngineForceFavicon aliases queryUrl ( 155 + let 156 + noPath = lib.strings.concatStrings ( 157 + lib.strings.intersperse "/" (lib.lists.take 3 (lib.strings.splitString "/" queryUrl)) 158 + ); 159 + in "${noPath}/favicon.${iconExt}" 160 + )); 161 + in { 162 + # Dev 163 + "GitHub Repos" = 164 + mkEngineForceFavicon ["@gh" "@github"] 165 + "https://github.com/search?type=repositories&q={searchTerms}" 166 + "https://github.githubassets.com/favicons/favicon-dark.svg"; 167 + "SourceGraph" = mkEngine [ 168 + "@sg" 169 + "@sourcegraph" 170 + ] "https://sourcegraph.com/search?q={searchTerms}" "png"; 171 + 172 + ## Web 173 + "MDN Web Docs" = mkEngine [ 174 + "@mdn" 175 + ] "https://developer.mozilla.org/en-US/search?q={searchTerms}" "ico"; 176 + "Web.Dev" = 177 + mkEngineForceFavicon ["@webdev" "@lighthouse"] "https://web.dev/s/results?q={searchTerms}" 178 + "https://www.gstatic.com/devrel-devsite/prod/vc7080045e84cd2ce1faf7f7a3876037748d52d088e5100df2e949d051a784791/web/images/favicon.png"; 179 + "Can I Use" = mkEngineForceFavicon [ 180 + "@ciu" 181 + "@baseline" 182 + ] "https://caniuse.com/?search={searchTerms}" "https://caniuse.com/img/favicon-128.png"; 183 + "NPM" = 184 + mkEngineForceFavicon ["@npm"] "https://www.npmjs.com/search?q={searchTerms}" 185 + "https://static-production.npmjs.com/3dc95981de4241b35cd55fe126ab6b2c.png"; 186 + "Iconify" = mkEngine [ 187 + "@iconify" 188 + "@icons" 189 + ] "https://icon-sets.iconify.design/?query={searchTerms}" "ico"; 190 + "Astro" = mkEngineForceFavicon [ 191 + "@astro" 192 + ] "https://a.stro.cc/{searchTerms}" "https://docs.astro.build/favicon.svg"; 193 + "Porkbun" = mkEngine ["@porkbun"] "https://porkbun.com/checkout/search?q={searchTerms}" "ico"; 194 + "Http.Cat" = mkEngine ["@cat" "@hcat" "@httpcat"] "https://http.cat/{searchTerms}" "ico"; 195 + 196 + ## Rust 197 + "Crates.io" = mkEngine [ 198 + "@crates" 199 + "@cratesio" 200 + "@cargo" 201 + ] "https://crates.io/search?q={searchTerms}" "ico"; 202 + "Rust Docs" = 203 + mkEngineForceFavicon ["@rust" "@rustdocs" "@ruststd"] 204 + "https://doc.rust-lang.org/std/index.html?search={searchTerms}" 205 + "https://doc.rust-lang.org/static.files/favicon-2c020d218678b618.svg"; 206 + "Docsrs" = mkEngine ["@docsrs"] "https://docs.rs/releases/search?query={searchTerms}" "ico"; 207 + 208 + ## Python 209 + "PyPI" = mkEngineForceFavicon [ 210 + "@pypi" 211 + "@pip" 212 + ] "https://pypi.org/search/?q={searchTerms}" "https://pypi.org/static/images/favicon.35549fe8.ico"; 213 + 214 + ## .NET 215 + "NuGet" = mkEngine ["@nuget"] "https://www.nuget.org/packages?q={searchTerms}" "ico"; 216 + 217 + ## Linux Stuff 218 + "Kernel Docs" = mkEngine [ 219 + "@lnx" 220 + "@linux" 221 + "@kernel" 222 + ] "https://www.kernel.org/doc/html/latest/search.html?q={searchTerms}" "ico"; 223 + "Arch Wiki" = mkEngine [ 224 + "@aw" 225 + "@arch" 226 + ] "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search={searchTerms}" "ico"; 227 + "Nerd Fonts" = 228 + mkEngineForceFavicon ["@nf" "@nerdfonts"] "https://www.nerdfonts.com/cheat-sheet?q={searchTerms}" 229 + "https://www.nerdfonts.com/assets/img/favicon.ico"; 230 + 231 + ### Nix 232 + "Nix Packages" = mkEngine [ 233 + "@nixpkgs" 234 + ] "https://search.nixos.org/packages?channel=unstable&size=500&query={searchTerms}" "png"; 235 + "NixOS Options" = mkEngine [ 236 + "@nixos" 237 + ] "https://search.nixos.org/options?channel=unstable&size=500&query={searchTerms}" "png"; 238 + "NixOS Wiki" = mkEngine ["@nixwiki"] "https://nixos.wiki/index.php?search={searchTerms}" "png"; 239 + "Home Manager Options" = 240 + mkEngineForceFavicon ["@hm"] 241 + "https://home-manager-options.extranix.com/?release=master&query={searchTerms}" 242 + "https://home-manager-options.extranix.com/images/favicon.png"; 243 + "Noogle" = mkEngine [ 244 + "@noogle" 245 + "@nixlib" 246 + ] "https://noogle.dev/q?limit=100&term={searchTerms}" "png"; 247 + "SourceGraph Nix" = 248 + mkEngine ["@sgn" "@yoink"] 249 + "https://sourcegraph.com/search?q=lang:Nix+-repo:NixOS/*+-repo:nix-community/*+{searchTerms}" 250 + "png"; 251 + "Nixpkgs Issues" = 252 + mkEngineForceFavicon ["@nixissues"] 253 + "https://github.com/NixOS/nixpkgs/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+{searchTerms}" 254 + "https://github.githubassets.com/favicons/favicon-dark.svg"; 255 + "NixVim Options" = 256 + mkEngineForceFavicon ["@nixvim"] 257 + "https://nix-community.github.io/nixvim/search/?option_scope=0&query={searchTerms}" 258 + "https://nix-community.github.io/nixvim/search/favicon.ico"; 259 + 260 + # Media 261 + "youtube" = mkEngine ["@yt"] "https://www.youtube.com/results?search_query={searchTerms}" "ico"; 262 + "Spotify" = 263 + mkEngineForceFavicon ["@sp" "@spotify"] "https://open.spotify.com/search/{searchTerms}" 264 + "https://open.spotifycdn.com/cdn/images/favicon16.1c487bff.png"; 265 + "Netflix" = mkEngine ["@nfx"] "https://www.netflix.com/search?q={searchTerms}" "ico"; 266 + "IMDb" = mkEngine ["@imdb"] "https://www.imdb.com/find?q={searchTerms}" "ico"; 267 + 268 + # Misc 269 + "Firefox Add-ons" = mkEngine [ 270 + "@addons" 271 + ] "https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}" "ico"; 272 + "Urban Dictionary" = mkEngine [ 273 + "@ud" 274 + "@urban" 275 + ] "https://www.urbandictionary.com/define.php?term={searchTerms}" "ico"; 276 + "Google Translate" = mkEngine [ 277 + "@translate" 278 + ] "https://translate.google.com/?sl=auto&tl=en&text={searchTerms}&op=translate" "ico"; 279 + 280 + # Overrides 281 + "History".metaData.alias = "@h"; 282 + "Bookmarks".metaData.alias = "@b"; 283 + "Tabs".metaData.alias = "@t"; 284 + "bing".metaData.hidden = true; 285 + "amazondotcom-us".metaData.alias = "@amz"; 286 + "google".metaData.alias = "@g"; 287 + "wikipedia".metaData.alias = "@w"; 288 + }; 289 + }; 290 + }; 291 + }; 292 + }; 293 + }
-304
nixosModules/graphics/floorp.nix
··· 1 - { 2 - lib, 3 - pkgs, 4 - ... 5 - }: { 6 - nixpkgs.overlays = [ 7 - (final: prev: { 8 - floorp-unwrapped = 9 - (prev.floorp-unwrapped.override { 10 - privacySupport = true; 11 - webrtcSupport = true; 12 - enableOfficialBranding = false; 13 - geolocationSupport = true; 14 - # https://github.com/NixOS/nixpkgs/issues/418473 15 - ltoSupport = false; 16 - }).overrideAttrs 17 - (prev: { 18 - MOZ_DATA_REPORTING = ""; 19 - MOZ_TELEMETRY_REPORTING = ""; 20 - }); 21 - }) 22 - ]; 23 - 24 - environment.systemPackages = with pkgs; [ 25 - floorp 26 - ]; 27 - 28 - networking.stevenblack = { 29 - enable = true; 30 - block = [ 31 - "fakenews" 32 - "gambling" 33 - "porn" 34 - ]; 35 - }; 36 - 37 - home-manager.users.bean = { 38 - catppuccin.floorp.profiles = { 39 - default.enable = false; 40 - floorp-default.enable = false; 41 - }; 42 - programs.floorp = { 43 - enable = true; 44 - policies = { 45 - DisableTelemetry = true; 46 - DisableFirefoxStudies = true; 47 - DisableSetDesktopBackground = true; 48 - DontCheckDefaultBrowser = true; 49 - AppAutoUpdate = false; 50 - DNSOverHTTPS.Enabled = true; 51 - ShowHomeButton = true; 52 - DisplayBookmarksToolbar = "always"; 53 - DisableProfileImport = true; 54 - DisablePocket = true; 55 - DisableFirefoxAccounts = true; 56 - OfferToSaveLoginsDefault = false; 57 - OverrideFirstRunPage = ""; 58 - NoDefaultBookmarks = true; 59 - PasswordManagerEnabled = false; 60 - SearchBar = "unified"; 61 - EncryptedMediaExtensions = true; 62 - 63 - EnableTrackingProtection = { 64 - Value = true; 65 - Locked = true; 66 - Cryptomining = true; 67 - Fingerprinting = true; 68 - EmailTracking = true; 69 - }; 70 - 71 - Preferences = let 72 - lock = val: { 73 - Value = val; 74 - Status = "locked"; 75 - }; 76 - in { 77 - # General 78 - "browser.aboutConfig.showWarning" = lock false; 79 - "media.eme.enabled" = lock true; # Encrypted Media Extensions (DRM) 80 - "layout.css.prefers-color-scheme.content-override" = lock 0; 81 - "browser.startup.page" = 3; # Restore previous session 82 - "toolkit.telemetry.server" = lock ""; 83 - 84 - # New Tab 85 - "browser.newtabpage.activity-stream.showSponsored" = lock false; 86 - "browser.newtabpage.activity-stream.system.showSponsored" = lock false; 87 - "browser.newtabpage.activity-stream.feeds.section.topstories" = lock false; 88 - "browser.newtabpage.activity-stream.feeds.topsites" = lock false; 89 - "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock false; 90 - "browser.newtabpage.activity-stream.showWeather" = lock false; 91 - "browser.newtabpage.activity-stream.system.showWeather" = lock false; 92 - "browser.newtabpage.activity-stream.feeds.weatherfeed" = lock false; 93 - "browser.newtabpage.activity-stream.feeds.telemetry" = lock false; 94 - "browser.newtabpage.activity-stream.telemetry" = lock false; 95 - "browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = lock ""; 96 - "browser.newtabpage.pinned" = lock []; 97 - "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = lock ""; 98 - "browser.urlbar.suggest.weather" = lock false; 99 - "browser.urlbar.quicksuggest.scenario" = lock "offline"; 100 - "browser.urlbar.suggest.quicksuggest.nonsponsored" = lock false; 101 - "browser.urlbar.suggest.quicksuggest.sponsored" = lock false; 102 - 103 - # Devtools 104 - "devtools.theme" = lock "dark"; 105 - "devtools.dom.enabled" = lock true; 106 - "devtools.command-button-rulers.enabled" = lock true; 107 - "devtools.command-button-measure.enabled" = lock true; 108 - "devtools.command-button-screenshot.enabled" = lock true; 109 - "devtools.toolbox.host" = lock "right"; 110 - "devtools.webconsole.persistlog" = lock true; 111 - "devtools.webconsole.timestampMessages" = lock true; 112 - 113 - # Privacy 114 - "dom.private-attribution.submission.enabled" = lock false; 115 - "privacy.globalprivacycontrol.enabled" = lock true; 116 - }; 117 - 118 - Extensions.Install = 119 - map (x: "https://addons.mozilla.org/firefox/downloads/latest/${x}/latest.xpi") 120 - [ 121 - # Appearance 122 - "catppuccin-mocha-green" 123 - "darkreader" 124 - "material-icons-for-github" 125 - "refined-github-" 126 - 127 - # Security / Privacy 128 - "privacy-badger17" 129 - "decentraleyes" 130 - "canvasblocker" 131 - "facebook-container" 132 - 133 - ## Ads / Youtube 134 - "adnauseam" 135 - "sponsorblock" 136 - "youtube-shorts-block" 137 - "dearrow" 138 - 139 - # Information 140 - "flagfox" 141 - "awesome-rss" 142 - 143 - # Devtools 144 - "react-devtools" 145 - "open-graph-preview-and-debug" 146 - "wave-accessibility-tool" 147 - "styl-us" 148 - 149 - # Misc 150 - "plasma-integration" # integration with MPRIS & KDE Connect 151 - "keepassxc-browser" # integration with KeepassXC 152 - "meowad" # Replace ads on Twitter with :3 153 - ]; 154 - 155 - ExtensionSettings."*" = { 156 - default_area = "menupanel"; 157 - }; 158 - }; 159 - profiles.floorp-default.search = { 160 - force = true; 161 - default = "ddg@search.mozilla.orgdefault"; 162 - privateDefault = "ddg@search.mozilla.orgdefault"; 163 - engines = let 164 - mkEngineForceFavicon = aliases: queryUrl: iconUrl: { 165 - definedAliases = aliases; 166 - icon = iconUrl; 167 - urls = [{template = queryUrl;}]; 168 - }; 169 - mkEngine = aliases: queryUrl: iconExt: (mkEngineForceFavicon aliases queryUrl ( 170 - let 171 - noPath = lib.strings.concatStrings ( 172 - lib.strings.intersperse "/" (lib.lists.take 3 (lib.strings.splitString "/" queryUrl)) 173 - ); 174 - in "${noPath}/favicon.${iconExt}" 175 - )); 176 - in { 177 - # Dev 178 - "GitHub Repos" = 179 - mkEngineForceFavicon ["@gh" "@github"] 180 - "https://github.com/search?type=repositories&q={searchTerms}" 181 - "https://github.githubassets.com/favicons/favicon-dark.svg"; 182 - "SourceGraph" = mkEngine [ 183 - "@sg" 184 - "@sourcegraph" 185 - ] "https://sourcegraph.com/search?q={searchTerms}" "png"; 186 - 187 - ## Web 188 - "MDN Web Docs" = mkEngine [ 189 - "@mdn" 190 - ] "https://developer.mozilla.org/en-US/search?q={searchTerms}" "ico"; 191 - "Web.Dev" = 192 - mkEngineForceFavicon ["@webdev" "@lighthouse"] "https://web.dev/s/results?q={searchTerms}" 193 - "https://www.gstatic.com/devrel-devsite/prod/vc7080045e84cd2ce1faf7f7a3876037748d52d088e5100df2e949d051a784791/web/images/favicon.png"; 194 - "Can I Use" = mkEngineForceFavicon [ 195 - "@ciu" 196 - "@baseline" 197 - ] "https://caniuse.com/?search={searchTerms}" "https://caniuse.com/img/favicon-128.png"; 198 - "NPM" = 199 - mkEngineForceFavicon ["@npm"] "https://www.npmjs.com/search?q={searchTerms}" 200 - "https://static-production.npmjs.com/3dc95981de4241b35cd55fe126ab6b2c.png"; 201 - "Iconify" = mkEngine [ 202 - "@iconify" 203 - "@icons" 204 - ] "https://icon-sets.iconify.design/?query={searchTerms}" "ico"; 205 - "Astro" = mkEngineForceFavicon [ 206 - "@astro" 207 - ] "https://a.stro.cc/{searchTerms}" "https://docs.astro.build/favicon.svg"; 208 - "Porkbun" = mkEngine ["@porkbun"] "https://porkbun.com/checkout/search?q={searchTerms}" "ico"; 209 - "Http.Cat" = mkEngine ["@cat" "@hcat" "@httpcat"] "https://http.cat/{searchTerms}" "ico"; 210 - 211 - ## Rust 212 - "Crates.io" = mkEngine [ 213 - "@crates" 214 - "@cratesio" 215 - "@cargo" 216 - ] "https://crates.io/search?q={searchTerms}" "ico"; 217 - "Rust Docs" = 218 - mkEngineForceFavicon ["@rust" "@rustdocs" "@ruststd"] 219 - "https://doc.rust-lang.org/std/index.html?search={searchTerms}" 220 - "https://doc.rust-lang.org/static.files/favicon-2c020d218678b618.svg"; 221 - "Docsrs" = mkEngine ["@docsrs"] "https://docs.rs/releases/search?query={searchTerms}" "ico"; 222 - 223 - ## Python 224 - "PyPI" = mkEngineForceFavicon [ 225 - "@pypi" 226 - "@pip" 227 - ] "https://pypi.org/search/?q={searchTerms}" "https://pypi.org/static/images/favicon.35549fe8.ico"; 228 - 229 - ## .NET 230 - "NuGet" = mkEngine ["@nuget"] "https://www.nuget.org/packages?q={searchTerms}" "ico"; 231 - 232 - ## Linux Stuff 233 - "Kernel Docs" = mkEngine [ 234 - "@lnx" 235 - "@linux" 236 - "@kernel" 237 - ] "https://www.kernel.org/doc/html/latest/search.html?q={searchTerms}" "ico"; 238 - "Arch Wiki" = mkEngine [ 239 - "@aw" 240 - "@arch" 241 - ] "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search={searchTerms}" "ico"; 242 - "Nerd Fonts" = 243 - mkEngineForceFavicon ["@nf" "@nerdfonts"] "https://www.nerdfonts.com/cheat-sheet?q={searchTerms}" 244 - "https://www.nerdfonts.com/assets/img/favicon.ico"; 245 - 246 - ### Nix 247 - "Nix Packages" = mkEngine [ 248 - "@nixpkgs" 249 - ] "https://search.nixos.org/packages?channel=unstable&size=500&query={searchTerms}" "png"; 250 - "NixOS Options" = mkEngine [ 251 - "@nixos" 252 - ] "https://search.nixos.org/options?channel=unstable&size=500&query={searchTerms}" "png"; 253 - "NixOS Wiki" = mkEngine ["@nixwiki"] "https://nixos.wiki/index.php?search={searchTerms}" "png"; 254 - "Home Manager Options" = 255 - mkEngineForceFavicon ["@hm"] 256 - "https://home-manager-options.extranix.com/?release=master&query={searchTerms}" 257 - "https://home-manager-options.extranix.com/images/favicon.png"; 258 - "Noogle" = mkEngine [ 259 - "@noogle" 260 - "@nixlib" 261 - ] "https://noogle.dev/q?limit=100&term={searchTerms}" "png"; 262 - "SourceGraph Nix" = 263 - mkEngine ["@sgn" "@yoink"] 264 - "https://sourcegraph.com/search?q=lang:Nix+-repo:NixOS/*+-repo:nix-community/*+{searchTerms}" 265 - "png"; 266 - "Nixpkgs Issues" = 267 - mkEngineForceFavicon ["@nixissues"] 268 - "https://github.com/NixOS/nixpkgs/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+{searchTerms}" 269 - "https://github.githubassets.com/favicons/favicon-dark.svg"; 270 - "NixVim Options" = 271 - mkEngineForceFavicon ["@nixvim"] 272 - "https://nix-community.github.io/nixvim/search/?option_scope=0&query={searchTerms}" 273 - "https://nix-community.github.io/nixvim/search/favicon.ico"; 274 - 275 - # Media 276 - "youtube" = mkEngine ["@yt"] "https://www.youtube.com/results?search_query={searchTerms}" "ico"; 277 - "Spotify" = 278 - mkEngineForceFavicon ["@sp" "@spotify"] "https://open.spotify.com/search/{searchTerms}" 279 - "https://open.spotifycdn.com/cdn/images/favicon16.1c487bff.png"; 280 - "Netflix" = mkEngine ["@nfx"] "https://www.netflix.com/search?q={searchTerms}" "ico"; 281 - "IMDb" = mkEngine ["@imdb"] "https://www.imdb.com/find?q={searchTerms}" "ico"; 282 - 283 - # Misc 284 - "Firefox Add-ons" = mkEngine [ 285 - "@addons" 286 - ] "https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}" "ico"; 287 - "Urban Dictionary" = mkEngine [ 288 - "@ud" 289 - "@urban" 290 - ] "https://www.urbandictionary.com/define.php?term={searchTerms}" "ico"; 291 - 292 - # Overrides 293 - "History".metaData.alias = "@h"; 294 - "Bookmarks".metaData.alias = "@b"; 295 - "Tabs".metaData.alias = "@t"; 296 - "bing@search.mozilla.orgdefault".metaData.hidden = true; 297 - "amazondotcom-us@search.mozilla.orgdefault".metaData.alias = "@amz"; 298 - "google@search.mozilla.orgdefault".metaData.alias = "@g"; 299 - "wikipedia@search.mozilla.orgdefault".metaData.alias = "@w"; 300 - }; 301 - }; 302 - }; 303 - }; 304 - }
+1 -1
nixosModules/graphics/hypr.nix
··· 109 109 in 110 110 [ 111 111 "SUPER,M,submap,passthru" 112 - "SUPER,Q,exec,uwsm app -- floorp.desktop" 112 + "SUPER,Q,exec,uwsm app -- firefox-devedition.desktop" 113 113 "SUPER,Z,exec,systemctl suspend" 114 114 ",XF86AudioMedia,exec,${openTerminal}" 115 115 "SUPER,T,exec,${openTerminal}"
+2 -3
nixosModules/graphics/waybar.nix
··· 396 396 player-icons = { 397 397 QMPlay2 = "󰐌"; 398 398 default = "󰎆"; 399 - firefox = "󰖟"; 400 - firefox-devedition = "󰖟"; 399 + firefox = ""; 400 + firefox-devedition = ""; 401 401 chromium = "󰖟"; 402 - floorp = "󰖟"; 403 402 kdeconnect = ""; 404 403 spotify = "󰓇"; 405 404 };
+3 -7
nixosModules/graphics/xdg.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: { 1 + {config, ...}: { 6 2 xdg.mime = { 7 3 removedAssociations = { 8 4 "inode/directory" = ["QMPlay2.desktop" "QMPlay2_enqueue.desktop"]; 9 5 }; 10 6 defaultApplications = { 11 - "application/pdf" = "floorp.desktop"; 12 - "image/*" = ["org.gnome.Loupe.desktop" "floorp.desktop" "chromium-browser.desktop"]; 7 + "application/pdf" = "firefox-devedition.desktop"; 8 + "image/*" = ["org.gnome.Loupe.desktop" "firefox-devedition.desktop" "chromium-browser.desktop"]; 13 9 "text/*" = "neovide.desktop"; 14 10 "inode/directory" = "yazi.desktop"; 15 11 };
+2 -2
res/battery_notif.nu
··· 73 73 print "===========" "Device List" ($devices | select friendly_name upower_path Type) "-----------"; 74 74 75 75 for dev in $devices { 76 - if (($shown_notifs | get -i $dev.upower_path | get -i 0) == null) { 76 + if (($shown_notifs | get -o $dev.upower_path | get -o 0) == null) { 77 77 $shown_notifs = ($shown_notifs | insert $dev.upower_path false); 78 78 } 79 79 80 - let has_shown_notif = $shown_notifs | get -i $dev.upower_path | get -i 0; 80 + let has_shown_notif = $shown_notifs | get -o $dev.upower_path | get -o 0; 81 81 82 82 if ((should_display_notif $dev) and not $has_shown_notif) { 83 83 #print $"Device ($dev.friendly_name) is below 10% charge, showing notification";
+2 -2
res/custom_waybar_modules/kdeconnect.nu
··· 29 29 def supports_battery [device: record] { 30 30 let reachable = is_reachable $device; 31 31 let supported = "kdeconnect_battery" in ($device.supportedPlugins? | default []); 32 - let exists = dbus introspect --session --dest=$BUS_NAME (dev_path $device.id) | get -i children | default [] | any {|it| $it.name == "battery"} 32 + let exists = dbus introspect --session --dest=$BUS_NAME (dev_path $device.id) | get -o children | default [] | any {|it| $it.name == "battery"} 33 33 34 34 $reachable and $supported and $exists 35 35 } ··· 72 72 73 73 let reachable = is_reachable $it; 74 74 75 - let icons = $icon_ref | get -i ($it.type? | default "") | default $icon_ref.phone; 75 + let icons = $icon_ref | get -o ($it.type? | default "") | default $icon_ref.phone; 76 76 77 77 let battery_info = get_battery_info $it | default { isCharging: false }; 78 78
+3 -3
res/custom_waybar_modules/weather.nu
··· 115 115 } 116 116 117 117 def get_icon [condition: string, is_night: bool] { 118 - let icon = $WEATHER_ICONS | get -i $condition | default $WEATHER_ICONS.Unknown; 118 + let icon = $WEATHER_ICONS | get -o $condition | default $WEATHER_ICONS.Unknown; 119 119 120 120 if $is_night { 121 - $NIGHT_MAP | get -i $icon | default $icon 121 + $NIGHT_MAP | get -o $icon | default $icon 122 122 } else { 123 123 $icon 124 124 } ··· 151 151 let astronomy = $weather.astronomy.0 152 152 let area = $raw.nearest_area.0 153 153 154 - let condition = $WWO_CODE | get -i $current_condition.weatherCode | default "Unknown" 154 + let condition = $WWO_CODE | get -o $current_condition.weatherCode | default "Unknown" 155 155 156 156 let night = is_night $astronomy 157 157
+1 -1
res/notification.nu
··· 30 30 def main [sounds_path: string] { 31 31 let dnd = swaync-client -D | from json; 32 32 if (not $dnd) and ($name not-in $SILENCED_APP_NAMES) { 33 - let sound = $APP_SOUNDS | get -i $name | default $APP_SOUNDS.DEFAULT; 33 + let sound = $APP_SOUNDS | get -o $name | default $APP_SOUNDS.DEFAULT; 34 34 aplay $"($sounds_path)/($sound).wav" 35 35 } 36 36 }