about summary refs log tree commit diff
path: root/pkgs/aszlig/firefox/default.nix
blob: 1c49fc6ad0d3ba090ad3636d7b4fd8ced3fb1d50 (plain) (blame)
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
{ 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.malware.enabled', false);
    lockPref('browser.safebrowsing.phishing.enabled', false);
    lockPref('browser.shell.checkDefaultBrowser', false);
    lockPref('devtools.theme', 'dark');
    lockPref('extensions.webextensions.restrictedDomains', "");
    lockPref('privacy.donottrackheader.enabled', true);
    lockPref('privacy.query_stripping.enabled', true);
    lockPref('privacy.query_stripping.enabled.pbmode', true);
    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;
  };
}