diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+#### 0.16.1.4
+
+* Allow Cabal 1.22.*.
+
 #### 0.16.1.3
 
 * Allow semigroups 0.16.*
diff --git a/rest-gen.cabal b/rest-gen.cabal
--- a/rest-gen.cabal
+++ b/rest-gen.cabal
@@ -1,5 +1,5 @@
 name:                rest-gen
-version:             0.16.1.3
+version:             0.16.1.4
 description:         Documentation and client generation from rest definition.
 synopsis:            Documentation and client generation from rest definition.
 maintainer:          code@silk.co
@@ -48,7 +48,7 @@
     Rest.Gen.Utils
   build-depends:
       base >= 4.5 && < 4.8
-    , Cabal >= 1.16 && < 1.22
+    , Cabal >= 1.16 && < 1.23
     , HStringTemplate >= 0.6 && < 0.8
     , aeson >= 0.7 && < 0.9
     , blaze-html >= 0.5 && < 0.8
diff --git a/src/Rest/Gen/Haskell.hs b/src/Rest/Gen/Haskell.hs
--- a/src/Rest/Gen/Haskell.hs
+++ b/src/Rest/Gen/Haskell.hs
@@ -94,7 +94,7 @@
 
 mkCondLibrary :: [Cabal.ModuleName] -> Cabal.CondTree Cabal.ConfVar [Cabal.Dependency] Cabal.Library
 mkCondLibrary modules = Cabal.CondNode
-  { Cabal.condTreeData        = Cabal.Library modules True Cabal.emptyBuildInfo { Cabal.hsSourceDirs = ["src"] }
+  { Cabal.condTreeData        = cabalLibrary modules
   , Cabal.condTreeConstraints =
      [ Cabal.Dependency (Cabal.PackageName "base")        (Cabal.withinVersion $ Cabal.Version [4]     [])
      , Cabal.Dependency (Cabal.PackageName "rest-types")  (Cabal.withinVersion $ Cabal.Version [1, 10] [])
@@ -102,6 +102,13 @@
      ]
   , Cabal.condTreeComponents  = []
   }
+
+cabalLibrary :: [Cabal.ModuleName] -> Cabal.Library
+#if MIN_VERSION_Cabal(1,22,0)
+cabalLibrary mods = Cabal.Library mods [] [] [] True Cabal.emptyBuildInfo { Cabal.hsSourceDirs = ["src"] }
+#else
+cabalLibrary mods = Cabal.Library mods True Cabal.emptyBuildInfo { Cabal.hsSourceDirs = ["src"] }
+#endif
 
 writeRes :: HaskellContext -> ApiResource -> IO ()
 writeRes ctx node =
