OpenTofu Extensions

One module extension lives in //opentofu:extensions.bzl:

opentofu_toolchains

No user-facing configuration. Mirrors //terraform:extensions.bzl%terraform_toolchains but resolves against //opentofu:toolchain_type. Materializes @tofu_toolchains covering every supported OpenTofu version, each toolchain guarded by a target_settings on //opentofu/settings:version_<v>. rules_terraform's own MODULE.bazel registers the hub so downstream users get toolchain resolution for free.

# In your MODULE.bazel — nothing to do beyond `bazel_dep`:
bazel_dep(name = "rules_terraform", version = "...")

Providers and modules

Provider and external-module fetching is engine-neutral — use //terraform:extensions.bzl%terraform for both engines. If you're targeting OpenTofu, pass registry = "registry.opentofu.org" to terraform.providers (or leave it defaulted to registry.terraform.io, which OpenTofu also serves).