diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,8 @@
+### 0.4.0.0
+
+- Get verbosity level for all program invocations from configuration and build
+  flags.
+
 ### 0.3.2.4
 
 - Improved docs.
diff --git a/NgxExport/Distribution.hs b/NgxExport/Distribution.hs
--- a/NgxExport/Distribution.hs
+++ b/NgxExport/Distribution.hs
@@ -200,9 +200,9 @@
 -- /deps.tar.gz/ respectively, and also define the /rpath/ directory without
 -- using option /--prefix/.
 --
--- > $ runhaskell Setup.hs configure --user
+-- > $ runhaskell Setup.hs configure --user --hslibdeps-options="-t/var/lib/nginx/deps -ddeps -adeps"
 --
--- > $ runhaskell Setup.hs build --ghc-options="ngx_distribution_test.hs -o ngx_distribution_test.so -threaded" --hslibdeps-options="-t/var/lib/nginx/deps -ddeps -adeps"
+-- > $ runhaskell Setup.hs build --ghc-options="ngx_distribution_test.hs -o ngx_distribution_test.so -threaded"
 
 -- $deps-cabal-v2
 --
@@ -214,17 +214,18 @@
 --
 -- > $ cabal v2-install --lib --only-dependencies --package-env .
 --
--- > $ cabal v2-install --lib ngx-export-distribution --package-env .
+-- > $ cabal v2-build ngx-export-distribution
 --
+-- The second command is probably no-op because /ngx-export-distribution/ should
+-- have been installed by the first command. At least in Cabal /3.10/, this is
+-- the case.
+--
 -- > $ sed -i 's/\(^package-id \)/--\1/' .ghc.environment.x86_64-linux-$(ghc --numeric-version)
 --
 -- This /sed/ command comments out all lines that start with word /package-id/
 -- in file /.ghc.environment.x86_64-linux-9.4.1/ which has been created by the
--- former commands. This prevents the target library from linking against
--- libraries belonging to packages listed in those lines, thus making the
--- overall number and the size of dependent libraries as small as possible. If
--- this command breaks the following steps, some of the commented lines can be
--- selectively uncommented.
+-- first command. We will put all needed packages into this file after the next
+-- step.
 --
 -- > $ ADD_CABAL_STORE=$(sed -n 's/^\(package-db\)\s\+/--\1=/p' .ghc.environment.x86_64-linux-$(ghc --numeric-version))
 -- > $ runhaskell --ghc-arg=-package=base --ghc-arg=-package=ngx-export-distribution Setup.hs configure --package-db=clear --package-db=global $ADD_CABAL_STORE --prefix=/var/lib/nginx
@@ -252,7 +253,8 @@
 -- > UNIT_ID="^UnitId\s\+\""
 -- > while IFS= read -r pkg
 -- > do sed -n "/$UNIT_ID$pkg/s/$UNIT_ID\(.*\)\"\$/package-id \1/p" <<< "$CABAL_PLAN"
--- > done < <(sed -n '/^CompNameLib$/,/^$/s/^\s\+//p' <<< "$CABAL_PLAN")
+-- > done < <(sed -n '/^CompNameLib$/,/^$/s/^\s\+//p' <<< "$CABAL_PLAN") |
+-- >     awk '!x[$0]++'
 -- > unset CABAL_PLAN UNIT_ID
 --
 -- After running this as
@@ -272,8 +274,8 @@
 -- > $ runhaskell --ghc-arg=-package=base --ghc-arg=-package=ngx-export-distribution Setup.hs build --ghc-options="ngx_distribution_test.hs -o ngx_distribution_test.so -threaded"
 --
 -- This should build library /ngx_distribution_test.so/ and link it against
--- Haskell libraries found in the global package database and the Cabal's global
--- package store.
+-- Haskell libraries found in the global package database and the Cabal package
+-- store.
 
 -- $drawbacks
 --
@@ -394,28 +396,29 @@
 --
 -- Other hooks from /simpleUserHooks/ get derived as is. Running them is
 -- neither tested nor recommended.
-ngxExportHooks :: Verbosity                         -- ^ Verbosity level
-               -> UserHooks
-ngxExportHooks verbosity =
-    let hooks = simpleUserHooks
-    in hooks { hookedPrograms = [hslibdeps]
-             , confHook = \desc flags -> do
-                 let pdb = configPrograms flags
-                 _ <- requireProgram verbosity hslibdeps pdb >>=
-                          requireProgram verbosity patchelf . snd
-                 confHook simpleUserHooks desc flags
-             , buildHook =  \desc lbi _ flags ->
-                 buildSharedLib verbosity desc lbi flags >>= \lib ->
-                     patchAndCollectDependentLibs verbosity lib desc lbi
-             }
+ngxExportHooks :: UserHooks
+ngxExportHooks =
+    simpleUserHooks { hookedPrograms = [hslibdeps]
+                    , confHook = \desc flags -> do
+                        let verbosity = toVerbosity $ configVerbosity flags
+                            pdb = configPrograms flags
+                        _ <- requireProgram verbosity hslibdeps pdb >>=
+                                 requireProgram verbosity patchelf . snd
+                        confHook simpleUserHooks desc flags
+                    , buildHook = \desc lbi _ flags -> do
+                        let verbosity = toVerbosity $ buildVerbosity flags
+                        buildSharedLib verbosity desc lbi flags >>= \lib ->
+                            patchAndCollectDependentLibs verbosity lib desc lbi
+                    }
+    where toVerbosity = fromFlagOrDefault normal
 
 -- | A simple implementation of /main/ for a Cabal setup script.
 --
 -- Implemented as
 --
 -- @
--- defaultMain = 'defaultMainWithHooks' $ 'ngxExportHooks' 'normal'
+-- defaultMain = 'defaultMainWithHooks' 'ngxExportHooks'
 -- @
 defaultMain :: IO ()
-defaultMain = defaultMainWithHooks $ ngxExportHooks normal
+defaultMain = defaultMainWithHooks ngxExportHooks
 
diff --git a/ngx-export-distribution.cabal b/ngx-export-distribution.cabal
--- a/ngx-export-distribution.cabal
+++ b/ngx-export-distribution.cabal
@@ -1,5 +1,5 @@
 name:                       ngx-export-distribution
-version:                    0.3.2.4
+version:                    0.4.0.0
 synopsis:                   Build custom libraries for Nginx haskell module
 description:                Build custom libraries for
         <https://github.com/lyokha/nginx-haskell-module Nginx haskell module>.
