nixos-configs/homeManagerModules/firefox/default.nix

277 lines
8.6 KiB
Nix

self: {
config,
lib,
pkgs,
...
}: let
inherit (pkgs.scopedPackages) firefoxAddons;
inherit (lib) attrsToList attrValues mkIf mkOption singleton types;
mainProfile = "dev-edition-default";
cfg = config.programs.firefox;
custom-css = pkgs.callPackage ./custom-css {};
in {
options.programs.firefox.enableCustomConf = mkOption {
type = types.bool;
default = false;
};
config = mkIf cfg.enableCustomConf {
programs.firefox = {
enable = true;
package = pkgs.firefox-devedition;
profiles.${mainProfile} = {
isDefault = true;
id = 0;
userChrome = ''
@import url("file://${custom-css}");
'';
settings = {
# Developer Edition Settings
"xpinstall.signatures.required" = false;
"extensions.experiments.enabled" = true;
# Use the normal file picker
"widget.use-xdg-desktop-portal.file-picker" = 0;
# Firefox-gx user.js
/*
Default rules
*/
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"layout.css.color-mix.enabled" = true;
"browser.tabs.delayHidingAudioPlayingIconMS" = 0;
"layout.css.backdrop-filter.enabled" = true;
"browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar" = false;
"browser.newtabpage.activity-stream.newtabWallpapers.enabled" = true;
"browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled" = true;
/*
To activate container tabs without any extension
*/
"privacy.userContext.enabled" = true;
"privacy.userContext.ui.enabled" = true;
"privacy.userContext.longPressBehavior" = 2;
# Open previous windows and tabs
"browser.startup.page" = 3;
# Prefs
"apz.overscroll.enabled" = false;
"layout.css.devPixelsPerPx" = 1.12;
"browser.search.widget.inNavBar" = true;
"browser.toolbars.bookmarks.visibility" = "always";
"browser.toolbars.bookmarks.showInPrivateBrowsing" = true;
"ui.key.menuAccessKey" = 0;
# remove telemetry
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.healthreport.infoURL" = "";
"dom.security.https_only_mode" = true;
# remove first run and warning stuff
"datareporting.policy.firstRunURL" = "";
"extensions.autoDisableScopes" = 0;
"browser.aboutwelcome.enabled" = false;
"browser.aboutConfig.showWarning" = false;
# Disable firefox autofill
"signon.rememberSignons" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
# remove new tab stuff
"extensions.pocket.enabled" = false;
"services.sync.prefs.sync.browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.newtabpage.activity-stream.feeds.system.topstories" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.topsites" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;
};
search = {
default = "searxng";
force = true;
engines = {
searxng = {
name = "SearXNG";
urls = singleton {
template = "https://search.nelim.org/search";
params = attrsToList {
"q" = "{searchTerms}";
};
};
icon = "https://search.nelim.org/favicon.ico";
definedAliases = ["@s"];
};
code = {
name = "Github Search Code";
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
"type" = "code";
"q" = "NOT is:fork {searchTerms}";
};
};
icon = "https://icon.horse/icon/github.com";
definedAliases = ["@gs"];
};
nixcode = {
name = "Github Nix Code";
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
"type" = "code";
"q" = "lang:Nix NOT is:fork {searchTerms}";
};
};
icon = "https://icon.horse/icon/github.com";
definedAliases = ["@gn"];
};
nixpkgs = {
name = "Nixpkgs";
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
"type" = "code";
"q" = "repo:NixOS/nixpkgs {searchTerms}";
};
};
icon = "https://icon.horse/icon/github.com";
definedAliases = ["@pkgs"];
};
nixwiki = {
name = "NixOS Wiki";
urls = singleton {
template = "https://wiki.nixos.org/w/index.php";
params = attrsToList {
"search" = "{searchTerms}";
};
};
icon = "https://wiki.nixos.org/favicon.ico";
definedAliases = ["@nw"];
};
mynixos = {
name = "MyNixos";
urls = singleton {
template = "https://mynixos.com/search";
params = attrsToList {
"q" = "{searchTerms}";
};
};
icon = "https://mynixos.com/favicon.ico";
definedAliases = ["@mn"];
};
noogle = {
name = "Noogle";
urls = singleton {
template = "https://noogle.dev/q";
params = attrsToList {
"term" = "{searchTerms}";
};
};
icon = "https://noogle.dev/favicon.ico";
definedAliases = ["@ng"];
};
extensions = {
name = "Firefox Add-ons";
urls = singleton {
template = "https://addons.mozilla.org/en-US/firefox/search";
params = attrsToList {
"q" = "{searchTerms}";
};
};
icon = "https://addons.mozilla.org/favicon.ico";
definedAliases = ["@fa"];
};
protondb = {
name = "ProtonDB";
urls = singleton {
template = "https://www.protondb.com/search";
params = attrsToList {
"q" = "{searchTerms}";
};
};
icon = "https://www.protondb.com/favicon.ico";
definedAliases = ["@pdb"];
};
youtube = {
name = "YouTube";
urls = singleton {
template = "https://www.youtube.com/results";
params = attrsToList {
"search_query" = "{searchTerms}";
};
};
icon = "https://www.youtube.com/favicon.ico";
definedAliases = ["@yt" "@youtube"];
};
bing.metaData.hidden = true;
google.metaData.hidden = true;
ebay.metaData.hidden = true;
};
order = [
"searxng"
"ddg"
"mynixos"
"nixwiki"
"code"
"nixcode"
"nixpkgs"
"noogle"
"wikipedia"
"youtube"
"extensions"
"protondb"
];
};
extensions.packages = attrValues {
inherit
(firefoxAddons)
auto-refresh-page
bitwarden
darkreader
floccus
frankerfacez
google-container
image-search-options
istilldontcareaboutcookies
return-youtube-dislikes
sponsorblock
sound-volume
stylus
ttv-lol-pro
ublock-origin
undoclosetabbutton
;
};
};
};
};
# For accurate stack trace
_file = ./default.nix;
}