nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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   }