From 55d13865e5949402f69fc9a997d072a3f59d974b Mon Sep 17 00:00:00 2001 From: Tomas Rivera <137088692+Totorile1@users.noreply.github.com> Date: Wed, 4 Mar 2026 14:19:35 +0100 Subject: [PATCH] started working on the librewolf config --- hosts/laptop/home.nix | 3 +- modules/home-manager/hyprland.nix | 3 +- modules/home-manager/librewolf.nix | 429 +++++++++++++++++++++++++- modules/home-manager/zsh.nix | 1 + modules/scripts/librewolfprofiles.nix | 27 ++ modules/scripts/nohup.out | 18 ++ 6 files changed, 475 insertions(+), 6 deletions(-) create mode 100644 modules/scripts/librewolfprofiles.nix create mode 100644 modules/scripts/nohup.out diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index b990389..004d32c 100755 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -24,6 +24,7 @@ imports = [ ../../modules/home-manager/hypridle.nix ../../modules/home-manager/swaylock.nix ../../modules/home-manager/anki.nix # we use only for some settings. see ../../modules/nixos/anki.nix for activating +../../modules/home-manager/librewolf.nix # privacy browser ]; @@ -66,7 +67,7 @@ home.packages = [ (pkgs.callPackage ../../modules/scripts/launch.nix {}) # necessary for the apps i launch with hyprland at every start (pkgs.callPackage ../../modules/scripts/gitnotify.nix {}) (pkgs.callPackage ../../modules/scripts/tomato.nix {}) - +(pkgs.callPackage ../../modules/scripts/librewolfprofiles.nix {}) #pkgs pkgs.gruvbox-gtk-theme # # Adds the 'hello' command to your environment. It prints a friendly diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix index 709698c..64b6e8b 100644 --- a/modules/home-manager/hyprland.nix +++ b/modules/home-manager/hyprland.nix @@ -21,7 +21,7 @@ in "$term" = "kitty"; "$editor" = "nvim"; "$file" = "nautilus"; - "$browser" = "firefox"; # change to librewolf later + "$browser" = "kitty --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles"; # ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ # █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ animations = { @@ -405,6 +405,7 @@ in "float,class:^(com.github.unrud.VideoDownloader)$" # VideoDownloader-Gkk "float,class:^(io.gitlab.adhami3310.Impression)$" # Impression-Gtk "float,class:^(io.missioncenter.MissionCenter)$" # MissionCenter-Gtk +"float,title:^(custom-librewolfprofiles)$" # add a float for tomato when in kitty #"plugin:imgborders:noimgborders, tag:noborder" ]; diff --git a/modules/home-manager/librewolf.nix b/modules/home-manager/librewolf.nix index cb6a272..06f146d 100644 --- a/modules/home-manager/librewolf.nix +++ b/modules/home-manager/librewolf.nix @@ -1,8 +1,429 @@ -{ config, pkgs, ... }: - +# adapted from https://github.com/contre95/dotfiles/blob/main/dotfiles/nixos/programs/librewolf.nix +{ pkgs, config, ... }: { - programs.zoxide = { + home.sessionVariables = { + MOZ_ENABLE_WAYLAND = 1; + MOZ_USE_XINPUT2 = 1; + MOZ_DBUS_REMOTE = 1; + }; + programs.librewolf = { enable = true; - enableZshIntegration = true; + settings = { + "browser.profiles.enabled" = true; + # disabled until i find something that uses it. + "webgl.disabled" = true; + # settings = lib.mapAttrs' (n: lib.nameValuePair "pref.${n}") { + "app.update.auto" = true; # disable auto update + #"dom.security.https_only_mode" = true; # force https + "extensions.pocket.enabled" = false; # disable pocket + #"browser.quitShortcut.disabled" = true; # disable ctrl+q + "browser.download.panel.shown" = true; # show download panel + "signon.rememberSignons" = false; # disable saving passwords + "identity.fxaccounts.enabled" = false; # disable librewolf accounts + "app.shield.optoutstudies.enabled" = false; # disable shield studies + "browser.shell.checkDefaultBrowser" = false; # don't check if default browser + #"browser.bookmarks.restore_default_bookmarks" = false; # don't restore default bookmarks + # Download handling + #"browser.download.dir" = "/home/meain/down"; # default download dir + "browser.startup.page" = 3; # restore previous session + # UI changes + # "browser.uidensity" = 1; # enable dense UI + #"general.autoScroll" = true; # enable autoscroll + # "browser.compactmode.show" = true; # enable compact mode + # "browser.tabs.firefox-view" = false; # enable librewolf view + #"startup.homepage_welcome_url" = + # "https://metrics.internal.contre.io/d/cUITC74Vksd/podman-revamped?orgId=1&from=2026-02-23T19:29:26.304Z&to=2026-02-23T19:59:26.304Z&timezone=browser&var-Filters=&var-namespace=alloy&var-level=error&var-level=debug&var-level=info&var-level=warn&refresh=5s&kiosk=true"; # disable welcome page + "browser.newtabpage.enabled" = true; # disable new tab page + "full-screen-api.ignore-widgets" = true; # fullscreen within window + "browser.toolbars.bookmarks.visibility" = "always"; # hide bookmarks toolbar + "browser.aboutConfig.showWarning" = false; # disable warning about about:config + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # disable picture in picture button + + # Privacy + "privacy.resistFingerprinting" = true; + # "privacy.clearOnShutdown.cache" = false; + "privacy.clearOnShutdown.history" = false; + "privacy.clearHistory.cookiesAndStorage" = false; + "privacy.clearHistory.historyFormDataAndDownloads" = false; + "privacy.clearHistory.cache" = false; + "privacy.clearOnShutdown_v2.siteSettings" = false; + "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.history" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.sessions" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookies" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown.history" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = false; + "services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = false; + "privacy.clearOnShutdown.cookies" = false; + "browser.discovery.enabled" = false; # disable discovery + "browser.search.suggest.enabled" = true; # disable search suggestions + "browser.contentblocking.category" = "custom"; # set tracking protection to custom + "dom.private-attribution.submission.enabled" = false; # stop doing dumb stuff mozilla + "browser.protections_panel.infoMessage.seen" = true; # disable tracking protection info + + # Theme + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "svg.context-properties.content.enabled" = true; + "layout.css.color-mix.enabled" = true; + + # Disable telemetry + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.unified" = false; + "browser.ping-centre.telemetry" = false; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "browser.translations.automaticallyPopup" = false; + "toolkit.telemetry.hybridContent.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.reportingpolicy.firstRun" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "browser.newtabpage.activity-stream.telemetry" = false; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + + "browser.tabs.loadInBackground" = true; # open new tab in background + "browser.tabs.loadBookmarksInTabs" = true; # open bookmarks in new tab + "browser.tabs.warnOnOpen" = false; # don't warn when opening multiple tabs + "browser.tabs.warnOnQuit" = false; # don't warn when closing multiple tabs + "browser.tabs.warnOnClose" = false; # don't warn when closing multiple tabs + "browser.tabs.loadDivertedInBackground" = false; # open new tab in background + "browser.tabs.warnOnCloseOtherTabs" = false; # don't warn when closing multiple tabs + "browser.tabs.closeWindowWithLastTab" = false; # don't close window when last tab is closed + + # other + "media.autoplay.default" = 0; # enable autoplay on open + "devtools.toolbox.host" = "right"; # move devtools to right + "devtools.theme" = "dark"; + # "browser.ssb.enabled" = true; # enable site specific browser + "media.rdd-vpx.enabled" = true; # enable hardware acceleration + "devtools.cache.disabled" = true; # disable caching in devtools + "media.ffmpeg.vaapi.enabled" = true; # enable hardware acceleration + + # Fonts + "font.size.fixed.x-western" = 15; + "font.minimum-size.x-western" = 13; + "font.size.variable.x-western" = 15; + "font.size.monospace.x-western" = 15; + "browser.display.use_document_fonts" = 1; + "browser.link.open_newwindow.restriction" = 0; + # + # "browser.fixup.domainsuffixwhitelist.home" = true; + # "browser.fixup.domainwhitelist.internal.contre.io" = true; + "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; + # "keyword.enable" = false; # Disable search when typing unexistent TLD + + }; + policies = { + ExtensionSettings = { + "enhancerforyoutube@maximerf.addons.mozilla.org" = { + installation_mode = "normal_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/enhancer-for-youtube/latest.xpi"; + }; + + "sponsorBlocker@ajay.app" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; + installation_mode = "force_installed"; + }; + + "AdNauseam@dhowe" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/adnauseam/latest.xpi"; + installation_mode = "force_installed"; + }; + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "blocked"; + }; + "Gruvbox@YeetFrog" = { + install_url = "https://addons.mozilla.org/firefox/downloads/file/3729287/gruvboxgruvboxgruvboxgruvboxgr-1.0.xpi"; + installation_mode = "force_installed"; + }; + "TrackMeNot@DanielHowe" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/trackmenot/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableAccounts = true; + DisableFirefoxScreenshots = true; + # OverrideFirstRunPage = ""; + # OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab" + DisplayMenuBar = "never"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + }; + profiles.work = { + id = 0; + # userChrome = builtins.readFile ./userChrome.css; + # userContent = builtins.readFile ./userChrome.css; + search = { + force = true; + engines = { + # don't need these default ones + "amazondotcom-es".metaData.hidden = true; + "bing".metaData.hidden = true; + "ebay".metaData.hidden = true; + "startpage" = { + urls = [ + { + template = "https://www.startpage.com/sp/search"; + params = [ + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "sp" ]; + }; + "ddg" = { + urls = [ + { + template = "https://duckduckgo.com"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "d" ]; + }; + "google-maps" = { + urls = [ + { + template = "https://www.google.com/maps/search/"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "gm" ]; + }; + "Home Manager Options" = { + urls = [ + { + template = "https://home-manager-options.extranix.com/"; + params = [ + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "ho" ]; + }; + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "np" ]; + }; + "youtube" = { + urls = [ + { + template = "https://www.youtube.com/results"; + params = [ + { + name = "search_query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "y" ]; + }; + "Wikipedia" = { + urls = [ + { + template = "https://en.wikipedia.org/wiki/Special:Search"; + params = [ + { + name = "search"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "wik" ]; + }; + + "GitHub" = { + urls = [ + { + template = "https://github.com/search"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "gh" ]; + }; + }; + }; + }; + profiles.other = { + id = 1; + # userChrome = builtins.readFile ./userChrome.css; + # userContent = builtins.readFile ./userChrome.css; + search = { + force = true; + engines = { + # don't need these default ones + "amazondotcom-es".metaData.hidden = true; + "bing".metaData.hidden = true; + "ebay".metaData.hidden = true; + "startpage" = { + urls = [ + { + template = "https://www.startpage.com/sp/search"; + params = [ + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "sp" ]; + }; + "ddg" = { + urls = [ + { + template = "https://duckduckgo.com"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "d" ]; + }; + "google-maps" = { + urls = [ + { + template = "https://www.google.com/maps/search/"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "gm" ]; + }; + "Home Manager Options" = { + urls = [ + { + template = "https://home-manager-options.extranix.com/"; + params = [ + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "ho" ]; + }; + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "np" ]; + }; + "youtube" = { + urls = [ + { + template = "https://www.youtube.com/results"; + params = [ + { + name = "search_query"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "y" ]; + }; + "Wikipedia" = { + urls = [ + { + template = "https://en.wikipedia.org/wiki/Special:Search"; + params = [ + { + name = "search"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "wik" ]; + }; + "GitHub" = { + urls = [ + { + template = "https://github.com/search"; + params = [ + { + name = "q"; + value = "{searchTerms}"; + } + ]; + } + ]; + definedAliases = [ "gh" ]; + }; + }; + }; + }; + }; } diff --git a/modules/home-manager/zsh.nix b/modules/home-manager/zsh.nix index f8264f6..ea79772 100644 --- a/modules/home-manager/zsh.nix +++ b/modules/home-manager/zsh.nix @@ -25,6 +25,7 @@ custom-cat() { ls = "ls -hA -s --color"; cat = "custom-cat"; pomodoro = "kitty -e 'tomato'"; + librewolf = "kitty --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles"; }; }; } diff --git a/modules/scripts/librewolfprofiles.nix b/modules/scripts/librewolfprofiles.nix new file mode 100644 index 0000000..2b055a7 --- /dev/null +++ b/modules/scripts/librewolfprofiles.nix @@ -0,0 +1,27 @@ +{ writeShellApplication, zsh, kitty, fzf,... }: + +writeShellApplication { + name = "custom-librewolfprofiles"; + runtimeInputs = [ + zsh + fzf + ]; + text = '' +# List of profiles +profiles=("work" "other") + +# Use fzf to select +selected=$(printf "%s\n" "''${profiles[@]}" | fzf --height 6 --reverse --prompt="Select LibreWolf profile:") + +# If user cancels, exit +[[ -z "$selected" ]] && exit 0 + +# Launch LibreWolf detached, keeping environment +setsid librewolf -P "$selected" --no-remote >/dev/null 2>&1 & + pkill -f "kitty.*Select LibreWolf profile" + + +# Exit the kitty terminal after selection +exit +''; +} diff --git a/modules/scripts/nohup.out b/modules/scripts/nohup.out new file mode 100644 index 0000000..61acd0b --- /dev/null +++ b/modules/scripts/nohup.out @@ -0,0 +1,18 @@ +[76518, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:76518): Gtk-WARNING **: 13:51:55.317: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name +[Parent 76518, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:76518): Gtk-WARNING **: 13:51:55.420: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name +[Parent 76518, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:76518): Gtk-WARNING **: 13:51:55.455: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name +[77025, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:77025): Gtk-WARNING **: 13:52:10.941: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name +[Parent 77025, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:77025): Gtk-WARNING **: 13:52:11.043: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name +[Parent 77025, Main Thread] WARNING: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name: 'glib warning', file /build/firefox-147.0.4/toolkit/xre/nsSigHandlers.cpp:201 + +(librewolf:77025): Gtk-WARNING **: 13:52:11.078: Theme parsing error: gtk.css:1048:16: 'border-spacing' is not a valid property name