diff --git a/.hlint.yaml b/.hlint.yaml
--- a/.hlint.yaml
+++ b/.hlint.yaml
@@ -2,3 +2,4 @@
 - ignore: {name: Avoid lambda}
 - ignore: {name: Redundant lambda}
 - ignore: {name: Unused LANGUAGE pragma}
+- ignore: {name: Eta reduce, within: [Linear.Plucker, Linear.Quaternion, Linear.V, Linear.V0, Linear.V1, Linear.V2, Linear.V3, Linear.V4]}
diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+1.21.7 [2021.09.20]
+-------------------
+* Fix a build error when using `random-1.2.1` or later.
+
 1.21.6 [2021.07.05]
 -------------------
 * Fix a build error when configured with `-template-haskell`.
diff --git a/linear.cabal b/linear.cabal
--- a/linear.cabal
+++ b/linear.cabal
@@ -1,6 +1,6 @@
 name:          linear
 category:      Math, Algebra
-version:       1.21.6
+version:       1.21.7
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
diff --git a/src/Linear/Affine.hs b/src/Linear/Affine.hs
--- a/src/Linear/Affine.hs
+++ b/src/Linear/Affine.hs
@@ -86,7 +86,7 @@
 import Linear.V3
 import Linear.V4
 import Linear.Vector
-import System.Random
+import System.Random (Random(..))
 
 -- | An affine space is roughly a vector space in which we have
 -- forgotten or at least pretend to have forgotten the origin.
diff --git a/src/Linear/Plucker.hs b/src/Linear/Plucker.hs
--- a/src/Linear/Plucker.hs
+++ b/src/Linear/Plucker.hs
@@ -107,7 +107,7 @@
 import Linear.V3
 import Linear.V4
 import Linear.Vector
-import System.Random
+import System.Random (Random(..))
 
 -- | Plücker coordinates for lines in a 3-dimensional space.
 data Plucker a = Plucker !a !a !a !a !a !a deriving (Eq,Ord,Show,Read
diff --git a/src/Linear/Quaternion.hs b/src/Linear/Quaternion.hs
--- a/src/Linear/Quaternion.hs
+++ b/src/Linear/Quaternion.hs
@@ -117,7 +117,7 @@
 import Linear.V4
 import Linear.Vector
 import Prelude hiding (any)
-import System.Random
+import System.Random (Random(..))
 
 -- | Quaternions
 data Quaternion a = Quaternion !a {-# UNPACK #-}!(V3 a)
diff --git a/src/Linear/V.hs b/src/Linear/V.hs
--- a/src/Linear/V.hs
+++ b/src/Linear/V.hs
@@ -129,7 +129,7 @@
 #if !(MIN_VERSION_base(4,11,0))
 import Data.Semigroup
 #endif
-import System.Random
+import System.Random (Random(..))
 
 class Dim n where
   reflectDim :: p n -> Int
diff --git a/src/Linear/V0.hs b/src/Linear/V0.hs
--- a/src/Linear/V0.hs
+++ b/src/Linear/V0.hs
@@ -96,7 +96,7 @@
 #if __GLASGOW_HASKELL__ >= 707
 import Linear.V
 #endif
-import System.Random
+import System.Random (Random(..))
 import Prelude hiding (sum)
 
 -- $setup
diff --git a/src/Linear/V1.hs b/src/Linear/V1.hs
--- a/src/Linear/V1.hs
+++ b/src/Linear/V1.hs
@@ -95,7 +95,7 @@
 import Linear.Epsilon
 import Linear.Vector
 import Prelude hiding (sum)
-import System.Random
+import System.Random (Random(..))
 #if !(MIN_VERSION_base(4,11,0))
 import Data.Semigroup
 #endif
diff --git a/src/Linear/V2.hs b/src/Linear/V2.hs
--- a/src/Linear/V2.hs
+++ b/src/Linear/V2.hs
@@ -106,7 +106,7 @@
 import Linear.Vector
 import Linear.V1 (R1(..),ex)
 import Prelude hiding (sum)
-import System.Random
+import System.Random (Random(..))
 
 -- $setup
 -- >>> import Control.Applicative
diff --git a/src/Linear/V3.hs b/src/Linear/V3.hs
--- a/src/Linear/V3.hs
+++ b/src/Linear/V3.hs
@@ -103,7 +103,7 @@
 #endif
 import Linear.V2
 import Linear.Vector
-import System.Random
+import System.Random (Random(..))
 
 -- $setup
 -- >>> import Control.Lens hiding (index)
diff --git a/src/Linear/V4.hs b/src/Linear/V4.hs
--- a/src/Linear/V4.hs
+++ b/src/Linear/V4.hs
@@ -110,7 +110,7 @@
 import Linear.V2
 import Linear.V3
 import Linear.Vector
-import System.Random
+import System.Random (Random(..))
 
 -- $setup
 -- >>> import Control.Lens hiding (index)
