diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
-## [*Unreleased*](https://github.com/freckle/graphula/compare/v2.0.1.0...main)
+## [*Unreleased*](https://github.com/freckle/graphula/compare/v2.0.1.1...main)
 
 None
+
+## [v2.0.1.1](https://github.com/freckle/graphula/compare/v2.0.0.5...v2.0.1.1)
+
+- Support GHCs 9.0 and 9.2
 
 ## [v2.0.1.0](https://github.com/freckle/graphula/compare/v2.0.0.5...v2.0.1.0)
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -6,21 +6,21 @@
 
 <!--
 ```haskell
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DerivingStrategies #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE UndecidableInstances #-}
-{-# OPTIONS_GHC -fno-warn-missing-deriving-strategies #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 module Main (module Main) where
diff --git a/graphula.cabal b/graphula.cabal
--- a/graphula.cabal
+++ b/graphula.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               graphula
-version:            2.0.1.0
+version:            2.0.1.1
 license:            MIT
 license-file:       LICENSE
 maintainer:         Freckle Education
@@ -20,6 +20,10 @@
     type:     git
     location: https://github.com/freckle/graphula
 
+flag persistent-template
+    description: Include dependency on persistent-template
+    default:     False
+
 library
     exposed-modules:
         Graphula
@@ -37,30 +41,35 @@
     other-modules:    Paths_graphula
     default-language: Haskell2010
     ghc-options:
-        -Weverything -Wno-unsafe -Wno-safe -Wno-missing-import-lists
-        -Wno-implicit-prelude
+        -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude
+        -Wno-missing-import-lists -Wno-safe -Wno-unsafe
 
     build-depends:
-        HUnit >=1.6.1.0,
-        QuickCheck >=2.14.2,
-        base >=4.14.1.0 && <5,
-        containers >=0.6.2.1,
-        directory >=1.3.6.0,
-        generics-eot >=0.4.0.1,
+        HUnit >=1.6.0.0,
+        QuickCheck >=2.11.3,
+        base >=4.11.1.0 && <5,
+        containers >=0.5.11.0,
+        directory >=1.3.1.5,
+        generics-eot >=0.4,
         mtl >=2.2.2,
-        persistent >=2.11.0.4,
+        persistent >=2.8.2,
         random >=1.1,
-        semigroups >=0.19.1,
+        semigroups >=0.18.5,
         temporary >=1.3,
-        text >=1.2.4.1,
-        transformers >=0.5.6.2,
-        unliftio >=0.2.14,
-        unliftio-core >=0.2.0.1
+        text >=1.2.3.1,
+        unliftio >=0.2.9.0,
+        unliftio-core >=0.1.2.0
 
+    if impl(ghc >=9.2)
+        ghc-options: -Wno-missing-kind-signatures
+
     if impl(ghc >=8.10)
         ghc-options:
             -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module
 
+    if impl(ghc <8.6)
+        ghc-options: -Wno-redundant-constraints
+
 test-suite readme
     type:             exitcode-stdio-1.0
     main-is:          README.lhs
@@ -68,30 +77,36 @@
     other-modules:    Paths_graphula
     default-language: Haskell2010
     ghc-options:
-        -Weverything -Wno-unsafe -Wno-safe -Wno-missing-import-lists
-        -Wno-implicit-prelude -pgmL markdown-unlit
+        -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude
+        -Wno-missing-import-lists -Wno-safe -Wno-unsafe -pgmL
+        markdown-unlit
 
     build-depends:
-        QuickCheck >=2.14.2,
-        aeson >=1.5.6.0,
-        base >=4.14.1.0 && <5,
-        bytestring >=0.10.12.0,
-        containers >=0.6.2.1,
+        QuickCheck >=2.11.3,
+        base >=4.11.1.0 && <5,
         generic-arbitrary >=0.1.0,
         graphula -any,
-        hspec >=2.7.8,
-        http-api-data >=0.4.1.1,
-        markdown-unlit >=0.5.1,
-        monad-logger >=0.3.36,
-        path-pieces >=0.2.1,
-        persistent >=2.11.0.4,
-        persistent-sqlite >=2.11.1.0,
-        persistent-template >=2.9.1.0,
-        resourcet >=1.2.4.2,
-        text >=1.2.4.1,
-        transformers >=0.5.6.2,
-        unliftio-core >=0.2.0.1
+        hspec >=2.5.5,
+        markdown-unlit >=0.5.0,
+        monad-logger >=0.3.30,
+        persistent >=2.8.2,
+        persistent-sqlite >=2.8.2,
+        resourcet >=1.2.2,
+        transformers >=0.5.5.0,
+        unliftio-core >=0.1.2.0
 
+    if impl(ghc >=9.2)
+        ghc-options: -Wno-missing-kind-signatures
+
     if impl(ghc >=8.10)
         ghc-options:
             -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module
+
+    if impl(ghc <8.6)
+        ghc-options: -Wno-redundant-constraints
+
+    if impl(ghc >=8.8)
+        ghc-options: -Wno-missing-deriving-strategies
+
+    if flag(persistent-template)
+        build-depends: persistent-template >=2.5.4
diff --git a/src/Graphula.hs b/src/Graphula.hs
--- a/src/Graphula.hs
+++ b/src/Graphula.hs
@@ -9,7 +9,6 @@
 {-# LANGUAGE InstanceSigs #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
diff --git a/src/Graphula/Class.hs b/src/Graphula/Class.hs
--- a/src/Graphula/Class.hs
+++ b/src/Graphula/Class.hs
@@ -4,7 +4,6 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
diff --git a/src/Graphula/Dependencies.hs b/src/Graphula/Dependencies.hs
--- a/src/Graphula/Dependencies.hs
+++ b/src/Graphula/Dependencies.hs
@@ -9,7 +9,6 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
diff --git a/src/Graphula/Dependencies/Generic.hs b/src/Graphula/Dependencies/Generic.hs
--- a/src/Graphula/Dependencies/Generic.hs
+++ b/src/Graphula/Dependencies/Generic.hs
@@ -4,7 +4,6 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
diff --git a/src/Graphula/Idempotent.hs b/src/Graphula/Idempotent.hs
--- a/src/Graphula/Idempotent.hs
+++ b/src/Graphula/Idempotent.hs
@@ -8,8 +8,6 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE InstanceSigs #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
-{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
diff --git a/src/Graphula/Logged.hs b/src/Graphula/Logged.hs
--- a/src/Graphula/Logged.hs
+++ b/src/Graphula/Logged.hs
@@ -7,7 +7,6 @@
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
diff --git a/src/Graphula/Node.hs b/src/Graphula/Node.hs
--- a/src/Graphula/Node.hs
+++ b/src/Graphula/Node.hs
@@ -9,7 +9,6 @@
 {-# LANGUAGE InstanceSigs #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NoStarIsType #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE RecordWildCards #-}
diff --git a/test/README.lhs b/test/README.lhs
--- a/test/README.lhs
+++ b/test/README.lhs
@@ -6,21 +6,21 @@
 
 <!--
 ```haskell
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DerivingStrategies #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE UndecidableInstances #-}
-{-# OPTIONS_GHC -fno-warn-missing-deriving-strategies #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 module Main (module Main) where
