{ config, lib, pkgs, inputs, ... }: { options.homeconfig.firefox.enable = lib.options.mkOption { type = lib.types.bool; default = false; }; config = lib.mkIf config.homeconfig.firefox.enable { home.sessionVariables.BROWSER = "${config.programs.firefox.package}/bin/firefox"; home.packages = lib.mkIf config.homeconfig.wal.enable [ pkgs.pywalfox-native ]; home.file.".mozilla/native-messaging-hosts/pywalfox.json".text = let pywalfox-wrapper = pkgs.writeShellScriptBin "pywalfox-wrapper" '' ${pkgs.pywalfox-native}/bin/pywalfox start ''; in lib.replaceStrings [ "" ] [ "${pywalfox-wrapper}/bin/pywalfox-wrapper" ] (lib.readFile "${pkgs.pywalfox-native}/lib/python3.12/site-packages/pywalfox/assets/manifest.json"); programs.firefox = { enable = true; package = pkgs.firefox; profiles.nathan = { search = { default = "ddg"; privateDefault = "ddg"; force = true; }; bookmarks = { force = true; settings = [ { name = "toolbar"; toolbar = true; bookmarks = [ { name = "NixOS Search - Packages"; url = "https://search.nixos.org/packages"; } ]; } ]; }; extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [ ublock-origin keepassxc-browser pywalfox ]; }; }; }; }