# Brave Browser (Home Module) # # Provides: # - Brave browser package # - Optional standard and custom extension sets # # Options: # - enable → Enable Brave browser # - extensions.enable → Enable Brave extensions # - extensions.standard→ Enable default extension set of extensions # - extensions.extra → Extra extension IDs to install # # Notes: # - Default extensions include uBlock Origin, Proton Pass, Proton VPN # - Extra extensions must be specified by Chrome Web Store ID # { config, lib, pkgs, ... }: let cfg = config.nyx-module.home.brave; in { options.nyx-module.home.brave = { enable = lib.mkEnableOption "Enable Brave (home module)"; extensions = { enable = lib.mkEnableOption "Enable Brave extensions support"; standard = lib.mkEnableOption "Enable default set of extensions (uBlock, Proton Pass, Proton VPN)"; extra = lib.mkOption { type = lib.types.listOf lib.types.str; default = []; example = ["abcdefghijklmnop" "qrstuvwxyz123456"]; description = "List of additional Brave extension IDs to install."; }; }; }; config = lib.mkIf cfg.enable { programs.brave = { enable = true; package = pkgs.brave; extensions = lib.optionals cfg.extensions.enable ( (lib.optionals cfg.extensions.standard [ {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # uBlock Origin {id = "ghmbeldphafepmbegfdlkpapadhbakde";} # Proton Pass {id = "jplgfhpmjnbigmhklmmbgecoobifkmpa";} # Proton VPN ]) ++ (map (id: {inherit id;}) cfg.extensions.extra) ); commandLineArgs = [ "--disable-features=AutofillSavePaymentMethods" "--disable-features=PasswordManagerOnboarding" "--disable-features=AutofillEnableAccountWalletStorage" ]; }; }; }