diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# 0.4.6 [2021.03.12]
+* Allow building with `singletons-base`.
+
 # 0.4.5 [2020.04.11]
 * Remove the use of overlapping patterns in `NatMinus`.
 
diff --git a/Data/Nat.hs b/Data/Nat.hs
--- a/Data/Nat.hs
+++ b/Data/Nat.hs
@@ -26,13 +26,13 @@
   , someNatVal
 #if MIN_VERSION_singletons(2,6,0)
   , SNat(..)
-  , Data.Singletons.Prelude.Sing
+  , PreludeSingletons.Sing
 #else
   , SNat
-  , Data.Singletons.Prelude.Sing(SS, SZ)
+  , PreludeSingletons.Sing(SS, SZ)
 #endif
-  , Data.Singletons.Prelude.PNum
-  , Data.Singletons.Prelude.SNum
+  , PreludeSingletons.PNum
+  , PreludeSingletons.SNum
   , SSym0(..)
   , SSym1
   , ZSym0
@@ -42,9 +42,15 @@
   , SLit
   , sLit) where
 
-import Data.Singletons.TH
-import Data.Singletons.Prelude
 import qualified GHC.TypeLits as Lit
+
+#if MIN_VERSION_singletons(3,0,0)
+import Data.Singletons.Base.TH
+import Prelude.Singletons as PreludeSingletons
+#else
+import Data.Singletons.Prelude as PreludeSingletons
+import Data.Singletons.TH
+#endif
 
 $(singletons [d|
   data Nat = Z | S Nat deriving (Eq, Show, Ord)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 # singleton-nats
 
-[![Hackage](https://img.shields.io/hackage/v/singleton-nats.svg)](https://hackage.haskell.org/package/singleton-nats) [![Build Status](https://secure.travis-ci.org/AndrasKovacs/singleton-nats.svg)](http://travis-ci.org/AndrasKovacs/singleton-nats)
+[![Hackage](https://img.shields.io/hackage/v/singleton-nats.svg)](https://hackage.haskell.org/package/singleton-nats) [![Build Status](https://github.com/AndrasKovacs/singleton-nats/workflows/Haskell-CI/badge.svg)](https://github.com/AndrasKovacs/singleton-nats/actions?query=workflow%3AHaskell-CI)
 
 Unary natural numbers relying on the singletons infrastructure.
diff --git a/singleton-nats.cabal b/singleton-nats.cabal
--- a/singleton-nats.cabal
+++ b/singleton-nats.cabal
@@ -1,5 +1,5 @@
 name:                singleton-nats
-version:             0.4.5
+version:             0.4.6
 synopsis:            Unary natural numbers relying on the singletons infrastructure.
 description:         Unary natural number relying on the <https://hackage.haskell.org/package/singletons singletons> infrastructure. More information about the general usage of singletons can be found on the <https://github.com/goldfirere/singletons singletons github> page.
 category:            Data, Dependent Types
@@ -13,20 +13,31 @@
 
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1
+tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1, GHC == 9.0.1
 extra-source-files:  CHANGELOG.md, README.md
 
 source-repository head
   type: git
   location: https://github.com/AndrasKovacs/singleton-nats.git
 
+flag singletons-3-0
+  description:         Use @singletons-3.0@ or later.
+  default:             True
+
 library
   exposed-modules:
     Data.Nat
 
   build-depends:
-    base >=4.8.1.0 && <5,
-    singletons >= 2.2 && < 2.8
+    base >=4.8.1.0 && <5
+
+  if flag(singletons-3-0)
+    build-depends:
+      singletons      >= 3.0 && < 3.1,
+      singletons-base >= 3.0 && < 3.1
+  else
+    build-depends:
+      singletons >= 2.2 && < 2.8
 
   default-language:    Haskell2010
   ghc-options:         -Wall -Wno-unticked-promoted-constructors
