yep, more dotfiles
1{ config 2, lib 3, pkgs 4, ... 5}: 6 7let 8 cfg = config.local.fragment.firefox; 9in 10{ 11 options.local.fragment.firefox.enable = lib.mkEnableOption '' 12 Firefox related 13 ''; 14 15 config = lib.mkIf cfg.enable { 16 home.sessionVariables.BROWSER = lib.getExe pkgs.firefox; 17 18 programs.firefox = { 19 enable = true; 20 21 policies = { 22 DisableTelemetry = true; 23 DisableFirefoxStudies = true; 24 DontCheckDefaultBrowser = true; 25 DisablePocket = true; 26 SearchBar = "unified"; 27 }; 28 29 profiles.default = { 30 isDefault = true; 31 32 settings = { 33 # Privacy and default bloat 34 "extensions.pocket.enabled" = false; 35 "browser.newtabpage.pinned" = ""; 36 "browser.topsites.contile.enabled" = false; 37 "browser.newtabpage.activity-stream.showSponsored" = false; 38 "browser.newtabpage.activity-stream.system.showSponsored" = false; 39 "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; 40 41 # Use vertical tabs 42 "sidebar.revamp" = true; 43 "sidebar.verticalTabs" = true; 44 45 # Disable swipe gesture 46 "browser.gesture.swipe.left" = ""; 47 "browser.gesture.swipe.right" = ""; 48 49 "browser.search.defaultenginename" = "DuckDuckGo"; 50 "browser.search.order.1" = "DuckDuckGo"; 51 52 "signon.rememberSignons" = false; 53 "widget.use-xdg-desktop-portal.file-picker" = 1; 54 "browser.aboutConfig.showWarning" = false; 55 56 # Enable meta devtools to inspect Firefox Chrome UI 57 "devtools.chrome.enabled" = true; 58 "devtools.debugger.remote-enabled" = true; 59 60 # Pickup userChrome styles at startup 61 "toolkit.legacyUserProfileCustomizations.stylesheets" = true; 62 63 # Firefox 75+ remembers the last workspace it was opened on as part of its session management. 64 # This is annoying, because I can have a blank workspace, click Firefox from the launcher, and 65 # then have Firefox open on some other workspace. 66 "widget.disable-workspace-management" = true; 67 }; 68 69 # <https://www.userchrome.org/how-create-userchrome-css.html> 70 userChrome = '' 71 /* Hide close button */ 72 .titlebar-close { display: none !important; } 73 ''; 74 75 userContent = '' 76 /* Darken PDFs in viewer to match system color scheme */ 77 @media (prefers-color-scheme: dark) { 78 #viewerContainer > #viewer > .page > .canvasWrapper > canvas, 79 #viewerContainer > #viewer > div.spread > .page > .canvasWrapper > canvas { 80 filter: grayscale(1) invert(1) sepia(1); 81 } 82 } 83 ''; 84 85 search = { 86 force = true; 87 default = "ddg"; 88 order = [ "ddg" "wikipedia" "google" ]; 89 }; 90 }; 91 }; 92 }; 93}