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
|
{ lib, writeTextFile, writers, wrapFirefox, fetchFirefoxAddon
, firefox-unwrapped, tridactyl-native
}:
let
mkExtension = name: { url, hash }: fetchFirefoxAddon {
inherit name url hash;
};
extensions = lib.mapAttrs mkExtension (lib.importJSON ./addons.json);
firefoxNoSigning = (firefox-unwrapped.override {
crashreporterSupport = false;
drmSupport = false;
googleAPISupport = false;
}).overrideAttrs (drv: {
patches = (drv.patches or []) ++ [
./mute-by-default.patch
./dont-block-about-pages.patch
];
MOZ_REQUIRE_SIGNING = false;
});
jsString = str: builtins.toJSON (toString str);
in wrapFirefox firefoxNoSigning {
nixExtensions = lib.attrValues extensions;
extraNativeMessagingHosts = [
(writeTextFile {
name = "ff2mpv-native";
destination = "/lib/mozilla/native-messaging-hosts/ff2mpv.json";
text = builtins.toJSON {
name = "ff2mpv";
description = "Helper to actually run mpv";
path = let
source = builtins.readFile ./ff2mpv.py;
in writers.writePython3 "ff2mpv.py" {} source;
type = "stdio";
allowed_extensions = [ extensions.ff2mpv.extid ];
};
})
(writeTextFile {
name = "tridactyl-native";
destination = "/lib/mozilla/native-messaging-hosts/tridactyl.json";
text = builtins.toJSON {
name = "tridactyl";
description = "Tridactyl native command handler";
path = "${tridactyl-native}/bin/native_main";
type = "stdio";
allowed_extensions = [ extensions.tridactyl-vim.extid ];
};
})
];
extraPrefs = ''
lockPref('app.normandy.enabled', false);
lockPref('app.normandy.first_run', false);
lockPref('app.shield.optoutstudies.enabled', false);
lockPref('browser.aboutConfig.showWarning', false);
lockPref('browser.aboutwelcome.enabled', false);
lockPref('browser.contentblocking.category', 'strict');
lockPref('browser.laterrun.enabled', false);
lockPref('browser.newtab.extensionControlled', true);
lockPref('browser.newtab.privateAllowed', false);
lockPref('browser.newtabpage.enabled', false);
lockPref('browser.rights.3.shown', true);
lockPref('browser.safebrowsing.downloads.remote.enabled', false);
lockPref('browser.safebrowsing.malware.enabled', false);
lockPref('browser.safebrowsing.phishing.enabled', false);
lockPref('browser.shell.checkDefaultBrowser', false);
lockPref('devtools.theme', 'dark');
lockPref('extensions.getAddons.cache.enabled', false);
lockPref('extensions.blocklist.enabled', false);
lockPref('extensions.webextensions.restrictedDomains', "");
lockPref('network.captive-portal-service.enabled', false);
lockPref('network.connectivity-service.enabled', false);
lockPref('privacy.donottrackheader.enabled', true);
lockPref('privacy.query_stripping.enabled', true);
lockPref('privacy.query_stripping.enabled.pbmode', true);
lockPref('privacy.query_stripping.strip_list', '${toString [
# Stolen from <https://github.com/yokoffing/Betterfox>:
"__hsfp" "__hssc" "__hstc" "__s" "_hsenc" "_openstat" "dclid" "fbclid"
"gbraid" "gclid" "hsCtaTracking" "igshid" "mc_eid" "ml_subscriber"
"ml_subscriber_hash" "msclkid" "oft_c" "oft_ck" "oft_d" "oft_id"
"oft_ids" "oft_k" "oft_lk" "oft_sk" "oly_anon_id" "oly_enc_id"
"rb_clickid" "s_cid" "twclid" "vero_conv" "vero_id" "wbraid" "wickedid"
"yclid"
]}');
lockPref('privacy.trackingprotection.enabled', true);
lockPref('privacy.trackingprotection.socialtracking.enabled', true);
lockPref('reader.color_scheme', 'dark');
pref('browser.uiCustomization.state', ${jsString (builtins.toJSON {
placements = {
widget-overflow-fixed-list = [];
nav-bar = [
"back-button"
"forward-button"
"stop-reload-button"
"urlbar-container"
"downloads-button"
"fxa-toolbar-menu-button"
"nixos_ff2mpv-browser-action"
"nixos_multi_account_containers-browser-action"
"nixos_stylus-browser-action"
"nixos_styl-us-browser-action"
"nixos_multi-account-containers-browser-action"
];
toolbar-menubar = [ "menubar-items" ];
TabsToolbar = [ "tabbrowser-tabs" "new-tab-button" "alltabs-button" ];
PersonalToolbar = [ "import-button" "personal-bookmarks" ];
};
currentVersion = 17;
})});
'';
extraPolicies = {
DisableFirefoxAccounts = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableSetDesktopBackground = true;
DisableTelemetry = true;
EnableTrackingProtection.Cryptomining = true;
EnableTrackingProtection.Fingerprinting = true;
EnableTrackingProtection.Locked = true;
EnableTrackingProtection.Value = true;
EncryptedMediaExtensions.Enabled = false;
EncryptedMediaExtensions.Locked = true;
FirefoxHome.Pocket = false;
FirefoxHome.Snippets = false;
OverrideFirstRunPage = "";
UserMessaging.ExtensionRecommendations = false;
UserMessaging.SkipOnboarding = false;
};
}
|