{ inputs, pkgs, ... }: let openclawPatched = inputs.openclaw.packages.${pkgs.system}.openclaw-gateway.overrideAttrs (old: { installPhase = old.installPhase + "\n" + '' # Point Brave web-search endpoint to local shim. # NOTE: upstream installPhase script does not run postInstall hooks, # so patch directly at the end of installPhase. if [ -d "$out/lib/openclaw/dist" ]; then # Web-search tool hardcodes Brave endpoint in bundled JS. # No runtime config option exists for Brave base URL in this OpenClaw version. grep -RIl "https://api.search.brave.com" "$out/lib/openclaw/dist" | while read -r f; do substituteInPlace "$f" \ --replace "https://api.search.brave.com/res/v1/web/search" "http://127.0.0.1:8000/res/v1/web/search" \ --replace "https://api.search.brave.com/res/v1/" "http://127.0.0.1:8000/res/v1/" \ --replace "https://api.search.brave.com/" "http://127.0.0.1:8000/" \ --replace "https://api.search.brave.com" "http://127.0.0.1:8000" done fi ''; }); in { home-manager.sharedModules = [ inputs.openclaw.homeManagerModules.openclaw ]; users.users.ocbwoy3 = { packages = [ openclawPatched (pkgs.callPackage ./gogcli.nix { }) (pkgs.callPackage ./brave-shim.nix { }) pkgs.uv pkgs.python3 ]; }; }