diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile
index 3c87c98ab4c0f2b9a803a9b908345d9e7792d2ed..cfa8c310f00f07b9191ec66bf8aabeda47f3fd9e 100644
--- a/require-ess/tools/driver.makefile
+++ b/require-ess/tools/driver.makefile
@@ -538,7 +538,11 @@ ifneq ($(MODULELIB),)
 LIBOBJS += $(addsuffix $(OBJ),$(basename ${VERSIONFILE}))
 endif # MODULELIB
 
-MODULE_RULES = ${CFGS:%=../%}
+MODULE_CONFIGS =  $(foreach cfg,${CFGS},$(if $(filter CONFIG%,$(notdir $(cfg))),$(if $(filter /%,$(cfg)),$(cfg),../$(cfg))))
+MODULE_CONFIGS += $(foreach m,$(REQ),$(wildcard $(E3_SITEMODS_PATH)/$m/$($(m)_VERSION)/cfg/CONFIG*))
+MODULE_CONFIGS += $(foreach m,$(REQ),$(wildcard $(EPICS_MODULES)/$m/$($(m)_VERSION)/cfg/CONFIG*))
+
+MODULE_RULES =  $(foreach cfg,${CFGS},$(if $(filter RULES%,$(notdir $(cfg))),$(if $(filter /%,$(cfg)),$(cfg),../$(cfg))))
 MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(E3_SITEMODS_PATH)/$m/$($(m)_VERSION)/cfg/RULES*))
 MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(EPICS_MODULES)/$m/$($(m)_VERSION)/cfg/RULES*))
 
@@ -565,6 +569,7 @@ debug::
 	@echo "TEMPLS = ${TEMPLS}"
 	@echo "LIBVERSION = ${LIBVERSION}"
 	@echo "MODULE_LOCATION = ${MODULE_LOCATION}"
+	@echo "MODULE_CONFIGS = ${MODULE_CONFIGS}"
 	@echo "MODULE_RULES = ${MODULE_RULES}"
 
 build: MODULEINFOS
@@ -582,6 +587,9 @@ INSTALL_LOADABLE_SHRLIBS=
 # We ony want to include ${BASERULES} from EPICS base if we are /not/ in debug
 # mode. Including this causes all of the source files to be compiled!
 ifeq (,$(findstring debug,${MAKECMDGOALS}))
+  ifneq ($(strip $(MODULE_CONFIGS)),)
+    include $(MODULE_CONFIGS)
+  endif
   include ${BASERULES}
   ifneq ($(strip $(MODULE_RULES)),)
     include $(MODULE_RULES)
diff --git a/tests/test_build.py b/tests/test_build.py
index 4571f96ee95be82cd1ef2673e97ce4b548c859a8..6c24f3cbc97ecf891c8682668e2e269c81d067ae 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -751,3 +751,15 @@ def test_install_license(wrapper: Wrapper):
 
     file_path = wrapper.package_dir / "doc/foo/LICENSE"
     assert file_path.exists()
+
+
+def test_load_custom_config_files(wrapper: Wrapper):
+    custom_config_file = wrapper.config_dir / "CONFIG_FOO"
+    custom_config_file.write_text("$(error foobarbaz)")
+
+    wrapper.add_file(custom_config_file)
+    wrapper.add_var_to_module_makefile("CONFIGS", str(custom_config_file))
+
+    rc, _, errs = wrapper.run_make("build")
+    assert rc == 2
+    assert "foobarbaz" in errs