dotfiles

My PC Dotfiles & Website

modules/apps/firefox.nix (4644B)


  1## Firefox Browser Configuration ##
  2{config, ...}: let
  3  inherit (config) util;
  4in {
  5  flake.modules.homeManager.firefox = {pkgs, ...}: {
  6    xdg.mimeApps.defaultApplications = util.build.mime {
  7      browser = ["firefox.desktop"];
  8    };
  9
 10    home = {
 11      sessionVariables."MOZ_USE_XINPUT2" = "1";
 12      persist.directories = [
 13        ".cache/mozilla/firefox"
 14        ".config/mozilla/firefox"
 15      ];
 16    };
 17
 18    programs.firefox = {
 19      enable = true;
 20      package = pkgs.firefox;
 21
 22      # Policies
 23      policies = {
 24        DisableTelemetry = true;
 25        DisableFirefoxStudies = true;
 26        DisablePocket = true;
 27        EnableTrackingProtection = {
 28          Value = true;
 29          Locked = true;
 30          Cryptomining = true;
 31          Fingerprinting = true;
 32        };
 33
 34        # Extensions
 35        ExtensionSettings = let
 36          extension = shortId: uuid: {
 37            name = uuid;
 38            value = {
 39              installation_mode = "normal_installed";
 40              install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
 41            };
 42          };
 43        in
 44          builtins.listToAttrs [
 45            (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
 46            (extension "darkreader" "addon@darkreader.org")
 47            (extension "firefox-color" "FirefoxColor@mozilla.com")
 48            (extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
 49            (extension "setupvpn" "@setupvpncom")
 50            (extension "stylus" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}")
 51            (extension "tablissng" "extension@tabliss-maintained")
 52            (extension "uaswitcher" "user-agent-switcher@ninetailed.ninja")
 53            (extension "ublock-origin" "uBlock0@raymondhill.net")
 54          ];
 55      };
 56
 57      profiles.default = {
 58        isDefault = true;
 59        containersForce = true;
 60
 61        ## Flags
 62        settings = {
 63          # General
 64          "browser.disableResetPrompt" = true;
 65          "browser.onboarding.enabled" = false;
 66          "browser.aboutConfig.showWarning" = false;
 67          "browser.shell.checkDefaultBrowser" = false;
 68          "browser.sessionstore.interval" = "1800000";
 69          "browser.toolbars.bookmarks.visibility" = "always";
 70          "browser.urlbar.showSearchSuggestionsFirst" = false;
 71          "browser.urlbar.speculativeConnect.enabled" = false;
 72          "browser.urlbar.dnsResolveSingleWordsAfterSearch" = 0;
 73          "browser.search.openintab" = true;
 74
 75          # Features
 76          "layout.spellcheckDefault" = 2;
 77
 78          # New Tab
 79          "browser.newtabpage.activity-stream.feeds.section.highlights" = false;
 80          "browser.newtabpage.activity-stream.feeds.section.topstories" = false;
 81          "browser.newtabpage.activity-stream.feeds.topsites" = false;
 82          "browser.newtabpage.activity-stream.showSearch" = true;
 83          "browser.newtabpage.activity-stream.showSponsored" = false;
 84          "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
 85          "browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
 86          "browser.newtabpage.activity-stream.feeds.section.highlights.includePocket" = false;
 87
 88          # Theming
 89          "browser.uidensity" = 0;
 90          "devtools.theme" = "dark";
 91          "layers.acceleration.force-enabled" = true;
 92          "mozilla.widget.use-argb-visuals" = true;
 93          "svg.context-properties.content.enabled" = true;
 94          "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
 95
 96          # Passwords
 97          "signon.autofillForms" = false;
 98          "signon.rememberSignons" = false;
 99          "signon.generation.enabled" = false;
100          "signon.management.page.breach-alerts.enabled" = false;
101
102          # Extensions
103          "extensions.pocket.enabled" = false;
104          "extensions.htmlaboutaddons.inline-options.enabled" = false;
105          "extensions.htmlaboutaddons.recommendations.enabled" = false;
106          "extensions.webextensions.ExtensionStorageIDB.enabled" = true;
107
108          # Security
109          "security.family_safety.mode" = 0;
110          "security.pki.sha1_enforcement_level" = 1;
111          "security.tls.enable_0rtt_data" = false;
112
113          # Reports
114          "breakpad.reportURL" = "";
115          "browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
116          "browser.tabs.crashReporting.sendReport" = false;
117          "datareporting.healthreport.service.enabled" = false;
118          "datareporting.healthreport.uploadEnabled" = false;
119          "datareporting.policy.dataSubmissionEnabled" = false;
120        };
121      };
122    };
123  };
124}