flakes/navi/navi/browser.nix
2026-04-11 08:37:04 +03:00

397 lines
12 KiB
Nix

let
profile = "default";
prf = ".mozilla/firefox/${profile}";
extstorage = "${prf}/browser-extension-data";
in
{ config, pkgs, lib, firefox-addons, ... }:
let
fa = firefox-addons.packages.${pkgs.system};
buildFirefoxXpiAddon = firefox-addons.lib.${pkgs.system}.buildFirefoxXpiAddon;
mozlz4 = n: x:
pkgs.runCommand "${n}.mozlz4" { buildInputs = [ pkgs.mozlz4a ]; } ''
mozlz4a ${builtins.toFile "${n}" (builtins.toJSON x)} $out
'';
in
{
home.file."${prf}/extension-preferences.json.tmp".source = pkgs.emptyFile;
home.file."${prf}/extension-settings.json.tmp".source = pkgs.emptyFile;
home.file."${prf}/search.json.mozlz4.tmp".source = pkgs.emptyFile;
home.file."${prf}/storage/default".source = pkgs.emptyDirectory;
home.file."${prf}/addonStartup.json.lz4".source = mozlz4 "addonStartup.json" {};
home.file."${prf}/addonStartup.json.lz4.tmp".source = pkgs.emptyFile;
home.file."${prf}/extension-preferences.json".text = builtins.toJSON {
"{3c078156-979c-498b-8990-85f7987dd929}" = {
origins = ["<all_urls>"];
permissions = ["proxy" "bookmarks" "tabHide" "clipboardWrite" "history" "downloads" "<all_urls>"];
};
"newtaboverride@agenedia.com" = {
origins = ["https://www.soeren-hentzschel.at/*"];
permissions = [];
};
};
home.file."${prf}/extension-settings.json".text = builtins.toJSON {
commands = {};
default_search = {};
homepageNotification = {};
newTabNotification = {
"newtaboverride@agenedia.com" = {
initialValue = false;
precedenceList = [
{
enabled = true;
id = "newtaboverride@agenedia.com";
installDate = 1000;
value = true;
}
];
};
};
prefs = {
"network.networkPredictionEnabled" = {
initialValue = {};
precedenceList = [
{
enabled = true;
id = "uBlock0@raymondhill.net";
installDate = 1000;
value = false;
}
];
};
"privacy.containers" = {
initialValue = {};
precedenceList = [
{
enabled = true;
id = "CanvasBlocker@kkapsner.de";
installDate = 1000;
value = "CanvasBlocker@kkapsner.de";
}
];
};
"websites.hyperlinkAuditingEnabled" = {
initialValue = {};
precedenceList = [
{
enabled = true;
id = "uBlock0@raymondhill.net";
installDate = 1000;
value = false;
}
];
};
};
tabHideNotification = {};
url_overrides = {
newTabURL = {
initialValue = "about:newtab";
precedenceList = [
{
enabled = true;
id = "newtaboverride@agenedia.com";
installDate = 1000;
value = "moz-extension://5ba70e66-a52e-41b3-9364-b4f0a14f3854/html/newtab.html";
}
];
};
};
version = 3;
};
home.file."${extstorage}/redirector@einaregilsson.com/storage.js".text = builtins.toJSON {
redirects = map ({ includePattern, redirectUrl, description }: {
appliesTo = ["main_frame"];
inherit description;
disabled = false;
error = null;
exampleResult = "";
exampleUrl = "";
excludePattern = "";
grouped = false;
inherit includePattern;
patternDesc = "";
patternType = "W";
processMatches = "noProcessing";
inherit redirectUrl;
}) [
{
includePattern = "https://*youtube.com/watch?*v=*";
redirectUrl = "https://yewtu.be/watch?$2v=$3}";
description = "invidious";
}
{
includePattern = "https://*youtube.com/results?*search_query=*";
redirectUrl = "https://yewtu.be/search?$2q=$3";
description = "invidious search";
}
];
enableNotifications = false;
};
home.file."${extstorage}/newtaboverride@agenedia.com/storage.js".text = builtins.toJSON {
url = "https://lobste.rs";
};
programs.firefox = {
enable = true;
package = pkgs.firefox.override {
extraPolicies = {
CaptivePortal = false;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DisableFirefoxAccounts = true;
FirefoxHome = {
Pocket = false;
Snippets = false;
};
UserMessaging = {
ExtensionRecommendations = false;
SkipOnboarding = true;
};
OverrideFirstRunPage = "";
Extensions.Install = map (x: x.src.outPath) config.programs.firefox.profiles."default".extensions.packages;
SearchEngines.Default = "DuckDuckGo";
ExtensionSettings = {
"google@search.mozilla.org" = { installation_mode = "blocked"; };
"amazondotcom@search.mozilla.org" = { installation_mode = "blocked"; };
"wikipedia@search.mozilla.org" = { installation_mode = "blocked"; };
"bing@search.mozilla.org" = { installation_mode = "blocked"; };
};
};
};
profiles.default = {
userChrome = ''
/* Catppuccin Mocha */
:root {
--ctp-base: #1e1e2e;
--ctp-mantle: #181825;
--ctp-crust: #11111b;
--ctp-surface0:#313244;
--ctp-surface1:#45475a;
--ctp-surface2:#585b70;
--ctp-overlay0:#6c7086;
--ctp-overlay1:#7f849c;
--ctp-text: #cdd6f4;
--ctp-subtext0:#a6adc8;
--ctp-lavender:#b4befe;
--ctp-blue: #89b4fa;
--ctp-mauve: #cba6f7;
--ctp-pink: #f38ba8;
--ctp-peach: #fab387;
--ctp-green: #a6e3a1;
--ctp-teal: #94e2d5;
}
#main-window,
#navigator-toolbox,
#TabsToolbar,
#nav-bar,
#PersonalToolbar {
background-color: var(--ctp-mantle) !important;
color: var(--ctp-text) !important;
border-color: var(--ctp-surface0) !important;
}
.tabbrowser-tab .tab-background {
background-color: var(--ctp-surface0) !important;
border-radius: 6px !important;
}
.tabbrowser-tab[selected] .tab-background {
background-color: var(--ctp-base) !important;
}
.tabbrowser-tab .tab-label {
color: var(--ctp-subtext0) !important;
}
.tabbrowser-tab[selected] .tab-label {
color: var(--ctp-text) !important;
}
.tabbrowser-tab[selected] .tab-background::before {
content: "";
display: block;
height: 2px;
background: var(--ctp-mauve) !important;
border-radius: 2px 2px 0 0;
position: absolute;
top: 0;
left: 0;
right: 0;
}
#urlbar-background {
background-color: var(--ctp-surface0) !important;
border-color: var(--ctp-surface1) !important;
border-radius: 8px !important;
}
#urlbar[focused] #urlbar-background {
border-color: var(--ctp-mauve) !important;
box-shadow: 0 0 0 1px var(--ctp-mauve) !important;
}
#urlbar-input {
color: var(--ctp-text) !important;
}
toolbar button,
toolbarbutton {
color: var(--ctp-text) !important;
}
toolbar button:hover,
toolbarbutton:hover {
background-color: var(--ctp-surface1) !important;
border-radius: 4px !important;
}
#sidebar-box {
background-color: var(--ctp-mantle) !important;
color: var(--ctp-text) !important;
}
menupopup,
panel {
background-color: var(--ctp-surface0) !important;
color: var(--ctp-text) !important;
border-color: var(--ctp-surface1) !important;
border-radius: 8px !important;
}
menuitem:hover {
background-color: var(--ctp-surface1) !important;
color: var(--ctp-text) !important;
border-radius: 4px !important;
}
#PersonalToolbar toolbarbutton {
color: var(--ctp-subtext0) !important;
}
#PersonalToolbar toolbarbutton:hover {
color: var(--ctp-text) !important;
background-color: var(--ctp-surface0) !important;
border-radius: 4px !important;
}
scrollbar {
background-color: var(--ctp-mantle) !important;
}
scrollbar thumb {
background-color: var(--ctp-surface2) !important;
border-radius: 4px !important;
}
'';
search = {
default = "DuckDuckGo";
force = true;
engines = {
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["!np"];
};
"Home Manager" = {
urls = [{
template = "https://mipmip.github.io/home-manager-option-search/";
params = [
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["!hm"];
};
"Invidious" = {
urls = [{
template = "https://yewtu.be/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://invidious.io/favicon.ico";
definedAliases = ["!yt"];
};
"Cyberchef" = {
urls = [{
template = ''javascript:q="%s";location.href="https://cyberchef.org/#recipe=Magic(3,false,false,\'\')&input="+btoa(q)'';
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://cyberchef.org/favicon.ico";
definedAliases = ["!cc"];
};
};
};
extraConfig =
builtins.readFile (
builtins.fetchurl {
url = "https://raw.githubusercontent.com/arkenfox/user.js/master/user.js";
sha256 = "sha256:067bfw8zm6gi82a79cfb3y6hgqf5bsykx1k4z31nby320j4ch74g";
}
)
+ ''
user_pref('keyword.enabled', true);
user_pref("browser.startup.homepage", "https://lobste.rs");
user_pref("browser.startup.page", 1);
user_pref("privacy.resistFingerprinting", false);
user_pref("privacy.resistFingerprinting.letterboxing", false);
user_pref("browser.search.hiddenOneOffs","Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)");
'';
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.newtabpage.pinned" = [{ url = "https://lobste.rs"; }];
"extensions.activeThemeID" = "{e410fec2-1cbd-4098-9944-e21e708418af}";
"svg.context-properties.content.enabled" = true;
"browser.toolbars.bookmarks.visibility" = "always";
"browser.uidensity" = 1;
"browser.aboutConfig.showWarning" = false;
"browser.shell.checkDefaultBrowser" = false;
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
"browser.search.hiddenOneOffs" = "Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)";
"browser.download.dir" = config.xdg.userDirs.download;
};
extensions.packages = [
fa.ublock-origin
fa.clearurls
fa.privacy-possum
fa.skip-redirect
fa.canvasblocker
fa.darkreader
fa.vimium
(buildFirefoxXpiAddon {
pname = "sidebery";
version = "v5.0.0rc4";
addonId = "{3c078156-979c-498b-8990-85f7987dd929}";
url = "https://github.com/mbnuqw/sidebery/releases/download/v5.0.0rc4/sidebery-5.0.0rc4.xpi";
sha256 = "sha256-YsH9yYfGefClRS93dMV/eLMFuoPFKPrx0NL2hIv4dEk=";
meta = with lib; {
homepage = "https://github.com/mbnuqw/sidebery";
description = "Tabs tree and bookmarks in sidebar with advanced containers configuration.";
license = licenses.mit;
platforms = platforms.all;
};
})
fa.redirector
fa.kristofferhagen-nord-theme
fa.new-tab-override
fa.snowflake
];
};
};
}