112 lines
3.3 KiB
Nix
112 lines
3.3 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib) mkOption mkEnableOption mkPackageOption types;
|
|
|
|
defaultExtensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
|
bitwarden
|
|
darkreader
|
|
i-dont-care-about-cookies
|
|
privacy-badger
|
|
ublock-origin
|
|
];
|
|
|
|
defaultSettings = {
|
|
"app.normandy.first_run" = false;
|
|
"app.shield.optoutstudies.enabled" = false;
|
|
|
|
# disable updates (pretty pointless with nix)
|
|
"app.update.channel" = "default";
|
|
|
|
"browser.contentblocking.category" = "standard"; # "strict"
|
|
"browser.ctrlTab.recentlyUsedOrder" = false;
|
|
|
|
"browser.download.viewableInternally.typeWasRegistered.svg" = true;
|
|
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
|
|
"browser.download.viewableInternally.typeWasRegistered.xml" = true;
|
|
|
|
"browser.search.region" = "DE";
|
|
|
|
"browser.shell.checkDefaultBrowser" = false;
|
|
"browser.tabs.loadInBackground" = true;
|
|
"browser.urlbar.placeholderName" = "EnteEnteLauf";
|
|
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
|
|
|
# disable all the annoying quick actions
|
|
"browser.urlbar.quickactions.enabled" = false;
|
|
"browser.urlbar.quickactions.showPrefs" = false;
|
|
"browser.urlbar.shortcuts.quickactions" = false;
|
|
"browser.urlbar.suggest.quickactions" = false;
|
|
|
|
"distribution.searchplugins.defaultLocale" = "en-US";
|
|
|
|
"doh-rollout.balrog-migration-done" = true;
|
|
"doh-rollout.doneFirstRun" = true;
|
|
|
|
"general.useragent.locale" = "en-US";
|
|
|
|
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
|
|
|
"extensions.extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
|
"extensions.update.enabled" = false;
|
|
"extensions.webcompat.enable_picture_in_picture_overrides" = true;
|
|
"extensions.webcompat.enable_shims" = true;
|
|
"extensions.webcompat.perform_injections" = true;
|
|
"extensions.webcompat.perform_ua_overrides" = true;
|
|
|
|
"privacy.donottrackheader.enabled" = true;
|
|
"browser.translations.enable" = false;
|
|
|
|
# Yubikey
|
|
"security.webauth.u2f" = true;
|
|
"security.webauth.webauthn" = true;
|
|
"security.webauth.webauthn_enable_softtoken" = false;
|
|
"security.webauth.webauthn_enable_usbtoken" = true;
|
|
|
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
|
"layout.word_select.stop_at_punctuation" = false;
|
|
};
|
|
|
|
cfg = config.personal.firefox;
|
|
in {
|
|
options.personal.firefox = {
|
|
enable = mkEnableOption "Apply personal firefox defaults.";
|
|
package = mkPackageOption pkgs "firefox-bin" {};
|
|
|
|
extraExtensions = mkOption {
|
|
type = types.listOf types.package;
|
|
default = [];
|
|
description = "Extra Firefox extensions to install.";
|
|
};
|
|
|
|
settings = mkOption {
|
|
type = types.attrsOf ((pkgs.formats.json {}).type
|
|
// {
|
|
description = "Preferences (int, bool, string, and also attrs, list, float as a JSON string)";
|
|
});
|
|
default = defaultSettings;
|
|
description = "Attribute set of preferences.";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
programs.firefox = lib.mkIf cfg.enable {
|
|
enable = true;
|
|
package = cfg.package;
|
|
|
|
profiles = {
|
|
default = {
|
|
isDefault = true;
|
|
id = 0;
|
|
userChrome = builtins.readFile ./userChrome.css;
|
|
extensions = defaultExtensions ++ cfg.extraExtensions;
|
|
inherit (cfg) settings;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|