current
  1{lib, ...}: {
  2  flake.modules.homeManager.desktop = {
  3    pkgs,
  4    osConfig,
  5    ...
  6  }: let
  7    isPlasma =
  8      pkgs.stdenv.hostPlatform.isLinux
  9      && osConfig.services.desktopManager.plasma6.enable;
 10  in {
 11    stylix.targets.firefox = {
 12      profileNames = ["default"];
 13      colorTheme.enable = true;
 14    };
 15
 16    programs.firefox = {
 17      enable = true;
 18      languagePacks = ["zh-CN" "en-US"];
 19      nativeMessagingHosts = lib.optionals isPlasma [
 20        pkgs.kdePackages.plasma-browser-integration
 21      ];
 22
 23      policies = {
 24        DisableAppUpdate = true;
 25        DisablePocket = true;
 26        DisableSetDesktopBackground = true;
 27        DisableTelemetry = true;
 28        DontCheckDefaultBrowser = true;
 29        ExtensionUpdate = false;
 30        NoDefaultBookmarks = true;
 31        OfferToSaveLogins = false;
 32        PasswordManagerEnabled = false;
 33      };
 34
 35      profiles.default = {
 36        id = 0;
 37        isDefault = true;
 38        search = {
 39          force = true;
 40          default = "bing";
 41          privateDefault = "duckduckgo";
 42          order = [
 43            "bing"
 44            "google"
 45            "duckduckgo"
 46          ];
 47          engines = {
 48            baidu.metaData.hidden = true;
 49          };
 50        };
 51
 52        extensions.force = true;
 53        extensions.packages =
 54          (with pkgs.nur.repos.rycee.firefox-addons; [
 55            ublock-origin
 56            bitwarden
 57            tampermonkey
 58            aria2-integration
 59            kiss-translator
 60            libredirect
 61          ])
 62          ++ (lib.optional isPlasma pkgs.nur.repos.rycee.firefox-addons.plasma-integration);
 63
 64        settings = {
 65          # No First Run
 66          "app.normandy.first_run" = false;
 67          "doh-rollout.doneFirstRun" = true;
 68          "toolkit.telemetry.reportingpolicy.firstRun" = false;
 69          "trailhead.firstrun.didSeeAboutWelcome" = true;
 70          "browser.toolbarbuttons.introduced.sidebar-button" = true;
 71          "sidebar.old-sidebar.has-used" = true;
 72          "sidebar.new-sidebar.has-used" = true;
 73          # Language
 74          "general.useragent.locale" = "zh-CN";
 75          "intl.locale.requested" = "zh-CN,en-US";
 76          "browser.translations.mostRecentTargetLanguages" = "zh-Hans";
 77          # No Ads
 78          "browser.urlbar.suggest.topsites" = false;
 79          "browser.urlbar.suggest.trending" = false;
 80          "browser.newtabpage.pinned" = [];
 81          "browser.newtabpage.activity-stream.showSponsored" = false;
 82          "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
 83          # General
 84          "browser.startup.page" = 3; # Open prev session pages
 85          "browser.tabs.unloadOnLowMemory" = true;
 86          "widget.use-xdg-desktop-portal.file-picker" = 1;
 87          # Apperance
 88          "browser.newtabpage.activity-stream.feeds.topsites" = false;
 89          "browser.newtabpage.activity-stream.default.sites" = "";
 90          "browser.toolbars.bookmarks.visibility" = "always";
 91          "sidebar.verticalTabs" = true;
 92          "sidebar.main.tools" = "syncedtabs";
 93          "sidebar.visibility" = "expand-on-hover";
 94          "browser.uiCustomization.state" = {
 95            "placements" = {
 96              "widget-overflow-fixed-list" = [];
 97              "unified-extensions-area" = [];
 98              "nav-bar" = [
 99                "sidebar-button"
100                "back-button"
101                "forward-button"
102                "stop-reload-button"
103                "vertical-spacer"
104                "customizableui-special-spring7"
105                "urlbar-container"
106                "customizableui-special-spring2"
107                "unified-extensions-button"
108                "fxa-toolbar-menu-button"
109              ];
110              "toolbar-menubar" = ["menubar-items"];
111              "TabsToolbar" = [];
112              "vertical-tabs" = ["tabbrowser-tabs"];
113              "PersonalToolbar" = ["personal-bookmarks"];
114            };
115            "seen" = ["developer-button"];
116            "dirtyAreaCache" = [];
117          };
118          # Disable Telemetry
119          "toolkit.telemetry.unified" = false;
120          "toolkit.telemetry.enabled" = false;
121          "toolkit.telemetry.server" = "data:,";
122          "toolkit.telemetry.archive.enabled" = false;
123          "toolkit.telemetry.newProfilePing.enabled" = false;
124          "toolkit.telemetry.shutdownPingSender.enabled" = false;
125          "toolkit.telemetry.updatePing.enabled" = false;
126          "toolkit.telemetry.bhrPing.enabled" = false;
127          "toolkit.telemetry.firstShutdownPing.enabled" = false;
128          "toolkit.telemetry.shutdownPingSender.enabledFirstsession" = false;
129          "browser.ping-centre.telemetry" = false;
130          "browser.newtabpage.activity-stream.feeds.telemetry" = false;
131          "browser.newtabpage.activity-stream.telemetry" = false;
132        };
133      };
134    };
135  };
136}