dotfiles/nix/hm-firefox.nix
2026-07-29 19:19:53 -04:00

138 lines
7.4 KiB
Nix

{ config, pkgs, identity, dotfilesPath, ...}: {
programs.home-manager.enable = true;
home.packages = with pkgs; [
firefox
];
programs.firefox = {
enable = true;
configPath = "${config.xdg.configHome}/mozilla/firefox";
profiles = {
default = {
id = 0;
name = "default";
isDefault = true;
settings = {
"browser.startup.homepage" = "https://kagi.com";
"browser.search.defaultenginename" = "Kagi";
"browser.search.order.1" = "Kagi";
};
search = {
force = true;
default = "Kagi";
order = [ "Kagi" ];
engines = {
"Kagi" = {
urls = [{ template = "https://kagi.com/search?q={searchTerms}"; }];
icon = "https://kagi.com/favicon.ico";
# updateInterval = 24 * 60 * 60 * 1000; # every day
};
# "Bing".metaData.hidden = true;
# "Google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
};
};
userChrome = builtins.readFile ../.config/mozilla/userChrome.css;
# TODO: I don't particularly like how this manages the extensions wrt permissions, so I just do this
# manually rn
# extensions = {
# packages = with pkgs.nur.repos.rycee.firefox-addons; [
# ublock-origin
# bitwarden
# youtube enhancer
# tab counter plus, https://addons.mozilla.org/en-US/firefox/addon/tab-counter-plus/
# return youtube dislike
# facebook container
# firefox multi account containers (MAC)
#
#
# deferred on these ones for now:
# singlefile
#
# ];
settings = {
# Make userChrome load
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
# Defaults I dont want to trigger again
"browser.bookmarks.addedImportButton" = true;
"browser.bookmarks.restore_default_bookmarks" = false;
"browser.engagement.fxa-toolbar-menu-button.has-used" = true;
"browser.download.panel.shown" = true;
"browser.toolbarbuttons.introduced.sidebar-button" = true;
"identity.fxaccounts.toolbar.syncSetup.panelAccessed" = true;
"toolkit.telemetry.reportingpolicy.firstRun" = false;
"trailhead.firstrun.didSeeAboutWelcome" = true;
# Content blocking
"browser.contentblocking.category" = "strict";
# Disable all the suggestions
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false; # URL bar suggestions that are not helpful
"browser.urlbar.suggest.quicksuggest.sponsored" = false; #
"browser.urlbar.suggest.quicksuggest.all" = false; #
"browser.newtabpage.activity-stream.showWeather" = false; # Home page stuff
"browser.newtabpage.activity-stream.widgets.weather.enabled" = false; # (v169; wasnt in v155)
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false; #
"browser.newtabpage.activity-stream.showSponsored" = false; #
"browser.newtabpage.activity-stream.showSponsoredCheckboxes" = false; # (v169; wasnt in v155)
"browser.newtabpage.activity-stream.showSearch" = false; #
"browser.newtabpage.activity-stream.feeds.topsites" = false; #
"browser.newtabpage.activity-stream.feeds.section.topstories" = false; #
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; # Recommend things as you browse (features and extension)
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;#
# ...except this one
"browser.urlbar.suggest.searches" = true;
# Stop sending random data somewhere
"datareporting.policy.dataSubmissionEnabled" = false; # ((apparently this is a "master switch" for the following, https://github.com/arkenfox/user.js/issues/1979#issuecomment-3092426359))
"datareporting.usage.uploadEnabled" = false; # (this is "Send daily usage ping to Mozilla")
"datareporting.healthreport.uploadEnabled" = false; # (this is "Send technical and interaction data to Mozilla")
# Do not update between major version
"nimbus.rollouts.enabled" = false; # (this is "Allow Firefox to run Feature Studies" in the settings, Nimbus is Firefox's experimentation system https://firefox-source-docs.mozilla.org/toolkit/components/nimbus/docs/index.html)
# (this is "Allow Firefox to improve features, performance, and stability between updates")
# Ignore all the annoying autofill stuff, do not store it with Firefox
"signon.autofillForms" = false;
"signon.rememberSignons" = false;
"signon.management.page.breach-alerts.enabled" = false;
"signon.generation.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.addresses.enabled" = false;
#"extensions.formautofill.creditCards.reauth.optout" = "..."; Unused if not autofilling
# ...except these are useful
"dom.forms.autocomplete.formautofill" = true;
# New sidebar (closer to tree-style-tabs)
"sidebar.revamp" = true;
"sidebar.verticalTabs" = true;
"sidebar.verticalTabs.dragToPinPromo.dismissed" = true;
"sidebar.new-sidebar.has-used" = true;
# Eventually...
# user_pref("doh-rollout.doneFirstRun", true);
# user_pref("doh-rollout.home-region", "US");
# user_pref("doh-rollout.mode", 2);
# user_pref("doh-rollout.self-enabled", true);
# user_pref("doh-rollout.uri", "https://mozilla.cloudflare-dns.com/dns-query");
# user_pref("extensions.activeThemeID", "default-theme@mozilla.org");
# user_pref("extensions.ui.dictionary.hidden", true);
# user_pref("extensions.ui.lastCategory", "addons://discover/");
# user_pref("extensions.ui.locale.hidden", true);
# user_pref("extensions.ui.mlmodel.hidden", true);
# user_pref("extensions.ui.sitepermission.hidden", true);
# user_pref("extensions.webcompat.enable_shims", true);
# user_pref("extensions.webcompat.perform_injections", true);
# user_pref("extensions.webextensions.uuids", "{\"formautofill@mozilla.org\":\"06c055d2-0ab7-4150-94da-2684a4047fac\",\"newtab@mozilla.org\":\"cc7ff77f-048a-4eaf-b2b6-18dca9002f17\",\"pictureinpicture@mozilla.org\":\"6df88524-2ed7-4db1-9180-3923173df2c1\",\"addons-search-detection@mozilla.com\":\"49e85db1-e088-4aa2-98fd-832e71b8e196\",\"webcompat@mozilla.org\":\"9a310967-e580-48bf-b3e8-4eafebbc122d\",\"default-theme@mozilla.org\":\"980e9514-427a-40bd-ad9e-7780aa15af72\"}");
# user_pref("privacy.trackingprotection.emailtracking.enabled", true);
# user_pref("privacy.trackingprotection.enabled", true);
# user_pref("privacy.trackingprotection.socialtracking.enabled", true);
#TODO: One thing I did not find a setting for was the "Restore old windows and tabs on open" option
};
};
};
};
}