feat: switch back to zen browser

This commit is contained in:
Guz
2025-08-24 14:28:17 -03:00
parent 588dddb07d
commit 4acdd01e50
7 changed files with 3272 additions and 235 deletions

View File

@@ -13,15 +13,8 @@
xdg.mimeApps.enable = true; xdg.mimeApps.enable = true;
xdg.mimeApps.defaultApplications = let xdg.mimeApps.defaultApplications = let
browser = "qutebrowser.desktop";
email = "org.mozilla.Thunderbird.desktop"; email = "org.mozilla.Thunderbird.desktop";
in { in {
"text/html" = browser;
"x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser;
"x-scheme-handler/about" = browser;
"x-scheme-handler/unknown" = browser;
"message/rfc822" = email; "message/rfc822" = email;
"x-scheme-handler/mailto" = email; "x-scheme-handler/mailto" = email;
"text/calendar" = email; "text/calendar" = email;

View File

@@ -1,210 +1,311 @@
{ {
self, config,
pkgs,
lib, lib,
osConfig,
pkgs,
self,
... ...
}: { }: {
imports = [ imports = [
self.homeManagerModules.qutebrowser-profiles self.homeManagerModules.zen-browser
]; ];
programs.qutebrowser.enable = true; xdg.mimeApps.defaultApplications = with lib;
programs.qutebrowser.keyBindings = { listToAttrs (map (name: {
normal = { inherit name;
",m" = "spawn umpv {url}"; value = config.programs.zen-browser.package.meta.desktopFileName;
",M" = "hint links spawn umpv {hint-url}"; }) [
";M" = "hint --rapid links spawn umpv {hint-url}"; "application/x-extension-shtml"
"application/x-extension-xhtml"
"application/x-extension-html"
"application/x-extension-xht"
"application/x-extension-htm"
"x-scheme-handler/unknown"
"x-scheme-handler/mailto"
"x-scheme-handler/chrome"
"x-scheme-handler/about"
"x-scheme-handler/https"
"x-scheme-handler/http"
"application/xhtml+xml"
"application/json"
"text/plain"
"text/html"
]);
programs.zen-browser = let
locked = v: {
Value = v;
Status = "locked";
}; };
}; settings = {
programs.qutebrowser.settings = with lib; { "beacon.enabled" = locked false;
auto_save.session = true; "browser.startup.page" = locked 3;
confirm_quit = ["downloads"]; "device.sensors.enabled" = locked false;
"dom.battery.enabled" = locked false;
tabs.position = "left"; "dom.event.clipboardevents.enabled" = locked false;
"geo.enabled" = locked false;
# Colors "media.peerconnection.enabled" = locked false;
colors.tabs.pinned.even.bg = mkForce "#181818"; "privacy.clearHistory.cookiesAndStorage" = locked false;
colors.tabs.pinned.odd.bg = mkForce "#181818"; "privacy.clearHistory.siteSettings" = locked false;
"privacy.firstparty.isolate" = locked true;
colors.tabs.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text "privacy.resistFingerprinting" = locked true;
colors.tabs.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text "privacy.trackingprotection.enabled" = locked true;
colors.tabs.selected.even.fg = mkForce "#111111"; "privacy.trackingprotection.socialtracking.enabled" = locked true;
colors.tabs.selected.odd.fg = mkForce "#111111"; "webgl.disabled" = true;
"zen.view.use-single-toolbar" = false;
colors.tabs.pinned.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text
colors.tabs.pinned.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text
## Darkmode
colors.webpage.darkmode.enabled = true;
colors.webpage.darkmode.algorithm = "lightness-cielab";
colors.webpage.darkmode.policy.images = "never";
# Prevent fingerprinting
content.canvas_reading = false;
content.cookies.accept = "all";
content.cookies.store = true;
content.geolocation = false;
content.webgl = false;
content.webrtc_ip_handling_policy = "default-public-interface-only";
};
programs.qutebrowser.extraConfig = ''
config.set('colors.webpage.darkmode.enabled', False, 'file://*')
config.set('colors.webpage.darkmode.enabled', False, 'http://*:*/*')
config.set('colors.webpage.darkmode.enabled', False, 'capytal.company')
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.company')
config.set('colors.webpage.darkmode.enabled', False, 'capytal.cc')
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.cc')
config.set('colors.webpage.darkmode.enabled', False, 'lored.dev')
config.set('colors.webpage.darkmode.enabled', False, '*.lored.dev')
config.set('colors.webpage.darkmode.enabled', False, 'guz.one')
config.set('colors.webpage.darkmode.enabled', False, '*.guz.one')
'';
programs.qutebrowser.searchEngines = {
DEFAULT = "https://search.brave.com/search?q={}";
# Nix
pkg = "https://search.nixos.org/packages?query={}";
opt = "https://search.nixos.org/options?query={}";
lib = "https://noogle.dev/q?term={}";
hm = "https://home-manager-options.extranix.com/?query={}";
wiki = "https://nixos.wiki/index.php?search={}&go=Go";
# Wikipedia
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
wpt = "https://pt.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
};
programs.qutebrowser.greasemonkey = [
# Youtube Adblocking
(pkgs.fetchurl {
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_adblock.js";
hash = "sha256-AyD9VoLJbKPfqmDEwFIEBMl//EIV/FYnZ1+ona+VU9c=";
})
# Youtube Sponsorblock
(pkgs.fetchurl {
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_sponsorblock.js";
hash = "sha256-nwNade1oHP+w5LGUPJSgAX1+nQZli4Rhe8FFUoF5mLE=";
})
# Reddit adblock
(pkgs.fetchurl {
url = "https://github.com/afreakk/greasemonkeyscripts/raw/refs/heads/master/reddit_adblock.js";
hash = "sha256-KmCXL4GrZtwPLRyAvAxADpyjbdY5UFnS/XKZFKtg7tk=";
})
# Pinterest adblock
(pkgs.writeText "pinterest_adblock.js" ''
// ==UserScript==
// @name remove ads from pinterest
// @version 1.0.0
// @author guz
// @match *://*.pinterest.com/*
// ==/UserScript==
const removeShit = () => {
document.querySelectorAll('[data-grid-item]:has([title="Promoted by"])').forEach((e) => e.remove());
document.querySelectorAll('[data-grid-item]:has([data-test-id="oneTapPromotedPin"])').forEach((e) => e.remove());
document.querySelectorAll('[data-grid-item]:has([aria-label="Product Pin"])').forEach((e) => e.remove());
// document.querySelectorAll('[data-grid-item]:has-text(ideas you might love)').forEach((e) => e.remove());
// document.querySelectorAll('[data-grid-item]:has-text(Seaches to try)').forEach((e) => e.remove());
};
(trySetInterval = () => {
window.setInterval(removeShit, 1000);
})();
'')
# Privacy Redirector
(pkgs.substitute {
src = pkgs.fetchurl {
url = "https://github.com/dybdeskarphet/privacy-redirector/raw/refs/heads/main/privacy-redirector.user.js";
hash = "sha256-xj36+/3coiStIxftWCJUWHokSEmr+YRLOTktbmn5TkU=";
};
substitutions = [
# ON-OFF (Redirection / Farside)
"--replace"
"pinterest = [true, true]"
"pinterest = [false, false]"
"--replace"
"tumblr = [true, false]"
"tumblr = [false, false]"
"--replace"
"wikipedia = [true, false]"
"wikipedia = [false, false]"
"--replace"
"youtube = [true, false]"
"youtube = [false, false]"
"--replace"
"instagram = [true, true]"
"instagram = [false, false]"
];
})
# Aternos Anti-Anti-Adblock
(pkgs.fetchurl {
url = "https://gist.github.com/DvilMuck/f2b14f3f65e8f22974d781277158f82a/raw/66a0d8d9dd598fc516c3c9d9bbf6ef3f0f6a7a1e/aternosAntiAntiadblock.user.js";
hash = "sha256-PBFCt9o22D7WAN8S6C2BnLKgG3J5zZ/mWbWspCKcm6k=";
})
# Aternos block tracking
(pkgs.fetchurl {
url = "https://gist.github.com/DvilMuck/f2b14f3f65e8f22974d781277158f82a/raw/66a0d8d9dd598fc516c3c9d9bbf6ef3f0f6a7a1e/aternosBlockTracking.user.js";
hash = "sha256-GDDx3gbvh28qiB3Gi61k/pdM11wJhcV7dwCRGNvq30c=";
})
];
programs.qutebrowser.profiles = let
programmingSearchEngines = {
# Languages
go = "https://pkg.go.dev/search?q={}";
}; };
in { in {
"art" = { enable = true;
settings = { profiles."default" = {
colors.tabs.selected.even.bg = "#CBA6F7"; # Catppuccin's Mauve containersForce = true;
colors.tabs.selected.odd.bg = "#CBA6F7"; # Catppuccin's Mauve containers = {
colors.tabs.pinned.selected.even.bg = "#CBA6F7"; # Catppuccin's Mauve Personal = {
colors.tabs.pinned.selected.odd.bg = "#CBA6F7"; # Catppuccin's Mauve color = "purple";
icon = "fingerprint";
id = 1;
};
Work = {
color = "blue";
icon = "briefcase";
id = 2;
};
Shopping = {
color = "yellow";
icon = "cart";
id = 4;
};
Goverment = {
color = "orange";
icon = "dollar";
id = 5;
};
};
extensions.force = true;
extensions.settings = {
"tridactyl.vim@cmcaine.co.uk".settings = {
userconfig = {
configVersion = "2.0";
nmaps = {
"K" = "tabprev";
"J" = "tabnext";
};
theme = "midnight";
searchurls = with lib;
mapAttrs' (n: v:
nameValuePair
(
if v?definedAliases
then elemAt v.definedAliases 0
else n
)
(replaceString "{searchTerms}" "" (elemAt v.urls 0).template))
config.programs.zen-browser.profiles."default".search.engines;
};
};
"uBlock0@raymondhill.net".settings = {
selectedFilterLists = [
"user-filters"
"ublock-filters"
"ublock-badware"
"ublock-privacy"
"ublock-unbreak"
"ublock-quick-fixes"
"easylist"
"easyprivacy"
"urlhaus-1"
"plowe-0"
];
dynamicFilteringString = ''
behind-the-scene * * noop
behind-the-scene * inline-script noop
behind-the-scene * 1p-script noop
behind-the-scene * 3p-script noop
behind-the-scene * 3p-frame noop
behind-the-scene * image noop
behind-the-scene * 3p noop
* * 3p-script block
* * 3p-frame block
capytal.cc * * noop
capytal.company * * noop
guz.one * * noop
keikos.work * * noop
lored.dev * * noop
home-manager-options.extranix.com extranix.com * noop
home-manager-options.extranix.com home-manager-options.extranix.com * noop
'';
};
"{ef87d84c-2127-493f-b952-5b4e744245bc}".settings = {
baseUrl = "http://127.0.0.1:5600";
consentRequired = true;
consent = true;
hostname = osConfig.networking.hostName;
enabled = true;
browserName = "zen";
};
"7esoorv3@alefvanoon.anonaddy.me".settings = with builtins; fromJSON (readFile ./libredirect.json);
};
search.default = "brave";
search.force = true;
search.engines = {
brave = {
name = "Brave";
urls = [{template = "https://search.brave.com/search?q={searchTerms}";}];
};
nix-packages = {
name = "Nix Packages";
urls = [{template = "https://search.nixos.org/packages?query={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@pkg"];
};
nix-options = {
name = "Nix Options";
urls = [{template = "https://search.nixos.org/options?query={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@opt"];
};
nix-home-manager = {
name = "Home Manager";
urls = [{template = "https://home-manager-options.extranix.com/?query={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@hm"];
};
nix-noodle = {
name = "Noodle";
urls = [{template = "https://noogle.dev/q?term={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@lib"];
};
};
settings = with builtins;
mapAttrs (n: v:
if isAttrs v
then v.Value
else v)
settings;
shortcuts = {
"key_search" = {key = "";};
"key_search2" = {key = "";};
"zen-workspace-forward" = {
key = "j";
modifiers = {
control = true;
};
action = "cmd_zenWorkspaceForward";
};
"zen-workspace-backward" = {
key = "k";
modifiers = {
control = true;
};
action = "cmd_zenWorkspaceBackward";
};
};
spacesForce = true;
spaces = let
containers = config.programs.zen-browser.profiles."default".containers;
in {
"Space" = {
id = "c6de089c-410d-4206-961d-ab11f988d40a";
position = 1000;
};
"Work" = {
id = "cdd10fab-4fc5-494b-9041-325e5759195b";
icon = "chrome://browser/skin/zen-icons/selectable/star-1.svg";
container = containers."Work".id;
position = 2000;
};
"Shopping" = {
id = "78aabdad-8aae-4fe0-8ff0-2a0c6c4ccc24";
icon = "chrome://browser/skin/zen-icons/selectable/basket.svg";
container = containers."Shopping".id;
position = 5000;
};
"Goverment" = {
id = "7e83e835-caef-4b94-be0c-b6b3959d0830";
icon = "chrome://browser/skin/zen-icons/selectable/folder.svg";
container = containers."Goverment".id;
position = 6000;
};
}; };
}; };
"personal" = { policies = {
settings = { AutofillAdressEnabled = true;
colors.tabs.selected.even.bg = "#F5E0DC"; # Catppuccin's Rosewater AutofillCreditCardEnabled = false;
colors.tabs.selected.odd.bg = "#F5E0DC"; # Catppuccin's Rosewater EnableTrackingProtection = {
colors.tabs.pinned.selected.even.bg = "#F5E0DC"; # Catppuccin's Rosewater Value = true;
colors.tabs.pinned.selected.odd.bg = "#F5E0DC"; # Catppuccin's Rosewater Locked = true;
Cryptomining = true;
Fingerprinting = true;
}; };
}; ExtensionSettings = {
"work" = { "@contain-facebook" = {
settings = { install_url = "https://addons.mozilla.org/firefox/downloads/latest/facebook-container/latest.xpi";
colors.tabs.selected.even.bg = "#74C7EC"; # Catppuccin's Sapphire installation_mode = "force_installed";
colors.tabs.selected.odd.bg = "#74C7EC"; # Catppuccin's Sapphire };
colors.tabs.pinned.selected.even.bg = "#74C7EC"; # Catppuccin's Sapphire "7esoorv3@alefvanoon.anonaddy.me" = {
colors.tabs.pinned.selected.odd.bg = "#74C7EC"; # Catppuccin's Sapphire install_url = "https://addons.mozilla.org/firefox/downloads/latest/libredirect/latest.xpi";
installation_mode = "force_installed";
};
"addon@darkreader.org" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi";
installation_mode = "force_installed";
};
"addon@simplelogin" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi";
installation_mode = "force_installed";
};
"deArrow@ajay.app" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
installation_mode = "force_installed";
};
"idcac-pub@guus.ninja" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/istilldontcareaboutcookies/latest.xpi";
installation_mode = "force_installed";
};
"tridactyl.vim@cmcaine.co.uk" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/tridactyl-vim/latest.xpi";
installation_mode = "force_installed";
};
"sponsorBlocker@ajay.app" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
installation_mode = "force_installed";
};
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"{74145f27-f039-47ce-a470-a662b129930a}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/clearurls/latest.xpi";
installation_mode = "force_installed";
};
"{aecec67f-0d10-4fa7-b7c7-609a2db280cf}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/violentmonkey/latest.xpi";
installation_mode = "force_installed";
};
"{ef87d84c-2127-493f-b952-5b4e744245bc}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/aw-watcher-web/latest.xpi";
installation_mode = "force_installed";
};
}; };
searchEngines = programmingSearchEngines; DisableAppUpdate = true;
DisableFeedbackCommands = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
Preferences = with builtins;
mapAttrs (
n: v:
if isAttrs v
then v
else {Value = v;}
)
settings;
ShowHomeButton = false;
WindowsSSO = false;
}; };
"job" = {
settings = {
confirm_quit = ["always"];
content.webgl = true;
colors.tabs.selected.even.bg = "#A6E2A1"; #Catppuccin's Green
colors.tabs.selected.odd.bg = "#A6E2A1"; #Catppuccin's Green
colors.tabs.pinned.selected.even.bg = "#A6E2A1"; #Catppuccin's Green
colors.tabs.pinned.selected.odd.bg = "#A6E2A1"; #Catppuccin's Green
};
searchEngines = programmingSearchEngines;
};
"shopping" = {
settings = {
colors.tabs.selected.even.bg = "#F9E2AF"; # Catppuccin's Yellow
colors.tabs.selected.odd.bg = "#F9E2AF"; # Catppuccin's Yellow
colors.tabs.pinned.selected.even.bg = "#F9E2AF"; # Catppuccin's Yellow
colors.tabs.pinned.selected.odd.bg = "#F9E2AF"; # Catppuccin's Yellow
};
};
"goverment" = {
settings = {
colors.tabs.selected.even.bg = "#A6ADC8"; # Catppuccin's Subtext 1
colors.tabs.selected.odd.bg = "#A6ADC8"; # Catppuccin's Subtext 1
colors.tabs.pinned.selected.even.bg = "#A6ADC8"; # Catppuccin's Subtext 1
colors.tabs.pinned.selected.odd.bg = "#A6ADC8"; # Catppuccin's Subtext 1
};
};
"facebook" = {};
}; };
programs.mpv.enable = true; programs.mpv.enable = true;

