diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Revision history for spacecookie
 
+## 1.0.0.1
+
+2021-11-29
+
+This release fixes compilation with `aeson >= 2.0`.
+
 ## 1.0.0.0
 
 2021-03-16
diff --git a/docs/man/spacecookie.json.5 b/docs/man/spacecookie.json.5
--- a/docs/man/spacecookie.json.5
+++ b/docs/man/spacecookie.json.5
@@ -237,7 +237,7 @@
 .Ed
 .Pp
 If you are not using socket activation for running a gopher server on the
-well-known port for gopher, a config like this is apporpriate, provided the
+well-known port for gopher, a config like this is appropriate, provided the
 user
 .Ql gopher
 exists:
diff --git a/server/Network/Spacecookie/Config.hs b/server/Network/Spacecookie/Config.hs
--- a/server/Network/Spacecookie/Config.hs
+++ b/server/Network/Spacecookie/Config.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP               #-}
 module Network.Spacecookie.Config
   ( Config (..)
   , LogConfig (..)
@@ -23,7 +24,13 @@
   , logConfig     :: LogConfig
   }
 
+-- We only use string literals with 'maybePath', so we can just switch between
+-- Key and Text, since both have an IsString instance for OverloadedStrings.
+#if MIN_VERSION_aeson(2,0,0)
+maybePath :: FromJSON a => [Key] -> Object -> Parser (Maybe a)
+#else
 maybePath :: FromJSON a => [Text] -> Object -> Parser (Maybe a)
+#endif
 maybePath []     _ = fail "got empty path"
 maybePath [x]    v = v .:? x
 maybePath (x:xs) v = v .:? x >>= fmap join . traverse (maybePath xs)
diff --git a/spacecookie.cabal b/spacecookie.cabal
--- a/spacecookie.cabal
+++ b/spacecookie.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                spacecookie
-version:             1.0.0.0
+version:             1.0.0.1
 synopsis:            Gopher server library and daemon
 description:         Simple gopher library that allows writing custom gopher
                      applications. Also includes a fully-featured gopher server
