/ users / vincent / desktop / firefox.nix
firefox.nix
  1  { pkgs, ... }:
  2  
  3  {
  4    programs.firefox = {
  5      enable = true;
  6      # Temporary fix
  7      # https://github.com/nix-community/home-manager/issues/1641
  8      # (https://github.com/NixOS/nixpkgs/pull/105796)
  9      package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
 10        extraPolicies = {
 11          ExtensionSettings = { };
 12          CaptivePortal = false;
 13          DisableFirefoxStudies = true;
 14          DisablePocket = true;
 15          DisableTelemetry = true;
 16          # DisableFirefoxAccounts = true;
 17          FirefoxHome = {
 18            Pocket = false;
 19            # Snippets = false;
 20          };
 21          UserMessaging = {
 22            ExtensionRecommendations = false;
 23            SkipOnboarding = true;
 24          };
 25        };
 26      };
 27      
 28      profiles.default = {
 29        id = 0;
 30        isDefault = true;
 31        settings = {
 32          "general.warnOnAboutConfig" = false;
 33          "browser.aboutConfig.showWarning" = false;
 34          # It keeps asking me on startup if I want firefox as default
 35          "browser.shell.checkDefaultBrowser" = false;
 36          # Disable pocket
 37          "extensions.pocket.enabled" = false;
 38          "extensions.pocket.site" = "";
 39          "extensions.pocket.oAuthConsumerKey" = "";
 40          "extensions.pocket.api" = "";
 41          "extensions.htmlaboutaddons.recommendations.enabled" = false;
 42          # performance
 43          "browser.download.animateNotifications" = false;
 44          "browser.tabs.animate" = false;
 45          "toolkit.cosmeticAnimations.enabled" = false;
 46          "html5.offmainthread" = true;
 47          "layers.acceleration.force-enabled" = true;
 48          "layers.async-video.enabled" = true;
 49          "layers.offmainthreadcomposition.async-animations" = true;
 50          "layers.offmainthreadcomposition.enabled" = true;
 51          "layout.frame_rate.precise" = true;
 52          "webgl.force-enabled" = true;
 53          "gfx.xrender.enabled" = true;
 54          "gfx.webrender.all" = true;
 55          "gfx.webrender.enable" = true;
 56          # Misc
 57          "privacy.donottrackheader.enabled" = true;
 58          # "privacy.firstparty.isolate" = true;
 59          #"privacy.resistFingerprinting" = true;
 60          "privacy.trackingprotection.cryptomining.enabled" = true;
 61          "privacy.trackingprotection.enabled" = true;
 62          "privacy.trackingprotection.fingerprinting.enabled" = true;
 63          "privacy.trackingprotection.socialtracking.enabled" = true;
 64          # FIXME(vdemeester) Enable thoses
 65          #"privacy.clearOnShutdown.history" = true;
 66          #"privacy.clearOnShutdown.siteSettings" = true;
 67          "browser.formfill.enable" = false;
 68          "browser.newtabpage.activity-stream.feeds.telemetry" = false;
 69          "browser.newtabpage.activity-stream.telemetry" = false;
 70          "browser.ping-centre.telemetry" = false;
 71          "browser.safebrowsing.enabled" = false;
 72          "browser.search.geoip.url" = "";
 73          "browser.selfsupport.url" = "";
 74          "browser.send_pings" = false;
 75          "browser.send_pings.require_same_host" = true;
 76          "browser.sessionstore.privacy_level" = 2;
 77          "browser.startup.homepage_override.buildID" = "";
 78          "browser.startup.homepage_override.mstone" = "ignore";
 79          "browser.urlbar.speculativeConnect.enabled" = false;
 80          "browser.contentblocking.category" = "strict";
 81          "browser.ctrlTab.recentlyUsedOrder" = false;
 82          "network.dns.disablePrefetch" = true;
 83          "network.dnsCacheEntries" = 100;
 84          "network.dnsCacheExpiration" = 60;
 85          #"network.http.referer.XOriginPolicy" = 2;
 86          #"network.http.referer.XOriginTrimmingPolicy" = 2;
 87          #"network.http.referer.spoofSource" = true;
 88          "network.http.sendRefererHeader" = 2;
 89          #"network.http.sendSecureXSiteReferrer" = false;
 90          #"network.http.speculative-parallel-limit" = 0;
 91          "network.predictor.enabled" = false;
 92          "network.prefetch-next" = false;
 93          "media.peerconnection.enabled" = false;
 94          "media.peerconnection.turn.disable" = true;
 95          "media.peerconnection.video.enabled" = false;
 96          "media.peerconnection.identity.timeout" = 1;
 97          "dom.battery.enabled" = false;
 98          # "dom.event.clipboardevents.enabled" = false;
 99          "dom.event.contextmenu.enabled" = false;
100          "toolkit.telemetry.archive.enabled" = false;
101          "toolkit.telemetry.bhrPing.enabled" = false;
102          "toolkit.telemetry.cachedClientID" = "";
103          "toolkit.telemetry.enabled" = false;
104          "toolkit.telemetry.firstShutdownPing.enabled" = false;
105          "toolkit.telemetry.hybridContent.enabled" = false;
106          "toolkit.telemetry.newProfilePing.enabled" = false;
107          "toolkit.telemetry.reportingpolicy.firstRun" = false;
108          "toolkit.telemetry.server" = "";
109          "toolkit.telemetry.shutdownPingSender.enabled" = false;
110          "toolkit.telemetry.unified" = false;
111          "toolkit.telemetry.updatePing.enabled" = false;
112          # Red Hat specific
113          "network.negotiate-auth.trusted-uris" = ".redhat.com";
114        };
115      };
116      profiles.redhat = {
117        id = 1;
118      };
119    };
120  }