diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,16 @@
+## 2.1.2
+
+* Bump bounds:
+  ```
+    aeson >=2.0.0 && <2.2 (latest: 2.2.0.0)
+    bytestring >=0.10.12 && <0.12 (latest: 0.12.0.0)
+    mtl >=2.2.2 && <2.3 (latest: 2.3.1)
+    optparse-applicative >=0.16.1 && <0.18 (latest: 0.18.1.0)
+    transformers >=0.5.6 && <0.6 (latest: 0.6.1.1)
+    unix >=2.7.2 && <2.8 (latest: 2.8.1.1)
+    warp-tls >=3.0.3 && <3.4.0 (latest: 3.4.0)
+  ```
+
 ## 2.1.1
 
 + Bump unix-compat bound to accept 0.7
diff --git a/keter.cabal b/keter.cabal
--- a/keter.cabal
+++ b/keter.cabal
@@ -1,6 +1,6 @@
-cabal-version:      >=1.10
+cabal-version:      3.0
 name:               keter
-version:            2.1.1
+version:            2.1.2
 synopsis:
   Web application deployment manager, focusing on Haskell web frameworks
 
@@ -35,54 +35,54 @@
 library
   default-language: Haskell98
   build-depends:
-      aeson                 >=2.0.0    && <2.2
-    , array                 >=0.5.4    && <0.6
-    , async                 >=2.2.4    && <2.3
-    , attoparsec            >=0.14.4   && <0.15
-    , base                  >=4        && <5
-    , blaze-builder         >=0.3      && <0.5
-    , bytestring            >=0.10.12  && <0.12
-    , case-insensitive      >=1.2.1    && <1.3
-    , conduit               >=1.3.4    && <1.4
-    , conduit-extra         >=1.3.5    && <1.4
-    , containers            >=0.6.4    && <0.7
-    , directory             >=1.3.6    && <1.4
-    , fast-logger           >=3.0.0    && <4.0.0
-    , filepath              >=1.4.2    && <1.5
-    , fsnotify              >=0.3.0    && <0.5
-    , http-client           >=0.7.11   && <0.8
-    , http-conduit          >=2.3.8    && <2.4
-    , http-reverse-proxy    >=0.6.0.1  && <0.7
-    , http-types            >=0.12.3   && <0.13
-    , indexed-traversable   >=0.1.2    && <0.2
-    , lifted-base           >=0.2.3    && <0.3
-    , monad-logger          >=0.3.0    && <0.4.0
-    , mtl                   >=2.2.2    && <2.3
-    , network               >=3.1.2    && <3.2
-    , optparse-applicative  >=0.16.1   && <0.18
-    , process               >=1.4.3    && <1.7
-    , random                >=1.2.1    && <1.3
-    , regex-tdfa            >=1.3.1    && <1.4
-    , stm                   >=2.5.0    && <2.6
-    , tar                   >=0.5.1    && <0.6
-    , template-haskell      >=2.17.0   && <3.0
-    , text                  >=1.2.5    && <3.0
-    , time                  >=1.9.3    && <2.0
-    , tls                   >=1.5.7    && <2.0
-    , tls-session-manager   >=0.0.4    && <0.1
-    , transformers          >=0.5.6    && <0.6
-    , unix                  >=2.7.2    && <2.8
-    , unix-compat           >=0.3      && <0.8
-    , unliftio-core         >=0.2.0.0  && <0.3.0.0
-    , unordered-containers  >=0.2.17   && <0.3
-    , vector                >=0.12.3.0 && <1.0.0.0
-    , wai                   >=3.2.3    && <3.3
-    , wai-app-static        >=3.1      && <3.2
-    , wai-extra             >=3.0.3    && <3.2
-    , warp                  >=3.3.20   && <3.4
-    , warp-tls              >=3.0.3    && <3.4.0
-    , yaml                  >=0.8.4    && <0.12
-    , zlib                  >=0.6.2    && <0.7
+      aeson >=2.0.0 && <2.2 || ^>=2.2.0.0,
+      array >=0.5.4 && <0.6,
+      async >=2.2.4 && <2.3,
+      attoparsec >=0.14.4 && <0.15,
+      base >=4 && <5,
+      blaze-builder >=0.3 && <0.5,
+      bytestring >=0.10.12 && <0.12 || ^>=0.12.0.0,
+      case-insensitive >=1.2.1 && <1.3,
+      conduit >=1.3.4 && <1.4,
+      conduit-extra >=1.3.5 && <1.4,
+      containers >=0.6.4 && <0.7,
+      directory >=1.3.6 && <1.4,
+      fast-logger >=3.0.0 && <4.0.0,
+      filepath >=1.4.2 && <1.5,
+      fsnotify >=0.3.0 && <0.5,
+      http-client >=0.7.11 && <0.8,
+      http-conduit >=2.3.8 && <2.4,
+      http-reverse-proxy >=0.6.0.1 && <0.7,
+      http-types >=0.12.3 && <0.13,
+      indexed-traversable >=0.1.2 && <0.2,
+      lifted-base >=0.2.3 && <0.3,
+      monad-logger >=0.3.0 && <0.4.0,
+      mtl >=2.2.2 && <2.3 || ^>=2.3.1,
+      network >=3.1.2 && <3.2,
+      optparse-applicative >=0.16.1 && <0.18 || ^>=0.18.1.0,
+      process >=1.4.3 && <1.7,
+      random >=1.2.1 && <1.3,
+      regex-tdfa >=1.3.1 && <1.4,
+      stm >=2.5.0 && <2.6,
+      tar >=0.5.1 && <0.6,
+      template-haskell >=2.17.0 && <3.0,
+      text >=1.2.5 && <3.0,
+      time >=1.9.3 && <2.0,
+      tls >=1.5.7 && <2.0,
+      tls-session-manager >=0.0.4 && <0.1,
+      transformers >=0.5.6 && <0.7,
+      unix >=2.7.2 && <2.9, 
+      unix-compat >=0.3 && <0.8,
+      unliftio-core >=0.2.0.0 && <0.3.0.0,
+      unordered-containers >=0.2.17 && <0.3,
+      vector >=0.12.3.0 && <1.0.0.0,
+      wai >=3.2.3 && <3.3,
+      wai-app-static >=3.1 && <3.2,
+      wai-extra >=3.0.3 && <3.2,
+      warp >=3.3.20 && <3.4,
+      warp-tls >=3.0.3 && <3.4.0 || ^>=3.4.0,
+      yaml >=0.8.4 && <0.12,
+      zlib >=0.6.2 && <0.7
 
   if impl(ghc <7.6)
     build-depends: ghc-prim
@@ -123,12 +123,13 @@
   main-is:          keter.hs
   hs-source-dirs:   src/main
   build-depends:
-      base
-    , filepath
-    , keter
+      base,
+      filepath,
+      keter
 
   ghc-options:      -threaded -Wall
-  other-modules:    Paths_keter
+  other-modules:   Paths_keter
+  autogen-modules: Paths_keter
 
 test-suite test
   default-language: Haskell98
@@ -136,25 +137,25 @@
   main-is:          Spec.hs
   type:             exitcode-stdio-1.0
   build-depends:
-      base
-    , bytestring
-    , conduit
-    , http-client
-    , http-conduit
-    , http-types
-    , HUnit
-    , keter
-    , lens
-    , monad-logger
-    , mtl
-    , stm
-    , tasty
-    , tasty-hunit
-    , transformers
-    , unix
-    , wai
-    , warp
-    , wreq
+      base,
+      bytestring,
+      conduit,
+      http-client,
+      http-conduit,
+      http-types,
+      HUnit,
+      keter,
+      lens,
+      monad-logger,
+      mtl,
+      stm,
+      tasty,
+      tasty-hunit,
+      transformers,
+      unix,
+      wai,
+      warp,
+      wreq
 
   ghc-options:      -Wall -threaded
 
