{ config, lib, inputs, pkgs, ... }: let cfg = config.hive.firefox; in { options.hive.firefox = { enable = lib.mkEnableOption "Enable Firefox"; plasmaIntegration = lib.mkEnableOption "Enable Plasma Integration"; passFF = lib.mkEnableOption "Enable PassFF"; }; config = lib.mkIf cfg.enable { programs.firefox = { enable = true; # Default profile profiles.jonas = { name = "Jonas"; id = 0; isDefault = true; # Search search = { default = "ddg"; order = ["ddg" "google"]; force = true; engines = { "Nix Packages" = { urls = [ { template = "https://search.nixos.org/packages"; params = [ { name = "type"; value = "packages"; } { name = "query"; value = "{searchTerms}"; } ]; } ]; }; "Noogle" = { urls = [ { template = "https://noogle.dev/q"; params = [ { name = "term"; value = "{searchTerms}"; } ]; } ]; }; "cppreference" = { urls = [ { template = "https://en.cppreference.com/mwiki/index.php"; params = [ { name = "title"; value = "Special%3ASearch"; } { name = "search"; value = "{searchTerms}"; } { name = "Go"; value = "go"; } ]; } ]; }; }; }; # Extensions extensions.packages = with inputs.firefox-addons.packages."x86_64-linux"; ([ ublock-origin violentmonkey ] ++ lib.optional cfg.plasmaIntegration plasma-integration ++ lib.optional cfg.passFF passff); }; }; home.packages = lib.optional cfg.passFF pkgs.passff-host; }; }