anchor.diff:      rm -f configure
       rm -f js/src/configure
       rm -f .mozconfig*
  -
  - '' + lib.optionalString (stdenv.lib.versionAtLeast version "58.0.0") ''
  -    cat >.mozconfig <<END_MOZCONFIG
  -    ${lib.concatStringsSep "\n" (map (flag: "ac_add_options ${flag}") configureFlags)}
  -    ${lib.optionalString googleAPISupport "ac_add_options --with-google-api-keyfile=$TMPDIR/ga"}
  -    END_MOZCONFIG
  +  '' + (if lib.versionAtLeast version "58"
  +  # this will run autoconf213
  +  then ''
  +    configureScript="$(realpath ./mach) configure"
  +  '' else ''
  +    make -f client.mk configure-files
  +    configureScript="$(realpath ./configure)"
  +  '') + ''
  +    cxxLib=$( echo -n ${gcc}/include/c++/* )
  +    archLib=$cxxLib/$( ${gcc}/bin/gcc -dumpmachine )
  +
  +    test -f layout/style/ServoBindings.toml && sed -i -e '/"-DMOZ_STYLO"/ a , "-cxx-isystem", "'$cxxLib'", "-isystem", "'$archLib'"' layout/style/ServoBindings.toml
     '' + lib.optionalString googleAPISupport ''
       # Google API key used by Chromium and Firefox.
       # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
       # please get your own set of keys.
       echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga
       configureFlagsArray+=("--with-google-api-keyfile=$TMPDIR/ga")
  -  '' + ''
  -    # this will run autoconf213
  -    ${if (stdenv.lib.versionAtLeast version "58.0.0") then "./mach configure" else "make -f client.mk configure-files"}
  -
  -    configureScript="$(realpath ./configure)"
  -
  -    cxxLib=$( echo -n ${gcc}/include/c++/* )
  -    archLib=$cxxLib/$( ${gcc}/bin/gcc -dumpmachine )
  -
  -    test -f layout/style/ServoBindings.toml && sed -i -e '/"-DMOZ_STYLO"/ a , "-cxx-isystem", "'$cxxLib'", "-isystem", "'$archLib'"' layout/style/ServoBindings.toml
  -
  +  '' + lib.optionalString (lib.versionOlder version "58") ''
       cd obj-*
     '';
   
  
positive.code:     "--disable-gconf"
      "--enable-default-toolkit=cairo-gtk${if gtk3Support then "3" else "2"}"
    ]
    ++ lib.optionals (stdenv.lib.versionAtLeast version "56" && !stdenv.hostPlatform.isi686) [
      # on i686-linux: --with-libclang-path is not available in this configuration
      "--with-libclang-path=${llvmPackages.libclang}/lib"
      "--with-clang-path=${llvmPackages.clang}/bin/clang"
    ]
    ++ lib.optionals (stdenv.lib.versionAtLeast version "57") [
      "--enable-webrender=build"
    ]
  
  
negative.code:                            "--enable-strip" ])
    ++ lib.optional enableOfficialBranding "--enable-official-branding"
    ++ extraConfigureFlags;
  
    # Before 58 we have to run `make -f client.mk configure-files` at
    # the top level, and then run `./configure` in the obj-* dir (see
    # above), but in 58 we have to instead run `./mach configure` at the
    # top level and then run `make` in obj-*. (We can also run the
    # `make` at the top level in 58, but then we would have to `cd` to
    # `make install` anyway. This is ugly, but simple.)
    postConfigure = lib.optionalString (lib.versionAtLeast version "58") ''
      cd obj-*
    '';
  
    preBuild = lib.optionalString (enableOfficialBranding && isTorBrowserLike) ''
      buildFlagsArray=("MOZ_APP_DISPLAYNAME=Tor Browser")
  