diff --git a/build/toolchain/BUILD b/build/toolchain/BUILD
new file mode 100644
index 0000000..5bf53d2
--- /dev/null
+++ b/build/toolchain/BUILD
@@ -0,0 +1,51 @@
+load(":cc_toolchain_config.bzl", "host_cc_toolchain_config")
+
+# Toolchain definitions.
+#
+# We currently define a single custom toolchain: the host_cc toolchain suite.
+# This is a C++ toolchain that uses GCC from the host at hardcoded paths. We
+# can get away with this, as currently the entire build is performed in a known
+# container (see: //scripts:create_container.sh). We define this toolchain so
+# that we have full control over all configuration of it, which we need as we
+# are building some fairly odd C binaries (notably, a qboot bootloader for
+# testing).
+#
+# The host_cc toolchain suite is enabled for all cc_* targets that aren't
+# building host tools by setting --crosstool_top in .bazelrc. In the future,
+# this should only be triggered by transitions where necessary.
+#
+# In the future, the host_cc toolchains should be replaced by a hermetic
+# toolchain that's built locally, or downloaded from the Internet - as
+# github.com/bazelbuild/bazel-toolchains does it. As that's being built, we
+# should then also have another toolchain definition for C binaries that
+# target Smalltown static binaries, so that mkfs.xfs can be built using native
+# cc_* rules, too.
+#
+# This, and :cc_toolchain_config.bzl is based on the following tutorial:
+# https://docs.bazel.build/versions/master/tutorial/cc-toolchain-config.html
+
+package(default_visibility = ["//visibility:public"])
+
+filegroup(name = "empty")
+
+cc_toolchain_suite(
+    name = "host_cc_suite",
+    toolchains = {
+        "k8": ":host_cc_k8_toolchain",
+    },
+)
+
+cc_toolchain(
+    name = "host_cc_k8_toolchain",
+    toolchain_identifier = "host-k8-toolchain",
+    toolchain_config = ":host_cc_k8_toolchain_config",
+    all_files = ":empty",
+    compiler_files = ":empty",
+    dwp_files = ":empty",
+    linker_files = ":empty",
+    objcopy_files = ":empty",
+    strip_files = ":empty",
+    supports_param_files = 0,
+)
+
+host_cc_toolchain_config(name = "host_cc_k8_toolchain_config")
diff --git a/build/toolchain/cc_toolchain_config.bzl b/build/toolchain/cc_toolchain_config.bzl
new file mode 100644
index 0000000..b69e06f
--- /dev/null
+++ b/build/toolchain/cc_toolchain_config.bzl
@@ -0,0 +1,79 @@
+#  Copyright 2020 The Monogon Project Authors.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "tool_path")
+
+# This defines a minimal, non-parametrized toolchain configuration rule that
+# uses the host GCC. For background on why we do this, see
+# //build/toolchain/BUILD.
+
+def _host_cc_toolchain_impl(ctx):
+    tool_paths = [
+        tool_path(
+            name = "gcc",
+            path = "/usr/bin/gcc",
+        ),
+        tool_path(
+            name = "ld",
+            path = "/usr/bin/ld",
+        ),
+        tool_path(
+            name = "ar",
+            path = "/usr/bin/ar",
+        ),
+        tool_path(
+            name = "cpp",
+            path = "/bin/false",
+        ),
+        tool_path(
+            name = "gcov",
+            path = "/bin/false",
+        ),
+        tool_path(
+            name = "nm",
+            path = "/bin/false",
+        ),
+        tool_path(
+            name = "objdump",
+            path = "/bin/false",
+        ),
+        tool_path(
+            name = "strip",
+            path = "/bin/false",
+        ),
+    ]
+    return cc_common.create_cc_toolchain_config_info(
+        ctx = ctx,
+        cxx_builtin_include_directories = [
+          "/usr/lib/gcc/x86_64-redhat-linux/10/include/",
+          "/usr/include",
+        ],
+        toolchain_identifier = "k8-toolchain",
+        host_system_name = "local",
+        target_system_name = "local",
+        target_cpu = "k8",
+        target_libc = "unknown",
+        compiler = "gcc",
+        abi_version = "unknown",
+        abi_libc_version = "unknown",
+        tool_paths = tool_paths,
+    )
+
+host_cc_toolchain_config = rule(
+    implementation = _host_cc_toolchain_impl,
+    attrs = {},
+    provides = [CcToolchainConfigInfo],
+)
