diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.15.0
+------
+* Support Cabal 3.14
+
 0.14.0
 ------
 * Support ghc 9.8.2
diff --git a/cabal-lenses.cabal b/cabal-lenses.cabal
--- a/cabal-lenses.cabal
+++ b/cabal-lenses.cabal
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10.0
 name:               cabal-lenses
-version:            0.14.0
+version:            0.15.0
 license:            BSD3
 license-file:       LICENSE
 maintainer:         daniel.trstenjak@gmail.com
@@ -49,7 +49,7 @@
         base >=4.8 && <5,
         lens >=4.0.1 && <6.0,
         unordered-containers >=0.2.3.3 && <0.3,
-        Cabal >=3.12 && <4.0,
+        Cabal >=3.14 && <4.0,
         system-filepath >=0.4.9 && <0.5,
         system-fileio >=0.3.12 && <0.4,
         strict >=0.3.2 && <0.6,
diff --git a/lib/CabalLenses/PackageDescription.hs b/lib/CabalLenses/PackageDescription.hs
--- a/lib/CabalLenses/PackageDescription.hs
+++ b/lib/CabalLenses/PackageDescription.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE DataKinds #-}
 
 -- |
 -- Lenses for several data types of the 'Distribution.PackageDescription' module.
diff --git a/lib/CabalLenses/Utils.hs b/lib/CabalLenses/Utils.hs
--- a/lib/CabalLenses/Utils.hs
+++ b/lib/CabalLenses/Utils.hs
@@ -19,7 +19,7 @@
 import qualified Filesystem as FS
 import qualified Data.List as L
 import qualified Data.Text as T
-import Distribution.Utils.Path (SymbolicPath, getSymbolicPath, unsafeMakeSymbolicPath, PackageDir, SourceDir)
+import Distribution.Utils.Path (SymbolicPath, getSymbolicPath, makeSymbolicPath)
 
 #if __GLASGOW_HASKELL__ < 710
 import Control.Applicative ((<$>))
@@ -133,15 +133,15 @@
 absoluteFile :: FilePath -> IO FP.FilePath
 absoluteFile = FS.canonicalizePath . FP.decodeString
 
-symPathsToFilePaths :: Iso' [SymbolicPath PackageDir SourceDir] [FilePath]
+symPathsToFilePaths :: Iso' [SymbolicPath from to] [FilePath]
 symPathsToFilePaths = iso toFilePathList fromFilePathList
    where
-      toFilePathList :: [SymbolicPath PackageDir SourceDir] -> [FilePath]
+      toFilePathList :: [SymbolicPath from to] -> [FilePath]
       toFilePathList symPathList = map getSymbolicPath symPathList
 
-      fromFilePathList :: [FilePath] -> [SymbolicPath PackageDir SourceDir]
-      fromFilePathList strList   = map unsafeMakeSymbolicPath strList
+      fromFilePathList :: [FilePath] -> [SymbolicPath from to]
+      fromFilePathList strList   = map makeSymbolicPath strList
 
 {-# DEPRECATED symbolicPathListToFilePathList "Use symPathsToFilePaths." #-}
-symbolicPathListToFilePathList :: Iso' [SymbolicPath PackageDir SourceDir] [FilePath]
+symbolicPathListToFilePathList :: Iso' [SymbolicPath from to] [FilePath]
 symbolicPathListToFilePathList = symPathsToFilePaths
