diff --git a/nixos/doc/manual/configuration/summary.xml b/nixos/doc/manual/configuration/summary.xml
index 6ff0390c0ed..be1f2263149 100644
--- a/nixos/doc/manual/configuration/summary.xml
+++ b/nixos/doc/manual/configuration/summary.xml
@@ -113,7 +113,8 @@ manual for the rest.
assert 1 + 1 == 2; "yes!"
- Assertion check (evaluates to "yes!")
+ Assertion check (evaluates to "yes!"). See for using assertions in moduleslet x = "foo"; y = "bar"; in x + y
diff --git a/nixos/doc/manual/development/assertions.xml b/nixos/doc/manual/development/assertions.xml
new file mode 100644
index 00000000000..d3434e1f112
--- /dev/null
+++ b/nixos/doc/manual/development/assertions.xml
@@ -0,0 +1,80 @@
+
+
+Warnings and Assertions
+
+
+ When configuration problems are detectable in a module, it is a good
+ idea to write an assertion or warning. Doing so provides clear
+ feedback to the user and prevents errors after the build.
+
+
+
+ Although Nix has the abort and
+ builtins.trace functions to perform such tasks,
+ they are not ideally suited for NixOS modules. Instead of these
+ functions, you can declare your warnings and assertions using the
+ NixOS module system.
+
+
+
+
+Warnings
+
+
+ This is an example of using warnings.
+
+
+
+
+
+
+
+
+
+
+Assertions
+
+
+
+ This example, extracted from the
+
+ syslogd module
+ shows how to use assertions. Since there
+ can only be one active syslog daemon at a time, an assertion is useful to
+ prevent such a broken system from being built.
+
+
+
+
+
+
+
+
+
diff --git a/nixos/doc/manual/development/writing-modules.xml b/nixos/doc/manual/development/writing-modules.xml
index 5bdcad5ceb5..cb363b45675 100644
--- a/nixos/doc/manual/development/writing-modules.xml
+++ b/nixos/doc/manual/development/writing-modules.xml
@@ -178,6 +178,7 @@ in {
+