From 595cabbb88e51b19a05682ea3da6e239c89f5a65 Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Mon, 12 Jan 2026 17:45:45 +0100 Subject: [PATCH] refactor(browser): create single browser module --- home/hosts/andromache/default.nix | 20 ++----- home/hosts/astyanax/default.nix | 15 ++--- home/hosts/work/default.nix | 12 ++-- home/modules/browser/bookmarks.nix | 19 +++++++ home/modules/browser/chromium.nix | 12 ++++ home/modules/browser/default.nix | 33 +++++++++++ home/modules/browser/firefox.nix | 83 +++++++++++++++++++++++++++ home/modules/browser/librewolf.nix | 83 +++++++++++++++++++++++++++ home/modules/firefox.nix | 91 ------------------------------ 9 files changed, 246 insertions(+), 122 deletions(-) create mode 100644 home/modules/browser/bookmarks.nix create mode 100644 home/modules/browser/chromium.nix create mode 100644 home/modules/browser/default.nix create mode 100644 home/modules/browser/firefox.nix create mode 100644 home/modules/browser/librewolf.nix delete mode 100644 home/modules/firefox.nix diff --git a/home/hosts/andromache/default.nix b/home/hosts/andromache/default.nix index 745e1c0..bee7957 100644 --- a/home/hosts/andromache/default.nix +++ b/home/hosts/andromache/default.nix @@ -14,15 +14,10 @@ in ../../modules/desktop/niri ../../modules/git.nix ../../modules/k9s.nix - (import ../../modules/taskwarrior.nix { - inherit config; - inherit pkgs; - }) - (import ../../modules/keepassxc.nix { inherit pkgs; }) - (import ../../modules/anki.nix { - inherit config; - inherit pkgs; - }) + ../../modules/taskwarrior.nix + ../../modules/keepassxc.nix + ../../modules/anki.nix + ../../modules/browser ]; home.stateVersion = "25.05"; @@ -32,6 +27,8 @@ in xdg.userDirs.createDirectories = false; xdg.userDirs.download = "${config.home.homeDirectory}/dl"; + browser.primary = "librewolf"; + programs = { bash = { enable = true; @@ -50,11 +47,6 @@ in export PATH=${../../../dots/.bin}:$PATH ''; }; - firefox = import ../../modules/firefox.nix { - inherit inputs; - inherit pkgs; - inherit config; - }; fzf = { enable = true; enableBashIntegration = true; diff --git a/home/hosts/astyanax/default.nix b/home/hosts/astyanax/default.nix index 7b75eb5..f4a1d86 100644 --- a/home/hosts/astyanax/default.nix +++ b/home/hosts/astyanax/default.nix @@ -13,11 +13,9 @@ in ../../modules/desktop/niri ../../modules/git.nix ../../modules/k9s.nix - (import ../../modules/taskwarrior.nix { - inherit config; - inherit pkgs; - }) - (import ../../modules/keepassxc.nix { inherit pkgs; }) + ../../modules/taskwarrior.nix + ../../modules/keepassxc.nix + ../../modules/browser ]; home.stateVersion = "25.05"; @@ -27,6 +25,8 @@ in xdg.userDirs.createDirectories = false; xdg.userDirs.download = "${config.home.homeDirectory}/dl"; + browser.primary = "librewolf"; + programs = { bash = { enable = true; @@ -45,11 +45,6 @@ in export PATH=${../../../dots/.bin}:$PATH ''; }; - firefox = import ../../modules/firefox.nix { - inherit inputs; - inherit pkgs; - inherit config; - }; fzf = { enable = true; enableBashIntegration = true; diff --git a/home/hosts/work/default.nix b/home/hosts/work/default.nix index eb4aadb..ea9f79e 100644 --- a/home/hosts/work/default.nix +++ b/home/hosts/work/default.nix @@ -13,7 +13,8 @@ in ../../modules/dconf.nix ../../modules/git.nix ../../modules/k9s.nix - (import ../../modules/keepassxc.nix { inherit pkgs; }) + ../../modules/keepassxc.nix + ../../modules/browser ]; nixpkgs.config.allowUnfree = true; @@ -27,13 +28,10 @@ in defaultWrapper = "mesa"; }; + browser.primary = "firefox"; + browser.secondary = "chromium"; + programs = { - # editorconfig.enable = true; - firefox = import ../../modules/firefox.nix { - inherit inputs; - inherit pkgs; - inherit config; - }; gh.enable = true; kubecolor.enable = true; }; diff --git a/home/modules/browser/bookmarks.nix b/home/modules/browser/bookmarks.nix new file mode 100644 index 0000000..4d53b76 --- /dev/null +++ b/home/modules/browser/bookmarks.nix @@ -0,0 +1,19 @@ +{ + nixos = { + name = "NixOS"; + bookmarks = [ + { + name = "wiki"; + url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; + } + { + name = "packages"; + url = "https://search.nixos.org/packages"; + } + { + name = "options"; + url = "https://search.nixos.org/options"; + } + ]; + }; +} diff --git a/home/modules/browser/chromium.nix b/home/modules/browser/chromium.nix new file mode 100644 index 0000000..992a4fe --- /dev/null +++ b/home/modules/browser/chromium.nix @@ -0,0 +1,12 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + config = lib.mkIf (config.browser.primary == "chromium" || config.browser.secondary == "chromium") { + home.packages = [ pkgs.chromium ]; + }; +} diff --git a/home/modules/browser/default.nix b/home/modules/browser/default.nix new file mode 100644 index 0000000..49846c5 --- /dev/null +++ b/home/modules/browser/default.nix @@ -0,0 +1,33 @@ +{ lib, ... }: + +{ + options.browser = { + primary = lib.mkOption { + type = lib.types.enum [ + "firefox" + "chromium" + "librewolf" + ]; + default = "firefox"; + description = "Primary web browser"; + }; + + secondary = lib.mkOption { + type = lib.types.nullOr ( + lib.types.enum [ + "firefox" + "chromium" + "librewolf" + ] + ); + default = null; + description = "Optional secondary web browser"; + }; + }; + + imports = [ + ./firefox.nix + ./librewolf.nix + ./chromium.nix + ]; +} diff --git a/home/modules/browser/firefox.nix b/home/modules/browser/firefox.nix new file mode 100644 index 0000000..eb190b2 --- /dev/null +++ b/home/modules/browser/firefox.nix @@ -0,0 +1,83 @@ +{ config, inputs, lib, pkgs, ... }: + +let + bookmarks = import ./bookmarks.nix; +in + +{ + config = lib.mkIf (config.browser.primary == "firefox" || config.browser.secondary == "firefox") { + programs.firefox = { + enable = true; + nativeMessagingHosts = with pkgs; [ + tridactyl-native + ]; + profiles = { + default = { + settings = { + "signon.rememberSignons" = false; + "findbar.highlightAll" = true; + "extensions.autoDisableScopes" = 0; + }; + extensions = { + packages = with inputs.firefox-addons.packages.${pkgs.system}; [ + duckduckgo-privacy-essentials + istilldontcareaboutcookies + libredirect + keepassxc-browser + react-devtools + sponsorblock + tridactyl + ublock-origin + ]; + }; + bookmarks = { + force = true; + settings = [ + { + toolbar = true; + bookmarks = [ + bookmarks.nixos + ]; + } + ]; + }; + }; + }; + policies = { + DefaultDownloadDirectory = "\${home}/dl"; + ExtensionSettings = { + "jid1-ZAdIEUB7XOzOJw@jetpack" = { + default_area = "navbar"; + private_browsing = true; + }; + "idcac-pub@guus.ninja" = { + default_area = "navbar"; + private_browsing = true; + }; + "7esoorv3@alefvanoon.anonaddy.me" = { + default_area = "navbar"; + }; + "keepassxc-browser@keepassxc.org" = { + default_area = "navbar"; + private_browsing = true; + }; + "@react-devtools" = { + default_area = "navbar"; + private_browsing = true; + }; + "sponsorBlocker@ajay.app" = { + default_area = "navbar"; + private_browsing = true; + }; + "tridactyl.vim@cmcaine.co.uk".settings = { + private_browsing = true; + }; + "uBlock0@raymondhill.net".settings = { + default_area = "navbar"; + private_browsing = true; + }; + }; + }; + }; + }; +} diff --git a/home/modules/browser/librewolf.nix b/home/modules/browser/librewolf.nix new file mode 100644 index 0000000..9f34d77 --- /dev/null +++ b/home/modules/browser/librewolf.nix @@ -0,0 +1,83 @@ +{ config, inputs, lib, pkgs, ... }: + +let + bookmarks = import ./bookmarks.nix; +in + +{ + config = lib.mkIf (config.browser.primary == "librewolf" || config.browser.secondary == "librewolf") { + programs.librewolf = { + enable = true; + nativeMessagingHosts = with pkgs; [ + tridactyl-native + ]; + profiles = { + default = { + settings = { + "signon.rememberSignons" = false; + "findbar.highlightAll" = true; + "extensions.autoDisableScopes" = 0; + }; + extensions = { + packages = with inputs.firefox-addons.packages.${pkgs.system}; [ + duckduckgo-privacy-essentials + istilldontcareaboutcookies + libredirect + keepassxc-browser + react-devtools + sponsorblock + tridactyl + ublock-origin + ]; + }; + bookmarks = { + force = true; + settings = [ + { + toolbar = true; + bookmarks = [ + bookmarks.nixos + ]; + } + ]; + }; + }; + }; + policies = { + DefaultDownloadDirectory = "\${home}/dl"; + ExtensionSettings = { + "jid1-ZAdIEUB7XOzOJw@jetpack" = { + default_area = "navbar"; + private_browsing = true; + }; + "idcac-pub@guus.ninja" = { + default_area = "navbar"; + private_browsing = true; + }; + "7esoorv3@alefvanoon.anonaddy.me" = { + default_area = "navbar"; + }; + "keepassxc-browser@keepassxc.org" = { + default_area = "navbar"; + private_browsing = true; + }; + "@react-devtools" = { + default_area = "navbar"; + private_browsing = true; + }; + "sponsorBlocker@ajay.app" = { + default_area = "navbar"; + private_browsing = true; + }; + "tridactyl.vim@cmcaine.co.uk".settings = { + private_browsing = true; + }; + "uBlock0@raymondhill.net".settings = { + default_area = "navbar"; + private_browsing = true; + }; + }; + }; + }; + }; +} diff --git a/home/modules/firefox.nix b/home/modules/firefox.nix deleted file mode 100644 index 0665a8b..0000000 --- a/home/modules/firefox.nix +++ /dev/null @@ -1,91 +0,0 @@ -{ inputs, pkgs, ... }: - -{ - enable = true; - nativeMessagingHosts = with pkgs; [ - tridactyl-native - ]; - profiles = { - default = { - settings = { - "signon.rememberSignons" = false; - "findbar.highlightAll" = true; - "extensions.autoDisableScopes" = 0; # Enable extensions by default - }; - extensions = { - packages = with inputs.firefox-addons.packages.${pkgs.system}; [ - duckduckgo-privacy-essentials - istilldontcareaboutcookies - libredirect - keepassxc-browser - react-devtools - sponsorblock - tridactyl - ublock-origin - ]; - }; - bookmarks = { - force = true; - settings = [ - { - toolbar = true; - bookmarks = [ - { - name = "NixOS"; - bookmarks = [ - { - name = "wiki"; - url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; - } - { - name = "packages"; - url = "https://search.nixos.org/packages"; - } - { - name = "options"; - url = "https://search.nixos.org/options"; - } - ]; - } - ]; - } - ]; - }; - }; - }; - policies = { - DefaultDownloadDirectory = "\${home}/dl"; - ExtensionSettings = { - "jid1-ZAdIEUB7XOzOJw@jetpack" = { - default_area = "navbar"; - private_browsing = true; - }; - "idcac-pub@guus.ninja" = { - default_area = "navbar"; - private_browsing = true; - }; - "7esoorv3@alefvanoon.anonaddy.me" = { - default_area = "navbar"; - }; - "keepassxc-browser@keepassxc.org" = { - default_area = "navbar"; - private_browsing = true; - }; - "@react-devtools" = { - default_area = "navbar"; - private_browsing = true; - }; - "sponsorBlocker@ajay.app" = { - default_area = "navbar"; - private_browsing = true; - }; - "tridactyl.vim@cmcaine.co.uk".settings = { - private_browsing = true; - }; - "uBlock0@raymondhill.net".settings = { - default_area = "navbar"; - private_browsing = true; - }; - }; - }; -}