nix/modules/firefox.nix
2025-08-01 00:19:05 +02:00

137 lines
4.8 KiB
Nix

{ config, pkgs, lib, ... }@args:
{
programs.firefox = {
enable = true;
profiles.yanlin = {
id = 0;
isDefault = true;
name = "yanlin";
# Extensions
extensions = {
packages = let
firefox-addons = args.firefox-addons or null;
in
if firefox-addons != null then
with firefox-addons.packages.${pkgs.system}; [
ublock-origin
linkding-extension
]
else [];
};
# Bookmarks
bookmarks = import ../config/firefox-bookmarks.nix;
# Search configuration
search = {
force = true;
default = "ddg";
# engines = {
# "Nix Packages" = {
# urls = [{
# template = "https://search.nixos.org/packages";
# params = [
# { name = "channel"; value = "unstable"; }
# { name = "query"; value = "{searchTerms}"; }
# ];
# }];
# icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
# definedAliases = [ "@np" ];
# };
#
# "NixOS Wiki" = {
# urls = [{ template = "https://wiki.nixos.org/index.php?search={searchTerms}"; }];
# icon = "https://wiki.nixos.org/favicon.png";
# definedAliases = [ "@nw" ];
# };
# };
};
# Firefox settings
settings = {
# General preferences
"browser.startup.homepage" = "about:home";
"browser.newtabpage.enabled" = true;
# New tab page - show only search bar
"browser.newtabpage.activity-stream.feeds.topsites" = false;
"browser.newtabpage.activity-stream.feeds.section.highlights" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.system.topsites" = false;
"browser.newtabpage.activity-stream.feeds.system.topstories" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
# Privacy settings
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"privacy.donottrackheader.enabled" = true;
# Performance
"gfx.webrender.all" = true;
"media.ffmpeg.vaapi.enabled" = true;
"media.hardware-video-decoding.force-enabled" = true;
# UI preferences
"browser.tabs.loadInBackground" = true;
"browser.ctrlTab.recentlyUsedOrder" = true;
# Bookmarks toolbar (only show on new tab/home page)
"browser.toolbars.bookmarks.visibility" = "newtab";
# Downloads
"browser.download.useDownloadDir" = false;
"browser.download.always_ask_before_handling_new_types" = true;
# Security
"dom.security.https_only_mode" = true;
"dom.security.https_only_mode_ever_enabled" = true;
# Disable telemetry
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
# Disable experiments
"experiments.activeExperiment" = false;
"experiments.enabled" = false;
"experiments.supported" = false;
"network.allow-experiments" = false;
# Disable Pocket
"extensions.pocket.enabled" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
# Password Manager - disable all functionality
"signon.rememberSignons" = false;
"signon.autofillForms" = false;
"signon.prefillForms" = false;
# Form Auto-complete - disable all form history and suggestions
"browser.formfill.enable" = false;
"browser.formfill.saveHttpsForms" = false;
# Additional Auto-fill features - disable address and credit card autofill
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.heuristics.enabled" = false;
# Hide UI elements
"browser.tabs.firefox-view" = false;
"identity.fxaccounts.enabled" = false;
};
};
};
}