View File

@@ -0,0 +1,637 @@
{
"options": {
"youtube": {
"enabled": true,
"redirectType": "main_frame",
"frontend": "invidious",
"embedFrontend": "invidious",
"unsupportedUrls": "bypass",
"redirectOnlyInIncognito": false
},
"invidious": ["https://inv.nadeko.net"],
"materialious": ["https://app.materialio.us"],
"piped": ["https://pipedapi-libre.kavin.rocks"],
"pipedMaterial": ["https://piped-material.xn--17b.net"],
"poketube": ["https://poketube.fun"],
"cloudtube": ["https://tube.cadence.moe"],
"lightTube": ["https://tube.kuylar.dev"],
"tuboYoutube": ["https://tubo.media"],
"viewtube": ["https://viewtube.io"],
"ytify": ["https://ytify.pp.ua"],
"youtubeMusic": {
"enabled": false,
"frontend": "invidiousMusic",
"unsupportedUrls": "bypass",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"hyperpipe": ["https://hp.ggtyler.dev"],
"invidiousMusic": [],
"twitter": {
"enabled": true,
"redirectType": "main_frame",
"unsupportedUrls": "bypass",
"frontend": "nitter",
"instance": "public",
"redirectOnlyInIncognito": false
},
"nitter": [
"https://nitter.tiekoetter.com",
"https://xcancel.com",
"https://nitter.privacyredirect.com"
],
"chatGpt": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "duckDuckGoAiChat",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"bluesky": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "skyview",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"skyview": ["https://skyview.social"],
"reddit": {
"enabled": true,
"frontend": "redlib",
"unsupportedUrls": "bypass",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"libreddit": [],
"redlib": [
"https://safereddit.com",
"https://l.opnxng.com",
"https://redlib.thebunny.zone"
],
"teddit": [],
"eddrit": ["https://eddrit.com"],
"tumblr": {
"enabled": false,
"redirectType": "main_frame",
"unsupportedUrls": "bypass",
"frontend": "priviblur",
"instance": "public",
"redirectOnlyInIncognito": false
},
"priviblur": ["https://pb.bloat.cat"],
"twitch": {
"enabled": true,
"redirectType": "main_frame",
"unsupportedUrls": "bypass",
"frontend": "safetwitch",
"instance": "public",
"redirectOnlyInIncognito": false
},
"safetwitch": [
"https://safetwitch.drgns.space",
"https://twitch.seitan-ayoub.lol",
"https://safetwitch.lunar.icu",
"https://safetwitch.privacyredirect.com",
"https://safetwitch.darkness.services"
],
"twineo": ["https://twineo.exozy.me"],
"tiktok": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "proxiTok",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"proxiTok": [
"https://proxitok.pabloferreiro.es",
"https://proxitok.pussthecat.org",
"https://tok.habedieeh.re",
"https://tok.artemislena.eu",
"https://cringe.whatever.social",
"https://proxitok.lunar.icu",
"https://cringe.seitan-ayoub.lol",
"https://proxitok.belloworld.it"
],
"offtiktok": ["https://www.offtiktok.com"],
"instagram": {
"enabled": false,
"frontend": "proxigram",
"unsupportedUrls": "bypass",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"proxigram": ["https://ig.opnxng.com"],
"imdb": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "libremdb",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"libremdb": [
"https://libremdb.iket.me",
"https://libremdb.pussthecat.org",
"https://libremdb.lunar.icu",
"https://binge.whatever.social",
"https://libremdb.r4fo.com",
"https://libremdb.catsarch.com",
"https://d.opnxng.com",
"https://libremdb.ducks.party",
"https://lmdb.bloat.cat",
"https://libremdb.franklyflawless.org",
"https://libremdb-fly.fly.dev"
],
"bilibili": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "mikuInvidious",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"mikuInvidious": [],
"pixiv": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "pixivFe",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"pixivFe": [
"https://pixiv.perennialte.ch",
"https://pixivfe.thebunny.zone",
"https://pixivfe.darkness.services",
"https://pixivfe.ducks.party"
],
"liteXiv": ["https://litexiv.465321.best", "https://litexiv.bloat.cat"],
"vixipy": ["https://vx.maid.zone"],
"pixivViewer": ["https://pixiv.pictures"],
"fandom": {
"enabled": true,
"unsupportedUrls": "bypass",
"instance": "public",
"frontend": "breezeWiki",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"breezeWiki": [
"https://breezewiki.com",
"https://breezewiki.pussthecat.org",
"https://antifandom.com",
"https://bw.artemislena.eu",
"https://breeze.hostux.net",
"https://z.opnxng.com",
"https://breeze.nohost.network",
"https://breeze.mint.lgbt",
"https://breezewiki.catsarch.com",
"https://breezewiki.hyperreal.coffee",
"https://breezewiki.4o1x5.dev",
"https://fandom.reallyaweso.me",
"https://breezewiki.nadeko.net",
"https://fan.blitzw.in"
],
"imgur": {
"enabled": true,
"redirectType": "main_frame",
"unsupportedUrls": "bypass",
"frontend": "rimgo",
"instance": "public",
"redirectOnlyInIncognito": false
},
"rimgo": [
"https://rimgo.pussthecat.org",
"https://ri.nadeko.net",
"https://rimgo.in.projectsegfau.lt",
"https://rimgo.us.projectsegfau.lt",
"https://rimgo.eu.projectsegfau.lt",
"https://rimgo.catsarch.com",
"https://rimgo.nohost.network",
"https://r.opnxng.com",
"https://imgur.fsky.io",
"https://rimgo.astrial.org",
"https://rimgo.canine.tools",
"https://rimgo.thebunny.zone",
"https://imgur.nerdvpn.de",
"https://rg.kuuro.net"
],
"pinterest": {
"enabled": true,
"unsupportedUrls": "bypass",
"redirectType": "main_frame",
"frontend": "binternet",
"redirectOnlyInIncognito": false
},
"binternet": [
"https://bn.bloat.cat",
"https://binternet.darkness.services",
"https://binternet.revvy.de",
"https://binternet.lunar.icu",
"https://binternet.privacyredirect.com",
"https://binternet.4o1x5.dev",
"https://binternet.ducks.party",
"https://bn.opnxng.com",
"https://pin.blitzw.in",
"https://bn.kuuro.net"
],
"painterest": ["https://pt.bloat.cat"],
"soundcloud": {
"enabled": true,
"redirectType": "main_frame",
"frontend": "soundcloak",
"unsupportedUrls": "bypass",
"redirectOnlyInIncognito": false
},
"tuboSoundcloud": ["https://tubo.media"],
"soundcloak": [
"https://sc.opnxng.com",
"https://sc.bloat.cat",
"https://sc.maid.zone",
"https://sc.kuuro.net",
"https://sc.tijn.dev",
"https://sc2.bloat.cat"
],
"bandcamp": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "tent",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"tent": [
"https://tent.sny.sh",
"https://tent.bloat.cat",
"https://tent.nbh.ax",
"https://tent.lab8.cz",
"https://tent.deep-swarm.xyz",
"https://tn.vern.cc",
"https://tn.maid.zone",
"https://tn.dc09.ru"
],
"tekstowo": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "tekstoLibre",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"tekstoLibre": ["https://davilarek.github.io/TekstoLibre"],
"genius": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "dumb",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"dumb": [
"https://dumb.lunar.icu",
"https://dumb.ducks.party",
"https://dumb.hyperreal.coffee",
"https://db.kuuro.net",
"https://lyr.dc09.ru"
],
"intellectual": ["https://intellectual.insprill.net"],
"medium": {
"frontend": "scribe",
"enabled": true,
"unsupportedUrls": "bypass",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"scribe": [
"https://scribe.rip",
"https://scribe.privacyredirect.com",
"https://scribe.r4fo.com",
"https://m.opnxng.com",
"https://scribe.nixnet.services"
],
"libMedium": ["https://md.vern.cc"],
"small": ["https://small.bloat.cat"],
"freedium": ["https://freedium.cfd"],
"quora": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "quetre",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"quetre": [
"https://quetre.iket.me",
"https://quetre.pussthecat.org",
"https://q.opnxng.com",
"https://quetre.lunar.icu",
"https://ask.habedieeh.re",
"https://quetre.ducks.party",
"https://quetre.drgns.space",
"https://qt.bloat.cat",
"https://quetre.franklyflawless.org",
"https://quetre.privacyredirect.com"
],
"github": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "gothub",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"gothub": [],
"gitlab": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "laboratory",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"laboratory": ["https://lab.vern.cc"],
"stackOverflow": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "anonymousOverflow",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"anonymousOverflow": [
"https://code.whatever.social",
"https://overflow.hostux.net",
"https://overflow.adminforge.de",
"https://overflow.lunar.icu",
"https://ao.owo.si",
"https://anonoverflow.frontendfriendly.xyz",
"https://ao.bloat.cat",
"https://anonoverflow.hyperreal.coffee",
"https://exchange.seitan-ayoub.lol"
],
"reuters": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "neuters",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"neuters": ["https://neuters.de"],
"snopes": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "suds",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"suds": ["https://sd.vern.cc"],
"ifunny": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "unfunny",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"unfunny": ["https://uf.vern.cc"],
"tenor": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "soprano",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"soprano": ["https://sp.vern.cc"],
"knowyourmeme": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "meme",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"meme": ["https://mm.vern.cc"],
"urbanDictionary": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "ruralDictionary",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"ruralDictionary": [
"https://ruraldictionary.franklyflawless.org",
"https://rd.thirtysix.pw",
"https://rd.bloat.cat"
],
"goodreads": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "biblioReads",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"biblioReads": [
"https://biblioreads.lunar.icu",
"https://biblioreads.eu.org",
"https://read.seitan-ayoub.lol",
"https://biblioreads.ducks.party",
"https://biblioreads.privacyredirect.com",
"https://br.bloat.cat",
"https://biblioreads.franklyflawless.org"
],
"wolframAlpha": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "wolfreeAlpha",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"wolfreeAlpha": [],
"instructables": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "structables",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"structables": ["https://structables.private.coffee"],
"destructables": ["https://ds.vern.cc"],
"indestructables": ["https://indestructables.private.coffee"],
"wikipedia": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "wikiless",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"wikiless": [],
"wikimore": ["https://wikimore.private.coffee"],
"waybackMachine": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "waybackClassic",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"waybackClassic": ["https://wayback-classic.net"],
"pastebin": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "pasted",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"pasted": ["https://pasted.drakeerv.com"],
"search": {
"enabled": false,
"frontend": "searxng",
"unsupportedUrls": "bypass",
"redirectGoogle": false,
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"searxng": ["https://nyc1.sx.ggtyler.dev"],
"searx": [],
"whoogle": [],
"librey": [],
"4get": ["https://4get.ca"],
"websurfx": ["https://alamin655-spacex.hf.space"],
"translate": {
"enabled": true,
"frontend": "simplyTranslate",
"unsupportedUrls": "bypass",
"instance": "public",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"simplyTranslate": [
"https://simplytranslate.org",
"https://simplytranslate.ducks.party",
"https://st.adast.dk"
],
"mozhi": ["https://mozhi.aryak.me"],
"libreTranslate": ["https://libretranslate.com"],
"translite": ["https://tl.bloat.cat"],
"maps": {
"redirectType": "main_frame",
"enabled": false,
"frontend": "osm",
"unsupportedUrls": "bypass",
"redirectOnlyInIncognito": false
},
"osm": ["https://www.openstreetmap.org"],
"meet": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "jitsi",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"jitsi": [],
"sendFiles": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "send",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"send": [],
"textStorage": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "privateBin",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"privateBin": [],
"pasty": ["https://pasty.lus.pm"],
"office": {
"enabled": false,
"unsupportedUrls": "bypass",
"frontend": "cryptPad",
"redirectOnlyInIncognito": false
},
"cryptPad": ["https://cryptpad.org"],
"ultimateGuitar": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "freetar",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"freetar": ["https://freetar.de"],
"baiduTieba": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "ratAintTieba",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"ratAintTieba": ["https://rat.fis.land"],
"threads": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "shoelace",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"shoelace": ["https://shoelace.mint.lgbt"],
"deviantArt": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "skunkyArt",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"skunkyArt": [
"https://skunky.bloat.cat",
"https://da.opnxng.com",
"https://sa.dc09.ru",
"https://art.bloat.cat",
"https://skunkyart.lumaeris.com"
],
"geeksForGeeks": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "nerdsForNerds",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"nerdsForNerds": ["https://nn.vern.cc"],
"ducksForDucks": ["https://ducksforducks.private.coffee"],
"coub": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "koub",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"koub": ["https://koub2.bloat.cat", "https://koub.bloat.cat"],
"chefkoch": {
"enabled": true,
"unsupportedUrls": "bypass",
"frontend": "gocook",
"redirectOnlyInIncognito": false,
"redirectType": "main_frame"
},
"gocook": ["https://cook.adminforge.de"],
"exceptions": {
"url": [],
"regex": []
},
"theme": "detect",
"popupServices": [
"youtube",
"reddit",
"translate",
"maps",
"stackOverflow",
"youtubeMusic",
"twitter",
"bluesky",
"pinterest"
],
"fetchInstances": "github",
"redirectOnlyInIncognito": false,
"troddit": ["https://www.troddit.com"],
"ultimateTab": ["https://ultimate-tab.com"]
}
}

View File

@@ -35,9 +35,6 @@
# 3D modeling # 3D modeling
"net.blockbench.Blockbench" "net.blockbench.Blockbench"
"org.blender.Blender" "org.blender.Blender"
# For sites that are incompatible with qutebrowser
"io.gitlab.librewolf-community"
]; ];
services.flatpak.overrides = { services.flatpak.overrides = {
"net.blockbench.Blockbench" = {Context.sockets = ["x11"];}; "net.blockbench.Blockbench" = {Context.sockets = ["x11"];};

View File

@@ -1,43 +1,53 @@
{ {
self,
config, config,
lib,
osConfig,
... ...
}: { }: {
programs.qutebrowser.profiles = let programs.zen-browser = {
programmingSearchEngines = { profiles."default" = {
# Languages containers = {
go = "https://pkg.go.dev/search?q={}"; Job = {
color = "green";
# Resources icon = "briefcase";
mdn = "https://developer.mozilla.org/en-US/search?q={}"; id = 3;
}; };
in rec { };
work = { # modsForce = true;
settings = { # mods = let
colors.tabs.selected.even.bg = "#74C7EC"; # Catppuccin's Sapphire # store = inputs.zen-theme-store;
colors.tabs.selected.odd.bg = "#74C7EC"; # Catppuccin's Sapphire # in {
colors.tabs.pinned.selected.even.bg = "#74C7EC"; # Catppuccin's Sapphire # "0c3d77bf-44fc-47a6-a183-39205dfa5f7e" = "${store}/themes/0c3d77bf-44fc-47a6-a183-39205dfa5f7e/theme.json";
colors.tabs.pinned.selected.odd.bg = "#74C7EC"; # Catppuccin's Sapphire # "c8d9e6e6-e702-4e15-8972-3596e57cf398" = pkgs.fetchurl {
# url = "https://raw.githubusercontent.com/zen-browser/theme-store/refs/heads/main/themes/c8d9e6e6-e702-4e15-8972-3596e57cf398/theme.json";
# hash = "sha256-v6VfUwdz01it0anDwwPcCSVufWCybue8CsPBd8X9KT0=";
# };
# };
spaces = let
containers = config.programs.zen-browser.profiles."default".containers;
in {
"Work2" = {
id = "1ea280f4-e428-4273-ace1-ad4f64a00cf5";
icon = "chrome://browser/skin/zen-icons/selectable/star.svg";
container = containers."Work".id;
position = 3000;
};
"Work3" = {
id = "2a5a1ca3-66df-4194-8ff9-63d0abb8eaae";
icon = "chrome://browser/skin/zen-icons/selectable/sun.svg";
container = containers."Work".id;
position = 4000;
};
"Job" = lib.mkIf (osConfig.context.job) {
id = "d7a663aa-3818-4ae7-b4b1-3d12a76d9c60";
icon = "chrome://browser/skin/zen-icons/selectable/planet.svg";
container = containers."Job".id;
position = 4500;
};
}; };
searchEngines = programmingSearchEngines;
};
work-2 = work;
work-3 = work;
work-video = work;
work-games = {
settings = work.settings;
searchEngines =
{
mod = "https://modrinth.com/mods?q={}";
rcp = "https://modrinth.com/resourcepacks?q={}";
dtp = "https://modrinth.com/datapacks?q={}";
shader = "https://modrinth.com/shaders?q={}";
modpack = "https://modrinth.com/modpacks?q={}";
plugins = "https://modrinth.com/plugins?q={}";
}
// work.searchEngines;
}; };
}; };
# The *state version* indicates which default # The *state version* indicates which default
# settings are in effect and will therefore help avoid breaking # settings are in effect and will therefore help avoid breaking
# program configurations. Switching to a higher state version # program configurations. Switching to a higher state version

View File

@@ -0,0 +1,190 @@
{
config,
inputs,
lib,
...
}:
with lib; let
cfg = config.programs.zen-browser;
configDir = "${config.home.homeDirectory}/.zen";
# INFO: Read default shortcuts and transform them to the same attrsOf submodule structure.
defaultShortcuts = pipe (with builtins; (fromJSON (readFile ./default_shortcuts.json)).shortcuts) [
(map (v:
nameValuePair (
# HACK: Since some of the default shortcuts have a null ID, we create
# a ID with null + group + (key or keycode). This ID will not be used
# in the final JSON file, and is just here since Nix can't have
# multiple attributes with the same name.
if isNull v.id
then "${toString v.id}-${v.action}-${v.group}-${
if v?key
then v.key
else v.keycode
}"
else v.id
)
v))
listToAttrs
];
in {
imports = [inputs.zen-browser.homeModules.twilight];
options.programs.zen-browser = {
profiles = mkOption {
type = with types;
attrsOf (submodule ({...}: {
options = {
shortcutsForce = mkEnableOption "";
shortcuts = mkOption {
type = attrsOf (submodule ({
config,
name,
...
}: let
default = defaultShortcuts.${name};
in {
options = {
id = mkOption {
type = nullOr str;
default = name;
};
key = mkOption {
type = nullOr str;
default = optionalString (config.keycode == "") default.key;
apply = v:
if isNull v
then ""
else v;
};
keycode = mkOption {
type = nullOr str;
default = optionalString (config.key == "") default.keycode;
apply = v:
if isNull v
then ""
else v;
};
group = mkOption {
type = enum (lib.unique (mapAttrsToList (_: s: s.group) defaultShortcuts));
default = default.group;
};
l10nId = mkOption {
type = enum (lib.unique (mapAttrsToList (_: s: s.l10nId) defaultShortcuts));
default = default.l10nId;
};
modifiers = {
control = mkEnableOption "";
alt = mkEnableOption "";
shift = mkEnableOption "";
meta = mkEnableOption "";
accel = mkEnableOption "";
};
action = mkOption {
type = enum (lib.unique (mapAttrsToList (_: s: s.action) defaultShortcuts));
default = default.action;
};
disabled = mkOption {
type = bool;
default = default.disabled;
};
reserved = mkOption {
type = bool;
default = default.reserved;
};
internal = mkOption {
type = bool;
default = default.internal;
};
};
}));
default = {};
};
# FIXME: Zen does not update zen-themes.css
# modsForce = mkEnableOption "";
# mods = mkOption {
# type = attrsOf (
# either
# path
# (submodule ({name, ...}: {
# options = {
# id = mkOption {
# type = str;
# default = name;
# };
# name = mkOption {
# type = str;
# };
# description = mkOption {
# type = str;
# default = "";
# };
# homepage = mkOption {
# type = str;
# default = "";
# };
# style = mkOption {
# type = str;
# };
# readme = mkOption {
# type = str;
# default = "";
# };
# image = mkOption {
# type = str;
# default = "";
# };
# author = mkOption {
# type = str;
# default = "";
# };
# version = mkOption {
# type = str;
# default = "";
# };
# tags = mkOption {
# type = listOf str;
# default = [];
# };
# createdAt = mkOption {
# type = str;
# default = "";
# };
# updatedAt = mkOption {
# type = str;
# default = "";
# };
# enabled = mkOption {
# type = bool;
# default = true;
# };
# };
# }))
# );
# apply = with builtins;
# v:
# mapAttrs (n: v:
# if (isPath v || isStringLike v)
# then fromJSON (readFile v)
# else v)
# v;
# default = {};
# };
};
}));
};
};
config = mkIf cfg.enable {
home.file =
concatMapAttrs (profileName: profile: {
"${configDir}/${profileName}/zen-keyboard-shortcuts.json" = mkIf (profile.shortcuts != {}) {
text = builtins.toJSON {shortcuts = mapAttrsToList (_: v: v) (defaultShortcuts // profile.shortcuts);};
force = profile.shortcutsForce;
};
# "${configDir}/${profileName}/zen-themes.json" = mkIf (profile.mods != {}) {
# text = builtins.toJSON profile.mods;
# force = profile.modsForce;
# };
})
cfg.profiles;
};
}

File diff suppressed because it is too large Load Diff