summaryrefslogtreecommitdiff
path: root/common/programs/firefox.nix
blob: b63fc8d5996b0a3b3228fab79923d443eb0e8539 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
{
  pkgs,
  lib,
  config,
  ...
}:
{
  programs.firefox = {
    enable = false;

    policies = {
      DisableTelemetry = true;
      BlockAboutConfig = false;
      DisableFirefoxAccounts = true;
      DisablePocket = true;
      DisableSetDesktopBackground = true;
      DisableSystemAddonUpdate = true;
      AutofillCreditCardEnabled = false;
      AutofillAddressEnabled = false;
      DisableFirefoxScreenshots = true;
      DisableMasterPasswordCreation = true;
      DontCheckDefaultBrowser = true;
      NoDefaultBookmarks = true;
      OfferToSaveLogins = false;
      UserMessaging = {
        WhatsNew = false;
        ExtensionRecommendations = false;
        FeatureRecommendations = false;
        UrlbarInterventions = false;
        SkipOnboarding = true;
        MoreFromMozilla = false;
        Locked = true;
      };
      FirefoxHome = {
        Search = false;
        TopSites = false;
        SponsoredTopSites = false;
        Highlights = false;
        Pocket = false;
        Stories = false;
        SponsoredPocket = false;
        SponsoredStories = false;
        Snippets = false;
        Locked = true;
      };
      FirefoxSuggest = {
        WebSuggestions = false;
        SponsoredSuggestions = false;
        ImproveSuggest = false;
        Locked = true;
      };
      ExtensionSettings = {
        "uBlock0@raymondhill.net" = {
          default_area = "menupanel";
          installation_mode = "force_installed";
          install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
          private_browsing = true;
        };
        # "addon@darkreader.org" = {
        #   installation_mode = "force_installed";
        #   install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi";
        # };
      }
      // lib.optionalAttrs config.hyprland.enable {
        "pywalfox@frewacom.org" = {
          installation_mode = "force_installed";
          install_url = "https://addons.mozilla.org/firefox/downloads/latest/pywalfox/latest.xpi";
        };
      };
    };

    profiles.default = {
      settings = {
        # Always start fresh, no tab restore
        "browser.aboutConfig.showWarning" = false;
        "browser.sessionstore.resume_from_crash" = false;
        "browser.sessionstore.restore_on_demand" = false;
        "browser.sessionstore.max_tabs_undo" = 0;
        "browser.sessionstore.max_windows_undo" = 0;

        # "userChrome.theme-material" = true;

        # "browser.startup.page" = 1; # Blank page
        # "browser.newtabpage.enabled" = false;

        "privacy.trackingprotection.enabled" = true;
        "privacy.trackingprotection.socialtracking.enabled" = true;
        "privacy.globalprivacycontrol.enabled" = true;
        "network.cookie.cookieBehavior" = 2; # Block all cookies
        "browser.contentblocking.category" = "strict";

        "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
        "svg.context-properties.content.enabled" = true;

        # "beacon.enabled" = false;

        # Performance
        "gfx.webrender.all" = true; # Enable WebRender
        "layers.acceleration.enabled" = true;
        # "dom.ipc.processCount" = 8; # Adjust based on CPU cores
        "browser.cache.disk.enable" = false; # Disable disk cache
        "browser.cache.memory.enable" = true; # Use memory cache
        "browser.cache.memory.capacity" = 1048576; # 1gb memory cache
        "browser.preferences.defaultPerformanceSettings.enabled" = false;
        "media.hardware-video-decoding.force-enabled" = true;
        "media.hardware-video-decoding.enabled" = true;
        "browser.tabs.unloadOnLowMemory" = true;
        "browser.low_commit_space_threshold_percent" = 100;
        "browser.tabs.min_inactive_duration_before_unload" = 3600000;

        # Disable unnecessary features
        "browser.aboutwelcome.enabled" = false;
        "browser.discovery.enabled" = false;
        "browser.onboarding.enabled" = false;

        "browser.tabs.inTitlebar" = 0;
        "browser.toolbars.bookmarks.visibility" = "never";
        "widget.use-xdg-desktop-portal.file-picker" = 1;
      };

      search = {
        force = true;
        default = "ddg";
        engines = {
          duck-duck-go = {
            name = "DuckDuckGo";
            urls = [ { template = "https://duckduckgo.com/?q={searchTerms}"; } ];
            iconMapObj."16" = "https://duckduckgo.com/favicon.ico";
            definedAliases = [ ":ddg" ];
          };
          startpage = {
            name = "Startpage";
            urls = [ { template = "https://www.startpage.com/do/search?query={searchTerms}"; } ];
            iconMapObj."16" = "https://www.startpage.com/favicon.ico";
            definedAliases = [ ":sp" ];
          };
          nixos-packages = {
            name = "NixOS Packages";
            urls = [ { template = "https://search.nixos.org/packages?query={searchTerms}"; } ];
            iconMapObj."16" = "https://nixos.org/favicon.ico";
            definedAliases = [ ":n" ];
          };
          nixos-wiki = {
            name = "NixOS Wiki";
            urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
            iconMapObj."16" = "https://wiki.nixos.org/favicon.ico";
            definedAliases = [ ":nw" ];
          };
          amazon.metaData.hidden = true;
          ebay.metaData.hidden = true;
          perplexity.metaData.hidden = true;

          google.metaData.alias = ":g";
          bing.metaData.alias = ":b";
        };
      };
    };
  };
}