diff --git a/nixos/doc/manual/development/option-types.section.md b/nixos/doc/manual/development/option-types.section.md
index 00f1d85bdb61..d32d4fc50ad7 100644
--- a/nixos/doc/manual/development/option-types.section.md
+++ b/nixos/doc/manual/development/option-types.section.md
@@ -308,6 +308,10 @@ The option set can be defined directly
([Example: Directly defined submodule](#ex-submodule-direct)) or as reference
([Example: Submodule defined as a reference](#ex-submodule-reference)).
+Note that even if your submodule’s options all have a default value,
+you will still need to provide a default value (e.g. an empty attribute set)
+if you want to allow users to leave it undefined.
+
::: {#ex-submodule-direct .example}
::: {.title}
**Example: Directly defined submodule**
diff --git a/nixos/doc/manual/from_md/development/option-types.section.xml b/nixos/doc/manual/from_md/development/option-types.section.xml
index 444729292702..c67e183581c2 100644
--- a/nixos/doc/manual/from_md/development/option-types.section.xml
+++ b/nixos/doc/manual/from_md/development/option-types.section.xml
@@ -617,6 +617,12 @@
(Example: Submodule defined
as a reference).
+
+ Note that even if your submodule’s options all have a default
+ value, you will still need to provide a default value (e.g. an
+ empty attribute set) if you want to allow users to leave it
+ undefined.
+ Example: Directly defined