diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,9 @@
 See also https://pvp.haskell.org/faq
 
+## Version 1.3.5.0
+
+ * Add `Solo` instance (base-4.15+, GHC-9+)
+
 ## Version 1.3.4.1
 
  * Fix compilation on 32 bit platforms
diff --git a/hashable.cabal b/hashable.cabal
--- a/hashable.cabal
+++ b/hashable.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               hashable
-version:            1.3.4.1
+version:            1.3.5.0
 synopsis:           A class for types that can be converted to a hash value
 description:
   This package defines a class, 'Hashable', for types that
@@ -37,7 +37,7 @@
    || ==8.8.3
    || ==8.10.4
    || ==9.0.1
-   || ==9.2.*
+   || ==9.2.1
 
 extra-source-files:
   CHANGES.md
diff --git a/src/Data/Hashable/Class.hs b/src/Data/Hashable/Class.hs
--- a/src/Data/Hashable/Class.hs
+++ b/src/Data/Hashable/Class.hs
@@ -178,6 +178,12 @@
 import qualified Data.Functor.Sum as FS
 #endif
 
+#if MIN_VERSION_base(4,16,0)
+import Data.Tuple (Solo (..))
+#elif MIN_VERSION_base(4,15,0)
+import GHC.Tuple (Solo (..))
+#endif
+
 import Data.String (IsString(..))
 
 #if MIN_VERSION_base(4,9,0)
@@ -1025,3 +1031,14 @@
 -- | @since 1.3.4.0
 instance Hashable v => Hashable (Tree.Tree v) where
     hashWithSalt = hashWithSalt1
+
+-------------------------------------------------------------------------------
+-- Solo
+-------------------------------------------------------------------------------
+
+#if MIN_VERSION_base(4,15,0)
+instance Hashable a => Hashable (Solo a) where
+    hashWithSalt = hashWithSalt1
+instance Hashable1 Solo where
+    liftHashWithSalt h salt (Solo x) = h salt x
+#endif
