firefox.nix (7030B)
1 { lib, config, vars, ... }: 2 3 let 4 lang = builtins.replaceStrings [ "_" ] [ "-" ] (builtins.head (lib.splitString "." vars.user.locale)); 5 extensions = { 6 "CookieAutoDelete@kennydo.com" = "cookie-autodelete"; 7 "marcoagpinto@mail.telepac.pt" = "british-english-dictionary-2"; 8 "newtaboverride@agenedia.com" = "new-tab-override"; 9 "sponsorBlocker@ajay.app" = "sponsorblock"; 10 "uBlock0@raymondhill.net" = "ublock-origin"; 11 # "uMatrix@raymondhill.net" = "umatrix"; 12 }; 13 in 14 15 { 16 programs.firefox = { 17 enable = true; 18 languagePacks = [ lang ]; 19 configPath = "${config.xdg.configHome}/mozilla/firefox"; 20 21 profiles = { 22 default = { 23 id = 0; 24 name = "default"; 25 isDefault = true; 26 27 settings = { 28 # sort:start 29 "accessibility.browsewithcaret_shortcut.enabled" = false; # disable F7 caret browsing shortcut 30 "browser.aboutConfig.showWarning" = false; # disable about:config warning 31 "browser.aboutwelcome.enabled" = false; # disable welcome screen 32 "browser.ai.control.default" = "blocked"; # ai blocking 33 "browser.ai.control.linkPreviewKeyPoints" = "blocked"; # ai blocking 34 "browser.ai.control.pdfjsAltText" = "blocked"; # ai blocking 35 "browser.ai.control.sidebarChatbot" = "blocked"; # ai blocking 36 "browser.ai.control.smartTabGroups" = "blocked"; # ai blocking 37 "browser.ai.control.smartWindow" = "blocked"; # ai blocking 38 "browser.ai.control.translations" = "blocked"; # ai blocking 39 "browser.discovery.containers.enabled" = false; # disable containers 40 "browser.download.alwaysOpenPanel" = true; # show downloads when started, even after hiding button 41 "browser.gesture.swipe.left" = "cmd_scrollLeft"; # disable trackpad swipe gestures 42 "browser.gesture.swipe.right" = "cmd_scrollRight"; # disable trackpad swipe gestures 43 "browser.ml.linkPreview.enabled" = false; # long press link previews 44 "browser.newtab.extensionControlled" = true; # don't warn new tab page has changed 45 "browser.newtab.privateAllowed" = true; # hide new tab warning in private too 46 "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; # recommend extensions while I browse 47 "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; # recommend features while I browse 48 "browser.nova.enabled" = false; # disable new ugly gradient themes 49 "browser.profiles.enabled" = false; # disable profiles 50 "browser.search.suggest.enabled" = false; # disable search suggestions in urlbar 51 "browser.sessionstore.resume_from_crash" = false; # don't prompt to restore the previous session on startup 52 "browser.startup.couldRestoreSession.count" = "2"; # disable restore tabs on startup banner 53 "browser.startup.homepage" = "https://breadcat.github.io/startpage/"; 54 "browser.tabs.groups.enabled" = false; # disable tab grouping 55 "browser.toolbars.bookmarks.visibility" = "never"; # always hide bookmarks bar 56 "browser.uiCustomization.state" = builtins.toJSON { placements = { "nav-bar" = [ "back-button" "forward-button" "stop-reload-button" "urlbar-container" ]; "TabsToolbar" = [ "tabbrowser-tabs" ]; }; currentVersion = 26; newElementCount = 0; }; # toolbar layout 57 "browser.urlbar.showSearchTerms.enabled" = false; # always show address in address bar 58 "browser.urlbar.suggest.quicksuggest.all" = false; # disable suggestions in urlbar 59 "browser.urlbar.suggest.quicksuggest.sponsored" = false; # disable sponsored suggestions in urlbar 60 "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; 61 "extensions.autoDisableScopes" = 0; # enable extensions by default 62 "extensions.formautofill.creditCards.enabled" = false; # disable credit card saving 63 "general.autoScroll" = true; # middle mouse page scroll instead of paste 64 "intl.accept_languages" = "${lang}, en"; 65 "media.videocontrols.picture-in-picture.enabled" = false; # disable pip entirely 66 "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # disable pip popup 67 "media.webspeech.synth.dont_notify_on_error" = true; # disable speech errors 68 "media.webspeech.synth.enabled" = false; # disable speech entirely 69 "privacy.reducePageProtection.infobar.enabled.pbmode" = false; # reloading page tracker protecion bar 70 "spellchecker.dictionary" = lang; 71 # sort:end 72 }; 73 74 extensions = { 75 force = true; 76 settings = { "newtaboverride@agenedia.com".settings = { type = "homepage"; focus_website = true; }; }; 77 }; 78 79 }; 80 }; 81 82 policies = { 83 # sort:start 84 DisableFirefoxAccounts = true; 85 DisableFirefoxStudies = true; 86 DisableMasterPasswordCreation = true; 87 DisablePocket = true; 88 DisableTelemetry = true; 89 DisplayBookmarksToolbar = "never"; 90 DontCheckDefaultBrowser = true; 91 NewTabPage = false; 92 OverrideFirstRunPage = ""; 93 OverridePostUpdatePage = ""; 94 PictureInPicture.Enabled = false; 95 # sort:end 96 EnableTrackingProtection = { 97 Value = true; 98 Locked = true; 99 Cryptomining = true; 100 Fingerprinting = true; 101 }; 102 ExtensionSettings = { 103 "*".installation_mode = "blocked"; 104 } 105 106 // lib.mapAttrs 107 (_id: addon: { 108 install_url = "https://addons.mozilla.org/firefox/downloads/latest/${addon}/latest.xpi"; 109 installation_mode = "force_installed"; private_browsing = true; default_area = "menupanel"; 110 }) 111 extensions; 112 113 "3rdparty".Extensions."uBlock0@raymondhill.net".adminSettings = { 114 selectedFilterLists = [ 115 "ublock-filters" 116 "ublock-badware" 117 "ublock-privacy" 118 "ublock-unbreak" 119 "easylist" 120 "easyprivacy" 121 "plowe-0" 122 "fanboy-cookiemonster" 123 "ublock-cookies-easylist" 124 "adguard-cookies" 125 "ublock-annoyances" 126 ]; 127 128 }; 129 UserMessaging = { 130 "ExtensionRecommendations" = false; 131 "FeatureRecommendations" = false; 132 "UrlbarInterventions" = false; 133 "FirefoxLabs" = false; 134 "MoreFromMozzilla" = false; 135 "SkipOnboarding" = true; 136 "Locked" = true; 137 }; 138 }; 139 }; 140 141 home.sessionVariables = { 142 BROWSER = "firefox"; 143 MOZ_ENABLE_WAYLAND = 1; 144 }; 145 146 xdg.mimeApps.defaultApplications = { 147 "text/html" = ["firefox.desktop"]; 148 "text/xml" = ["firefox.desktop"]; 149 "x-scheme-handler/http" = ["firefox.desktop"]; 150 "x-scheme-handler/https" = ["firefox.desktop"]; 151 }; 152 153 }