diff --git a/scripts/bin/bazel b/scripts/bin/bazel
index 0773669..b63e060 100755
--- a/scripts/bin/bazel
+++ b/scripts/bin/bazel
@@ -1,4 +1,11 @@
 #!/bin/bash
 set -euo pipefail
 
-exec podman exec -it nexantic-dev bazel --output_user_root ${HOME}/.cache/bazel-nxt $@
+# Override the intellij_aspect repository to point to our own copy that create_container.sh has applied patches to.
+#
+# The IntelliJ plugin sets the repository using a command line argument, which we need to replace:
+#   --override_repository=intellij_aspect=<...>/plugins/ijwb/aspect
+#
+ARGS=$(echo $@ | sed "s%--override_repository=intellij_aspect=[^ ]*%--override_repository=intellij_aspect=${HOME}/.cache/bazel-nxt/ijwb_aspect%")
+
+exec podman exec -it nexantic-dev bazel --output_user_root ${HOME}/.cache/bazel-nxt $ARGS
diff --git a/scripts/create_container.sh b/scripts/create_container.sh
index a2a5d61..5f179cd 100755
--- a/scripts/create_container.sh
+++ b/scripts/create_container.sh
@@ -33,22 +33,22 @@
 # Mount bazel root to identical paths inside and outside the container.
 # This caches build state even if the container is destroyed, and
 BAZEL_ROOT=${HOME}/.cache/bazel-nxt
-
-# The Bazel plugin injects a Bazel repository into the sync command line.
-# Look up the latest copy of it in either the user config folder
-# or the Jetbrains Toolbox dir (for non-standard setups).
-ASPECT_PATH=$(
-  dirname $(
-    find ~/.IntelliJIdea*/config/plugins/ijwb/* ~/.local/share/JetBrains \
-    -name intellij_info_impl.bzl -printf "%T+\t%p\n" | sort | tail -n 1))
-
 mkdir -p ${BAZEL_ROOT}
 
+# The Bazel plugin injects a Bazel repository into the sync command line,
+# We need to copy the aspect repository and apply a custom patch.
+
+ASPECT_ORIG=${HOME}/.IntelliJIdea2019.2/config/plugins/ijwb/aspect
+
+ASPECT_PATH=${BAZEL_ROOT}/ijwb_aspect
+rm -rf "$ASPECT_PATH"
+cp -r "$ASPECT_ORIG" "$ASPECT_PATH"
+patch -d "$ASPECT_PATH" -p1 < scripts/patches/bazel_intellij_aspect_filter.patch
+
 podman run -it -d \
     -v $(pwd):$(pwd) \
     -w $(pwd) \
     --volume=${BAZEL_ROOT}:${BAZEL_ROOT} \
-    -v ${ASPECT_PATH}:${ASPECT_PATH}:ro \
     --device /dev/kvm \
     --privileged \
     --pod nexantic \
diff --git a/scripts/patches/bazel_intellij_aspect_filter.patch b/scripts/patches/bazel_intellij_aspect_filter.patch
new file mode 100644
index 0000000..a9056f1
--- /dev/null
+++ b/scripts/patches/bazel_intellij_aspect_filter.patch
@@ -0,0 +1,60 @@
+Copyright 2020 The Monogon Project Authors.
+
+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.
+
+
+# We need to patch the IntelliJ Bazel aspect that is injected via the @intellij_bazel repository
+# to support our custom Go code generators.
+#
+# The plugin maintains a whitelist of rules it deems worthy of syncing.
+#
+# Since we really, *really* do not want to touch the Java code and fork the plugin, we instead monkey-patch
+# the intellij_aspect macro to pretend that our custom generators are, in fact, go_proto_library rules
+# (which behave exactly the same - they output Go sources).
+#
+--- a/intellij_info_impl.bzl.o
++++ b/intellij_info_impl.bzl
+@@ -312,7 +312,7 @@
+         files = target[OutputGroupInfo].go_generated_srcs.to_list()
+     else:
+         return None
+-    return [f for f in files if f.basename.endswith(".pb.go")]
++    return [f for f in files if f.basename.endswith(".go")]
+
+ def collect_go_info(target, ctx, semantics, ide_info, ide_info_file, output_groups):
+     """Updates Go-specific output groups, returns false if not a recognized Go target."""
+@@ -897,10 +897,14 @@
+     file_name = file_name + ".intellij-info.txt"
+     ide_info_file = ctx.actions.declare_file(file_name)
+
++    kind = ctx.rule.kind
++    if kind in ["go_sqlboiler_library", "bindata"]:
++        kind = "go_proto_library"
++
+     target_key = make_target_key(target.label, aspect_ids)
+     ide_info = dict(
+         key = target_key,
+-        kind_string = ctx.rule.kind,
++        kind_string = kind,
+         deps = list(all_deps),
+         build_file_artifact_location = build_file_artifact_location(ctx),
+         tags = tags,
+@@ -937,7 +942,7 @@
+         output_groups = output_groups,
+         intellij_info = struct(
+             target_key = target_key,
+-            kind = ctx.rule.kind,
++            kind = kind,
+             output_groups = output_groups,
+             export_deps = export_deps,
+         ),
