diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,21 @@
+import Control.Monad (void)
+import Control.Concurrent (threadDelay, forkIO)
+import Data.Foldable (forM_)
+import Distribution.Simple
+       (simpleUserHooks, buildHook, defaultMainWithHooks)
+import System.IO (stdout, hFlush)
+
+-- We should split JSDOM.Types into smaller packages.
+-- For now let the user (or CI system) know that it
+-- is not unusual for there to be no output for a
+-- long time.
+main = defaultMainWithHooks simpleUserHooks {
+  buildHook = \a b c d -> do
+    void . forkIO $
+      forM_ [1..20] $ \n -> do
+        threadDelay 60000000
+        putStrLn $ "jsaddle-dom has been building for "
+          <> show n <> " min (some modules are very large)."
+        hFlush stdout
+    buildHook simpleUserHooks a b c d
+  }
diff --git a/jsaddle-dom.cabal b/jsaddle-dom.cabal
--- a/jsaddle-dom.cabal
+++ b/jsaddle-dom.cabal
@@ -1,7 +1,7 @@
+cabal-version: 2.4
 name: jsaddle-dom
-version: 0.9.3.1
-cabal-version: >=1.22
-build-type: Simple
+version: 0.9.3.2
+build-type: Custom
 license: MIT
 license-file: LICENSE
 maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
@@ -11,6 +11,11 @@
     It works with both GHCJS and GHC.
 category: Web
 author: Hamish Mackenzie
+
+custom-setup
+  setup-depends:
+    base  >=4.5 && <4.13,
+    Cabal >=2.4 && <2.5
 
 source-repository head
     type: git
