nix/home/program/firefox/default.nix

191 lines
8.2 KiB
Nix

{ pkgs, config, ... }:
let
bookmarks = [
(mkBookmark "Dashboard" "https://home.voronind.com")
(mkBookmark "Watch" "https://watch.voronind.com")
(mkBookmark "Telegram" "https://web.telegram.org/a")
(mkBookmark "WorkChat" "https://fsmm.fsight.ru/fmp")
(mkBookmark "Mail" "https://mail.voronind.com")
(mkBookmark "WorkMail" "https://mail.fsight.ru")
(mkBookmark "Git" "https://git.voronind.com")
(mkBookmark "WorkGit" "https://git.fmp.fsight.world")
(mkBookmark "WorkBoard" "https://support.fsight.ru")
(mkBookmark "Hass" "https://iot.voronind.com")
(mkBookmark "Cloud" "https://cloud.voronind.com")
];
searchEngines = [
(mkSearchEngine "s" "SearX" "https://search.voronind.com/search?q={searchTerms}")
(mkSearchEngine "aw" "Arch Wiki" "https://wiki.archlinux.org/index.php?search={searchTerms}")
(mkSearchEngine "gh" "GitHub" "https://github.com/search?q={searchTerms}")
(mkSearchEngine "ghc" "GitHub Code" "https://github.com/search?q={searchTerms}&type=code")
(mkSearchEngine "hm" "Home Manager"
"https://home-manager-options.extranix.com/?query={searchTerms}"
)
(mkSearchEngine "no" "NixOS Options" "https://search.nixos.org/options?query={searchTerms}")
(mkSearchEngine "np" "NixOS Packages" "https://search.nixos.org/packages?query={searchTerms}")
(mkSearchEngine "re" "Reddit" "https://www.reddit.com/search/?q={searchTerms}")
(mkSearchEngine "rt" "RuTracker" "https://rutracker.org/forum/tracker.php?nm={searchTerms}")
(mkSearchEngine "so" "Stack Overflow" "https://stackoverflow.com/search?tab=votes&q={searchTerms}")
(mkSearchEngine "st" "Steam" "https://store.steampowered.com/search/?term={searchTerms}")
];
extensions = [
(mkExtension "addon@darkreader.org" "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi")
(mkExtension "cliget@zaidabdulla.com" "https://addons.mozilla.org/firefox/downloads/latest/cliget/latest.xpi")
(mkExtension "foxyproxy@eric.h.jung" "https://addons.mozilla.org/firefox/downloads/latest/foxyproxy-standard/latest.xpi")
(mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi")
(mkExtension "{446900e4-71c2-419f-a6a7-df9c091e268b}" "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi")
(mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi")
(mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi")
(mkExtension "{e7625f06-e252-479d-ac7a-db68aeaff2cb}" "https://addons.mozilla.org/firefox/downloads/latest/togglefonts/latest.xpi")
# NOTE: This extension is helpful to find the required parameters for this config.
# Or find them yourself inside the `about:support`.
# (mkExtension "queryamoid@kaply.com" "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi")
];
extraConfig = ''
// Bookmarks.
user_pref("browser.microsummary.enabled", true);
user_pref("browser.places.importBookmarksHTML", true);
user_pref("browser.toolbars.bookmarks.visibility", "never");
// Fonts.
user_pref("browser.display.use_document_fonts", 0);
user_pref("font.minimum-size.x-cyrillic", ${toString config.style.font.size.application});
user_pref("font.minimum-size.x-unicode", ${toString config.style.font.size.application});
user_pref("font.minimum-size.x-western", ${toString config.style.font.size.application});
user_pref("font.name.monospace.x-cyrillic", "${config.style.font.monospace.name}");
user_pref("font.name.monospace.x-unicode", "${config.style.font.monospace.name}");
user_pref("font.name.monospace.x-western", "${config.style.font.monospace.name}");
user_pref("font.name.sans-serif.x-cyrillic", "${config.style.font.sansSerif.name}");
user_pref("font.name.sans-serif.x-unicode", "${config.style.font.sansSerif.name}");
user_pref("font.name.sans-serif.x-western", "${config.style.font.sansSerif.name}");
user_pref("font.name.serif.x-cyrillic", "${config.style.font.serif.name}");
user_pref("font.name.serif.x-unicode", "${config.style.font.serif.name}");
user_pref("font.name.serif.x-western", "${config.style.font.serif.name}");
// Animations.
user_pref("browser.fullscreen.animateUp", 0);
user_pref("browser.fullscreen.autohide", true);
// Homepage.
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.startup.homepage", "https://home.voronind.com/");
user_pref("browser.startup.page", 3);
// Passwords.
user_pref("signon.prefillForms", false);
user_pref("signon.rememberSignons", false);
// Formats.
user_pref("image.jxl.enabled", true);
// User agent.
// user_pref("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36");
// Disable HTTP3.
user_pref("network.http.http3.enable", false);
// Disable built-in DoH.
user_pref("doh-rollout.disable-heuristics", true);
user_pref("network.trr.mode", 5);
// HTTPS only mode.
user_pref("dom.security.https_only_mode", true);
user_pref("dom.security.https_only_mode_ever_enabled", true);
// Style.
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
// Disable auto gain for the mic.
// user_pref("media.getusermedia.audio.processing.aec", 0);
// user_pref("media.getusermedia.audio.processing.aec.enabled", false);
// user_pref("media.getusermedia.audio.processing.agc", 0);
// user_pref("media.getusermedia.audio.processing.agc.enabled", false);
// user_pref("media.getusermedia.audio.processing.agc2.forced", false)
// user_pref("media.getusermedia.audio.processing.hpf.enabled", false);
// user_pref("media.getusermedia.audio.processing.noise", 0);
// user_pref("media.getusermedia.audio.processing.noise.enabled", false);
// user_pref("media.getusermedia.audio.processing.platform.enabled", false);
// user_pref("media.getusermedia.audio.processing.transient.enabled", false);
'';
userChrome = ''
* {
font-family: "${config.style.font.serif.name}" !important;
font-size: ${toString config.style.font.size.application}pt !important;
}
'';
userContent = ''
@-moz-document url(about:home), url(about:newtab), url(about:privatebrowsing), url(about:blank) {
.click-target-container *, .top-sites-list * {
color: #fff !important ;
text-shadow: 2px 2px 2px #222 !important ;
}
body::before {
content: "" ;
z-index: -1 ;
position: fixed ;
top: 0 ;
left: 0 ;
background: #f9a no-repeat url("${config.module.wallpaper.path}?raw=true") center ;
background-color: #222;
background-size: cover ;
/* filter: blur(4px) ; */
width: 100vw ;
height: 100vh ;
}
/* .logo { background-image: url("{repo}/logo.png?raw=true") !important; } */
/* .logo { background-image: none !important; } */
}
'';
mkExtension = id: install_url: {
${id} = {
inherit install_url;
installation_mode = "force_installed";
};
};
mkBookmark = name: url: { inherit name url; };
mkSearchEngine = Alias: Description: URLTemplate: {
inherit Alias Description URLTemplate;
Method = "GET";
Name = Description;
};
in
{
enable = true;
package = pkgs.firefox-esr;
# languagePacks = [ "en-US" "ru" ];
profiles.default = {
inherit extraConfig userChrome userContent;
};
policies = {
ManagedBookmarks = [ { toplevel_name = "Pin"; } ] ++ bookmarks;
ExtensionUpdate = true;
ExtensionSettings = {
# Block extension installation outside of this config.
"*" = {
install_sources = [ "*" ];
installation_mode = "blocked";
};
} // builtins.foldl' (acc: ext: acc // ext) { } extensions;
# NOTE: `firefox-esr` edition is required to change search engines.
SearchEngines = {
Add = searchEngines;
Default = "SearX";
PreventInstalls = true;
Remove = [
"Bing"
"DuckDuckGo"
"Google"
"Wikipedia (en)"
];
};
};
}