diff --git a/ChangeLog.md b/ChangeLog.md
index 2be29797484f2396b222d814eece9023f1b0c5f7..3e7429c30350d19466112c894843f89f3e47195c 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -3,6 +3,7 @@
 ## v0.2.1
 
 * Update cabal information.
+* Drop down from GHC2021 -> Haskell2010 for hackage.
 
 ## v0.2
 
diff --git a/horizon-spec.cabal b/horizon-spec.cabal
index 682010cfdb3fddf9e55a231693135086caabdbaa..fc12a3158bb9ab59970aae793dd9fc84d7dda2d1 100644
--- a/horizon-spec.cabal
+++ b/horizon-spec.cabal
@@ -2,7 +2,9 @@ cabal-version:      3.0
 name:               horizon-spec
 version:            0.2.1
 synopsis:           Horizon Stable Package Set Type Definitions
-description:        This package contains the type definitions for the Horizon stable package set (https://horizon-haskell.net). This is a schema used to define package sets sourcing from hackage and git.
+description:
+  This package contains the type definitions for the Horizon stable package set (https://horizon-haskell.net). This is a schema used to define package sets sourcing from hackage and git.
+
 category:           Package Management
 author:             Daniel Firth
 maintainer:         dan.firth@homotopic.tech
@@ -33,7 +35,11 @@ library
   hs-source-dirs:     src
   default-extensions:
     DataKinds
+    DeriveGeneric
     DerivingStrategies
+    GADTs
+    GeneralizedNewtypeDeriving
+    StandaloneKindSignatures
 
   ghc-options:
     -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude
@@ -48,16 +54,17 @@ library
     , path-dhall-instance
     , text
 
-  default-language:   GHC2021
+  default-language:   Haskell2010
 
 executable horizon-spec-tests
-  main-is:          Spec.hs
-  hs-source-dirs:   test
+  main-is:            Spec.hs
+  hs-source-dirs:     test
   ghc-options:
     -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude
     -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module
     -Wno-safe -Wno-unsafe
 
+  default-extensions: TypeApplications
   build-depends:
     , base           >=4.7 && <5
     , bytestring
@@ -68,4 +75,4 @@ executable horizon-spec-tests
     , tasty-golden
     , text
 
-  default-language: GHC2021
+  default-language:   Haskell2010
diff --git a/test/Spec.hs b/test/Spec.hs
index d75d99cbfa9132e03ac362d421e5df5dc68a58bb..7312c03a531ab7bc61587d0edb1ad2108c29bc79 100644
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -23,24 +23,24 @@ tests = testGroup "Tests"
 
 samplePackageSet :: TestTree
 samplePackageSet = goldenVsString "sample package set" "./test/data/sample-package-set/output.golden" $ do
-                    (x :: PackageSet) <- input auto "./test/data/sample-package-set/input.dhall"
+                    x <- input @PackageSet auto "./test/data/sample-package-set/input.dhall"
                     let doc = prettyExpr $ embed inject x
                     pure $ fromStrict $ encodeUtf8 $ renderStrict (layout doc)
 
 modifiedPackageSet :: TestTree
 modifiedPackageSet = goldenVsString "modified package set" "./test/data/modified-package-set/output.golden" $ do
-                    (x :: PackageSet) <- input auto "./test/data/modified-package-set/input.dhall"
+                    x <- input @PackageSet auto "./test/data/modified-package-set/input.dhall"
                     let doc = prettyExpr $ embed inject x
                     pure $ fromStrict $ encodeUtf8 $ renderStrict (layout doc)
 
 sampleOverlay :: TestTree
 sampleOverlay = goldenVsString "sample overlay" "./test/data/sample-overlay/output.golden" $ do
-                    (x :: Overlay) <- input auto "./test/data/sample-overlay/input.dhall"
+                    x <- input @Overlay auto "./test/data/sample-overlay/input.dhall"
                     let doc = prettyExpr $ embed inject x
                     pure $ fromStrict $ encodeUtf8 $ renderStrict (layout doc)
 
 modifiedOverlay :: TestTree
 modifiedOverlay = goldenVsString "modified overlay" "./test/data/modified-overlay/output.golden" $ do
-                    (x :: Overlay) <- input auto "./test/data/modified-overlay/input.dhall"
+                    x <- input @Overlay auto "./test/data/modified-overlay/input.dhall"
                     let doc = prettyExpr $ embed inject x
                     pure $ fromStrict $ encodeUtf8 $ renderStrict (layout doc)