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}