diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,13 @@
 
 `hslua-module-zips` uses [PVP Versioning][].
 
+## hslua-module-zip-1.2.1
+
+Released 2026-01-13.
+
+-   Export the Lua module's `description` as `Text`. This makes it
+    easier to define a custom module.
+
 ## hslua-module-zip-1.2.0
 
 Released 2026-01-08
diff --git a/hslua-module-zip.cabal b/hslua-module-zip.cabal
--- a/hslua-module-zip.cabal
+++ b/hslua-module-zip.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                hslua-module-zip
-version:             1.2.0
+version:             1.2.1
 synopsis:            Lua module to work with file zips.
 description:         Module with function for creating, modifying, and
                      extracting files from zip archives.
diff --git a/src/HsLua/Module/Zip.hs b/src/HsLua/Module/Zip.hs
--- a/src/HsLua/Module/Zip.hs
+++ b/src/HsLua/Module/Zip.hs
@@ -14,6 +14,7 @@
 module HsLua.Module.Zip (
   -- * Module
     documentedModule
+  , description
 
   -- * Zip archives
   , typeArchive
@@ -71,25 +72,7 @@
 -- | The @zip@ module specification.
 documentedModule :: forall e. LuaError e => Module e
 documentedModule = defmodule "zip"
-  `withDescription` T.unlines
-    [ "Functions to create, modify, and extract files from zip archives."
-    , ""
-    , "The module can be called as a function, in which case it behaves"
-    , "like the `zip` function described below."
-    , ""
-    , "Zip options are optional; when defined, they must be a table with"
-    , "any of the following keys:"
-    , ""
-    , "  - `recursive`: recurse directories when set to `true`;"
-    , "  - `verbose`: print info messages to stdout;"
-    , "  - `destination`: the value specifies the directory in which to"
-    , "    extract;"
-    , "  - `location`: value is used as path name, defining where files"
-    , "    are placed."
-    , "  - `preserve_symlinks`: Boolean value, controlling whether"
-    , "    symbolic links are preserved as such. This option is ignored"
-    , "    on Windows."
-    ]
+  `withDescription` description
   `withFunctions` functions
   `withOperations`
     [ operation Call $ lambda
@@ -105,10 +88,31 @@
   `associateType` typeArchive
   `associateType` typeEntry
 
+-- | Textual description of this module; to be used for live documentation.
+description :: T.Text
+description = T.unlines
+  [ "Functions to create, modify, and extract files from zip archives."
+  , ""
+  , "The module can be called as a function, in which case it behaves"
+  , "like the `zip` function described below."
+  , ""
+  , "Zip options are optional; when defined, they must be a table with"
+  , "any of the following keys:"
+  , ""
+  , "  - `recursive`: recurse directories when set to `true`;"
+  , "  - `verbose`: print info messages to stdout;"
+  , "  - `destination`: the value specifies the directory in which to"
+  , "    extract;"
+  , "  - `location`: value is used as path name, defining where files"
+  , "    are placed."
+  , "  - `preserve_symlinks`: Boolean value, controlling whether"
+  , "    symbolic links are preserved as such. This option is ignored"
+  , "    on Windows."
+  ]
+
 -- | First published version of this library.
 initialVersion :: Version
 initialVersion = makeVersion [1,0,0]
-
 
 --
 -- Functions
