{ pkgs, myConfig, id, name, url, ... }: { inherit id name; # Note: This profile relies on the global tridactylrc logic in default.nix # to dynamically set 'newtab' via the TRIDACTYL_NEWTAB environment variable. search.force = true; search.default = "ddg"; extensions.force = true; extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin bitwarden tridactyl new-tab-override pywalfox ]; settings = { # --- New Tab Override --- "extensions.newtaboverride@agenedia.com.url" = url; "extensions.newtaboverride@agenedia.com.type" = 1; # URL mode # --- Privacy & Hardening --- "browser.contentblocking.category" = "strict"; "privacy.trackingprotection.enabled" = true; "privacy.resistFingerprinting" = true; # Note: Spoofs timezone and caps FPS to 60 "geo.enabled" = false; "media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks "network.dns.disablePrefetch" = true; "network.prefetch-next" = false; # --- NixOS / Hyprland Integration --- "widget.use-xdg-desktop-portal.file-picker" = 1; # Use native file picker # --- UI & Behavior --- "browser.toolbars.bookmarks.visibility" = "never"; "browser.compactmode.show" = true; "browser.tabs.closeWindowWithLastTab" = false; "extensions.pocket.enabled" = false; "extensions.screenshots.disabled" = true; "browser.topsites.contile.enabled" = false; "browser.formfill.enable" = false; "browser.search.suggest.enabled" = false; "browser.search.suggest.enabled.private" = false; "browser.urlbar.suggest.searches" = false; "browser.urlbar.showSearchSuggestionsFirst" = false; "browser.newtabpage.activity-stream.feeds.section.topstories" = false; "browser.newtabpage.activity-stream.feeds.snippets" = false; "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; "browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.system.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "toolkit.legacyUserProfileCustomizations.stylesheets" = true; "extensions.autoDisableScopes" = 0; # Enable extensions by default # --- Homepage & Navigation --- "browser.startup.page" = 1; # Always open the homepage "browser.startup.homepage" = url; "browser.newtab.url" = url; # Try to set newtab to homepage "browser.sessionstore.resume_from_crash" = false; # Always start fresh "browser.sessionstore.max_tabs_undo" = 0; # Disable undo close tab # --- DNS over HTTPS (Quad9) --- "network.trr.mode" = 2; # Use DoH with system fallback "network.trr.uri" = "https://dns.quad9.net/dns-query"; }; # # userChrome = '' # /* --- Autohide Entire Toolbox (Tabs + Address Bar) --- */ # /* Adapted from MrOtherGuy's autohide_main_toolbar.css */ # # :root{ # /* Height of Tabs + Nav Bar approx 80px */ # --uc-navbar-transform: -85px; # --uc-autohide-toolbar-delay: 0.1s; # --uc-autohide-toolbar-duration: 200ms; # } # :root[uidensity="compact"]{ --uc-navbar-transform: -70px } # # #navigator-toolbox > div{ display: contents; } # # /* Apply transform to TabsToolbar AND Nav-bar */ # :root[sessionrestored] :where(#nav-bar,#PersonalToolbar,#TabsToolbar,#tab-notification-deck,.global-notificationbox,#notifications-toolbar){ # transform: translateY(var(--uc-navbar-transform)) # } # # :root:is([customizing],[chromehidden*="toolbar"]) :where(#nav-bar,#PersonalToolbar,#TabsToolbar,#tab-notification-deck,.global-notificationbox,#notifications-toolbar){ # transform: none !important; # opacity: 1 !important; # } # # /* Hide styles for Nav-Bar AND TabsToolbar */ # :where(#nav-bar,#TabsToolbar):not([customizing]){ # opacity: 0; # transition: transform var(--uc-autohide-toolbar-duration) ease var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-duration) ease var(--uc-autohide-toolbar-delay) !important; # position: relative; # z-index: 2; # background-color: #1c1b22 !important; /* Solid background */ # } # # #navigator-toolbox, # #sidebar-box, # #sidebar-main, # #sidebar-splitter, # #tabbrowser-tabbox{ # z-index: auto !important; # } # # /* Show when toolbox is focused or hovered */ # #navigator-toolbox:focus-within > .browser-toolbar, # .browser-titlebar:hover ~ :is(#nav-bar,#PersonalToolbar,#TabsToolbar), # #nav-bar:hover, # #TabsToolbar:hover, # #nav-bar:hover + #PersonalToolbar{ # transform: translateY(0); # opacity: 1; # transition-duration: var(--uc-autohide-toolbar-duration), var(--uc-autohide-toolbar-duration) !important; # transition-delay: 0s !important; # } # # /* Ensure popups still work (URL bar) */ # :root[sessionrestored] #urlbar[popover]{ # opacity: 0; # pointer-events: none; # transition: transform var(--uc-autohide-toolbar-duration) ease var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-duration) ease var(--uc-autohide-toolbar-delay); # transform: translateY(var(--uc-navbar-transform)); # } # #mainPopupSet:has(> [panelopen]:not(#ask-chat-shortcuts,#selection-shortcut-action-panel,#chat-shortcuts-options-panel,#tab-preview-panel)) ~ toolbox #urlbar[popover], # .browser-titlebar:is(:hover,:focus-within) ~ #nav-bar #urlbar[popover], # #nav-bar:is(:hover,:focus-within) #urlbar[popover], # #urlbar-container > #urlbar[popover]:is([focused],[open]){ # opacity: 1; # pointer-events: auto; # transition-delay: 0ms; # transform: translateY(0); # } # :where(:root[sessionrestored]) #urlbar-container > #urlbar[popover]:is([focused],[open]){ # transition-duration: 100ms; # } # # /* --- CRITICAL FIX: Trigger Zone --- */ # /* Since we hide EVERYTHING, we need a hitbox at the top of the screen */ # #navigator-toolbox::after { # content: ""; # position: fixed; # top: 0; # left: 0; # width: 100%; # height: 20px; /* Generous hit target */ # z-index: 10000; # pointer-events: auto; # } # # /* When hitbox is hovered, reveal bars */ # #navigator-toolbox:hover :where(#nav-bar,#PersonalToolbar,#TabsToolbar) { # transform: translateY(0) !important; # opacity: 1 !important; # transition-delay: 0s !important; # } # # /* Move up the content view to fill the gap */ # :root[sessionrestored]:not([chromehidden~="toolbar"]) > body > #browser{ # margin-top: var(--uc-navbar-transform); # } # # /* Fix Titlebar and Bookmarks */ # #titlebar { appearance: none !important; } # #PersonalToolbar { visibility: collapse !important; } # ''; }