diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,16 @@
 # Changelog
 
+## v2.9.3.1 - 2023-06-22
+
+Hackage-only release of the `stack` package:
+
+* Supports building against snapshot Stackage LTS Haskell 21.0 (GHC 9.4.5),
+  without extra deps.
+* Supports build with `persistent-2.14.5.0`, using CPP directives.
+* Supports build with `unix-compat-0.7`, by removing reliance on the module
+  `System.PosixCompat.User` removed in that package.
+* Includes `cabal.project` and `cabal.config` files in the package.
+
 ## v2.9.3 - 2022-12-16
 
 **Changes since v2.9.1:**
diff --git a/cabal.config b/cabal.config
new file mode 100644
--- /dev/null
+++ b/cabal.config
@@ -0,0 +1,206 @@
+constraints:
+  , Cabal ==3.8.1.0
+  , Cabal-syntax ==3.8.1.0
+  , Glob ==0.10.2
+  , OneTuple ==0.4.1.1
+  , QuickCheck ==2.14.3
+  , StateVar ==1.2.2
+  , Win32 ==2.12.0.1
+  , aeson ==2.1.2.1
+  , annotated-wl-pprint ==0.7.0
+  , ansi-terminal ==0.11.5
+  , ansi-terminal-types ==0.11.5
+  , ansi-wl-pprint ==0.6.9
+  , appar ==0.1.8
+  , array ==0.5.4.0
+  , asn1-encoding ==0.9.6
+  , asn1-parse ==0.9.5
+  , asn1-types ==0.3.4
+  , assoc ==1.1
+  , async ==2.2.4
+  , attoparsec ==0.14.4
+  , attoparsec-iso8601 ==1.1.0.0
+  , auto-update ==0.1.6
+  , base ==4.17.1.0
+  , base-compat ==0.12.2
+  , base-compat-batteries ==0.12.2
+  , base-orphans ==0.9.0
+  , base16-bytestring ==1.0.2.0
+  , base64-bytestring ==1.2.1.0
+  , basement ==0.0.16
+  , bifunctors ==5.5.15
+  , binary ==0.8.9.1
+  , bitvec ==1.1.4.0
+  , blaze-builder ==0.4.2.2
+  , blaze-html ==0.9.1.2
+  , blaze-markup ==0.8.2.8
+  , byteorder ==1.0.4
+  , bytestring ==0.11.4.0
+  , casa-client ==0.0.1
+  , casa-types ==0.0.2
+  , case-insensitive ==1.2.1.0
+  , cereal ==0.5.8.3
+  , clock ==0.8.3
+  , cmdargs ==0.10.22
+  , colour ==2.3.6
+  , comonad ==5.0.8
+  , conduit ==1.3.5
+  , conduit-combinators ==1.3.0
+  , conduit-extra ==1.3.6
+  , connection ==0.3.1
+  , containers ==0.6.7
+  , contravariant ==1.5.5
+  , cookie ==0.4.6
+  , cryptohash-sha256 ==0.11.102.1
+  , cryptonite ==0.30
+  , cryptonite-conduit ==0.2.2
+  , data-default-class ==0.1.2.0
+  , data-fix ==0.3.2
+  , deepseq ==1.4.8.0
+  , digest ==0.0.1.7
+  , directory ==1.3.7.1
+  , distributive ==0.6.2.1
+  , dlist ==1.0
+  , easy-file ==0.2.5
+  , echo ==0.1.4
+  , ed25519 ==0.0.5.0
+  , exceptions ==0.10.5
+  , extra ==1.7.13
+  , fast-logger ==3.2.1
+  , file-embed ==0.0.15.0
+  , filelock ==0.1.1.6
+  , filepath ==1.4.2.2
+  , foldable1-classes-compat ==0.1
+  , fsnotify ==0.4.1.0
+  , generic-deriving ==1.14.4
+  , generically ==0.1.1
+  , ghc-bignum ==1.3
+  , ghc-boot-th ==9.4.5
+  , ghc-prim ==0.9.0
+  , githash ==0.1.6.3
+  , hackage-security ==0.6.2.3
+  , hashable ==1.4.2.0
+  , hi-file-parser ==0.1.4.0
+  . hinotify ==0.4.1
+  , hourglass ==0.2.12
+  , hpack ==0.35.2
+  , hpc ==0.6.1.0
+  , http-api-data ==0.5
+  , http-client ==0.7.13.1
+  , http-client-tls ==0.3.6.1
+  , http-conduit ==2.3.8.1
+  , http-download ==0.2.0.0
+  , http-types ==0.12.3
+  , indexed-traversable ==0.1.2.1
+  , indexed-traversable-instances ==0.1.1.2
+  , infer-license ==0.2.0
+  , integer-gmp ==1.1
+  , integer-logarithms ==1.0.3.1
+  , iproute ==1.7.12
+  , libyaml ==0.1.2
+  , lift-type ==0.1.1.1
+  , lifted-base ==0.2.3.12
+  , lukko ==0.1.1.3
+  , megaparsec ==9.3.1
+  , memory ==0.18.0
+  , microlens ==0.4.13.1
+  , microlens-mtl ==0.2.0.3
+  , microlens-th ==0.4.3.13
+  , mime-types ==0.1.1.0
+  , mintty ==0.1.4
+  , monad-control ==1.0.3.1
+  , monad-logger ==0.3.40
+  , monad-loops ==0.4.3
+  , mono-traversable ==1.0.15.3
+  , mtl ==2.2.2
+  , mtl-compat ==0.2.2
+  , mustache ==2.4.2
+  , neat-interpolation ==0.5.1.3
+  , network ==3.1.4.0
+  , network-uri ==2.6.4.2
+  , old-locale ==1.0.0.7
+  , old-time ==1.1.0.3
+  , open-browser ==0.2.1.0
+  , optparse-applicative ==0.17.1.0
+  , optparse-simple ==0.1.1.4
+  , pantry ==0.8.2.2
+  , parsec ==3.1.16.1
+  , parser-combinators ==1.3.0
+  , path ==0.9.2
+  , path-io ==1.8.1
+  , path-pieces ==0.2.1
+  , pem ==0.2.4
+  , persistent ==2.14.5.0
+  , persistent-sqlite ==2.13.1.1
+  , persistent-template ==2.12.0.0
+  , pretty ==1.1.3.6
+  , primitive ==0.8.0.0
+  , process ==1.6.16.0
+  , project-template ==0.2.1.0
+  , random ==1.2.1.1
+  , resource-pool ==0.4.0.0
+  , resourcet ==1.2.6
+  , retry ==0.9.3.1
+  , rio ==0.1.22.0
+  , rio-orphans ==0.1.2.0
+  , rio-prettyprint ==0.1.4.0
+  , rts ==1.0.2
+  , safe ==0.3.19
+  , safe-exceptions ==0.1.7.3
+  , scientific ==0.3.7.0
+  , semialign ==1.3
+  , semigroupoids ==5.3.7
+  , semigroups ==0.20
+  , silently ==1.2.5.3
+  , socks ==0.6.1
+  , split ==0.2.3.5
+  , splitmix ==0.1.0.4
+  , stack ==2.9.3.1
+  , stm ==2.5.1.0
+  , stm-chans ==3.0.0.9
+  , streaming-commons ==0.2.2.6
+  , strict ==0.5
+  , syb ==0.7.2.3
+  , tagged ==0.8.7
+  , tar ==0.5.1.1
+  , tar-conduit ==0.3.2
+  , template-haskell ==2.19.0.0
+  , temporary ==1.3
+  , text ==2.0.2
+  , text-metrics ==0.3.2
+  , text-short ==0.1.5
+  , th-abstraction ==0.4.5.0
+  , th-compat ==0.1.4
+  , th-expand-syns ==0.4.11.0
+  , th-lift ==0.8.3
+  , th-lift-instances ==0.1.20
+  , th-reify-many ==0.1.10
+  , these ==1.2
+  , time ==1.12.2
+  , time-compat ==1.9.6.1
+  , tls ==1.6.0
+  , transformers ==0.5.6.2
+  , transformers-base ==0.4.6
+  , transformers-compat ==0.7.2
+  , typed-process ==0.2.11.0
+  , unix ==2.7.3
+  , unicode-data ==0.4.0.1
+  , unicode-transforms ==0.4.0.1
+  , unix-compat ==0.7
+  , unix-time ==0.4.9
+  , unliftio ==0.2.25.0
+  , unliftio-core ==0.2.1.0
+  , unordered-containers ==0.2.19.1
+  , uuid-types ==1.0.5
+  , vault ==0.3.1.5
+  , vector ==0.13.0.0
+  , vector-algorithms ==0.9.0.1
+  , vector-stream ==0.1.0.0
+  , witherable ==0.4.2
+  , x509 ==1.7.7
+  , x509-store ==1.6.9
+  , x509-system ==1.6.7
+  , x509-validation ==1.6.12
+  , yaml ==0.11.11.1
+  , zip-archive ==0.4.3
+  , zlib ==0.6.3.0
diff --git a/cabal.project b/cabal.project
new file mode 100644
--- /dev/null
+++ b/cabal.project
@@ -0,0 +1,41 @@
+-- This file is a configuration file for Cabal (the tool). It is provided to
+-- assist some users of that tool to develop Stack. For information about
+-- `cabal.project` files, see:
+-- https://cabal.readthedocs.io/en/stable/cabal-project.html.
+--
+-- For information about possible limitations of the `cabal.config` files
+-- corresponding to Stackage package sets that are made available by Stackage
+-- see: https://github.com/fpco/stackage-server/issues/232.
+--
+-- `import:` is only available to users of Cabal (the tool) >= 3.8.1.0.
+--
+-- The constraints in file `cabal.config` can be obtained by commanding:
+--
+-- > stack ls dependencies cabal > cabal.config
+--
+-- However, be aware that, in respect of the `unix` package or the `Win32`
+-- package (that may come with GHC, depending on the operating system):
+--
+-- * on Windows, the Stack project does not depend on `unix` but depends on
+--   `Win32`; and
+--
+-- * on non-Windows operating systems, the Stack project does not depend on
+--   `Win32` but depends on `unix`.
+--
+-- The command above will add one of the two packages to `cabal.config` but omit
+-- the other. A comprehensive `cabal.config` will need to be created by editing
+-- the command's output.
+--
+-- Also be aware that there may be other packages required only on non-Windows
+-- systems. For example, the `hinotify` package.
+--
+-- Be sure to set `with-compiler: ghc-x.y.z` below to the version of GHC that is
+-- specified by the snapshot specifed in Stack's project-level YAML
+-- configuration file (`stack.yaml`). The relevant version of GHC can be
+-- confirmed by reviewing the snapshot on Stackage. For example, at:
+-- https://www.stackage.org/lts-20.23/cabal.config.
+--
+
+with-compiler: ghc-9.4.5
+import: cabal.config
+packages: .
diff --git a/doc/ChangeLog.md b/doc/ChangeLog.md
--- a/doc/ChangeLog.md
+++ b/doc/ChangeLog.md
@@ -1,5 +1,16 @@
 # Changelog
 
+## v2.9.3.1 - 2023-06-22
+
+Hackage-only release of the `stack` package:
+
+* Supports building against snapshot Stackage LTS Haskell 21.0 (GHC 9.4.5),
+  without extra deps.
+* Supports build with `persistent-2.14.5.0`, using CPP directives.
+* Supports build with `unix-compat-0.7`, by removing reliance on the module
+  `System.PosixCompat.User` removed in that package.
+* Includes `cabal.project` and `cabal.config` files in the package.
+
 ## v2.9.3 - 2022-12-16
 
 **Changes since v2.9.1:**
diff --git a/src/Stack/Config.hs b/src/Stack/Config.hs
--- a/src/Stack/Config.hs
+++ b/src/Stack/Config.hs
@@ -89,7 +89,7 @@
 import           System.Environment
 import           System.Info.ShortPathName ( getShortPathName )
 import           System.PosixCompat.Files ( fileOwner, getFileStatus )
-import           System.PosixCompat.User ( getEffectiveUserID )
+import           System.Posix.User ( getEffectiveUserID )
 
 -- | If deprecated path exists, use it and print a warning.
 -- Otherwise, return the new path.
diff --git a/src/Stack/Docker.hs b/src/Stack/Docker.hs
--- a/src/Stack/Docker.hs
+++ b/src/Stack/Docker.hs
@@ -66,7 +66,7 @@
 import           System.Posix.Signals
 import qualified System.Posix.User as PosixUser
 #endif
-import qualified System.PosixCompat.User as User
+import           System.Posix.User as User
 import qualified System.PosixCompat.Files as Files
 import           System.Terminal ( hIsTerminalDeviceOrMinTTY )
 import           Text.ParserCombinators.ReadP ( readP_to_S )
diff --git a/src/Stack/Storage/Util.hs b/src/Stack/Storage/Util.hs
--- a/src/Stack/Storage/Util.hs
+++ b/src/Stack/Storage/Util.hs
@@ -4,6 +4,7 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE TypeOperators         #-}
+{-# LANGUAGE CPP                   #-}
 
 -- | Utils for the other Stack.Storage modules
 module Stack.Storage.Util
@@ -26,6 +27,9 @@
        , PersistEntity record
        , MonadIO m
        , PersistQueryWrite backend
+#if MIN_VERSION_persistent(2,14,0)
+       , SafeToInsert record
+#endif
        )
     => (parentid -> value -> record)
     -> EntityField record parentid
@@ -51,6 +55,9 @@
        , PersistEntity record
        , MonadIO m
        , PersistQueryWrite backend
+#if MIN_VERSION_persistent(2,14,0)
+       , SafeToInsert record
+#endif
        )
     => (parentid -> Int -> value -> record)
     -> EntityField record parentid
diff --git a/src/windows/System/Posix/User.hs b/src/windows/System/Posix/User.hs
new file mode 100644
--- /dev/null
+++ b/src/windows/System/Posix/User.hs
@@ -0,0 +1,49 @@
+-- | The module of this name differs as between Windows and non-Windows builds.
+-- This is the Windows version. Non-Windows builds rely on the unix package,
+-- which exposes a module of the same name.
+
+module System.Posix.User
+  ( getEffectiveUserID
+  , getEffectiveGroupID
+  , getGroups
+  , getUserEntryForName
+  , homeDirectory
+  , setGroupID
+  , setUserID
+  ) where
+
+import           System.IO.Error ( illegalOperationErrorType, mkIOError )
+import           System.PosixCompat.Types ( GroupID, UserID )
+
+unsupported :: String -> IO a
+unsupported f = ioError $ mkIOError illegalOperationErrorType x Nothing Nothing
+ where
+  x = "System.Posix.User." ++ f ++ ": not supported on Windows."
+
+getEffectiveUserID :: IO UserID
+getEffectiveUserID = unsupported "getEffectiveUserID"
+
+getEffectiveGroupID :: IO GroupID
+getEffectiveGroupID = unsupported "getEffectiveGroupID"
+
+getGroups :: IO [GroupID]
+getGroups = return []
+
+getUserEntryForName :: String -> IO UserEntry
+getUserEntryForName _ = unsupported "getUserEntryForName"
+
+setGroupID :: GroupID -> IO ()
+setGroupID _ = return ()
+
+setUserID :: UserID -> IO ()
+setUserID _ = return ()
+
+data UserEntry = UserEntry
+    { userName      :: String
+    , userPassword  :: String
+    , userID        :: UserID
+    , userGroupID   :: GroupID
+    , userGecos     :: String
+    , homeDirectory :: String
+    , userShell     :: String
+    } deriving (Eq, Read, Show)
diff --git a/stack.cabal b/stack.cabal
--- a/stack.cabal
+++ b/stack.cabal
@@ -1,771 +1,752 @@
-cabal-version:      2.0
-name:               stack
-version:            2.9.3
-license:            BSD3
-license-file:       LICENSE
-maintainer:         manny@fpcomplete.com
-author:             Commercial Haskell SIG
-homepage:           http://haskellstack.org
-bug-reports:        https://github.com/commercialhaskell/stack/issues
-synopsis:           The Haskell Tool Stack
-description:
-    Please see the documentation at <https://docs.haskellstack.org>
-    for usage information.
-    .
-    If building a 'stack' executable for distribution, please download the
-    source code from <https://github.com/commercialhaskell/stack/releases>
-    and build it using Stack itself in order to ensure identical behaviour
-    to official binaries.  This package on Hackage is provided for convenience
-    and bootstrapping purposes.
-    .
-    Note that the API for the library is not currently stable, and may
-    change significantly, even between minor releases. It is
-    currently only intended for use by the executable.
-
-category:           Development
-build-type:         Custom
-extra-source-files:
-    CONTRIBUTING.md
-    ChangeLog.md
-    README.md
-    stack.yaml
-    doc/azure_ci.md
-    doc/build_command.md
-    doc/build_overview.md
-    doc/ChangeLog.md
-    doc/CI.md
-    doc/clean_command.md
-    doc/config_command.md
-    doc/CONTRIBUTING.md
-    doc/coverage.md
-    doc/custom_snapshot.md
-    doc/debugging.md
-    doc/dependency_visualization.md
-    doc/developing_on_windows.md
-    doc/docker_command.md
-    doc/docker_integration.md
-    doc/dot_command.md
-    doc/editor_integration.md
-    doc/environment_variables.md
-    doc/eval_command.md
-    doc/exec_command.md
-    doc/faq.md
-    doc/ghc_command.md
-    doc/ghci.md
-    doc/global_flags.md
-    doc/glossary.md
-    doc/GUIDE.md
-    doc/GUIDE_advanced.md
-    doc/hoogle_command.md
-    doc/hpc_command.md
-    doc/ide_command.md
-    doc/init_command.md
-    doc/install_and_upgrade.md
-    doc/list_command.md
-    doc/lock_files.md
-    doc/ls_command.md
-    doc/new_command.md
-    doc/nix_integration.md
-    doc/nonstandard_project_init.md
-    doc/other_resources.md
-    doc/pantry.md
-    doc/path_command.md
-    doc/purge_command.md
-    doc/query_command.md
-    doc/README.md
-    doc/run_command.md
-    doc/runghc_command.md
-    doc/script_command.md
-    doc/scripts.md
-    doc/sdist_command.md
-    doc/setup_command.md
-    doc/shell_autocompletion.md
-    doc/SIGNING_KEY.md
-    doc/Stack_and_VS_Code.md
-    doc/stack_yaml_vs_cabal_package_file.md
-    doc/templates_command.md
-    doc/travis_ci.md
-    doc/uninstall_command.md
-    doc/unpack_command.md
-    doc/update_command.md
-    doc/upgrade_command.md
-    doc/upload_command.md
-    doc/yaml_configuration.md
-    src/setup-shim/StackSetupShim.hs
-    test/package-dump/ghc-7.10.txt
-    test/package-dump/ghc-7.8.4-osx.txt
-    test/package-dump/ghc-7.8.txt
-    test/package-dump/ghc-head.txt
-    src/test/Stack/Untar/test1.tar.gz
-    src/test/Stack/Untar/test2.tar.gz
-
-source-repository head
-    type:     git
-    location: https://github.com/commercialhaskell/stack
-
-custom-setup
-    setup-depends:
-        Cabal,
-        base >=4.14.3.0 && <5,
-        filepath
-
-flag developer-mode
-    description: By default, should extra developer information be output?
-    default:     False
-    manual:      True
-
-flag disable-git-info
-    description: Disable compile-time inclusion of current git info in stack
-    default:     False
-    manual:      True
-
-flag hide-dependency-versions
-    description:
-        Hides dependency versions from 'stack --version', used only by building Stack and the default 'stack.yaml'.  Note to packagers/distributors: DO NOT OVERRIDE THIS FLAG IF YOU ARE BUILDING 'stack' ANY OTHER WAY (e.g. using cabal or from Hackage), as it makes debugging support requests more difficult.
-
-    default:     False
-    manual:      True
-
-flag integration-tests
-    description: Run the integration test suite
-    default:     False
-    manual:      True
-
-flag static
-    description: Pass -static/-pthread to ghc when linking the stack binary.
-    default:     False
-    manual:      True
-
-flag supported-build
-    description:
-        If false, causes 'stack --version' to issue a warning about the build being unsupported.  Should be True only if building with Stack and the default 'stack.yaml'.  Note to packagers/distributors: DO NOT OVERRIDE THIS FLAG IF YOU ARE BUILDING 'stack' ANY OTHER WAY (e.g. using cabal or from Hackage), as it makes debugging support requests more difficult.
-
-    default:     False
-    manual:      True
-
-library
-    exposed-modules:
-        Control.Concurrent.Execute
-        Data.Attoparsec.Args
-        Data.Attoparsec.Combinators
-        Data.Attoparsec.Interpreter
-        Data.Monoid.Map
-        Network.HTTP.StackClient
-        Options.Applicative.Args
-        Options.Applicative.Builder.Extra
-        Options.Applicative.Complicated
-        Path.CheckInstall
-        Path.Extra
-        Path.Find
-        Stack.Build
-        Stack.Build.Cache
-        Stack.Build.ConstructPlan
-        Stack.Build.Execute
-        Stack.Build.Haddock
-        Stack.Build.Installed
-        Stack.Build.Source
-        Stack.Build.Target
-        Stack.BuildPlan
-        Stack.Clean
-        Stack.Config
-        Stack.Config.Build
-        Stack.Config.Docker
-        Stack.Config.Nix
-        Stack.ConfigCmd
-        Stack.Constants
-        Stack.Constants.Config
-        Stack.Coverage
-        Stack.DefaultColorWhen
-        Stack.Docker
-        Stack.Dot
-        Stack.FileWatch
-        Stack.GhcPkg
-        Stack.Ghci
-        Stack.Ghci.Script
-        Stack.Hoogle
-        Stack.IDE
-        Stack.Init
-        Stack.List
-        Stack.Ls
-        Stack.Lock
-        Stack.New
-        Stack.Nix
-        Stack.Options.BenchParser
-        Stack.Options.BuildMonoidParser
-        Stack.Options.BuildParser
-        Stack.Options.CleanParser
-        Stack.Options.ConfigParser
-        Stack.Options.Completion
-        Stack.Options.DockerParser
-        Stack.Options.DotParser
-        Stack.Options.ExecParser
-        Stack.Options.GhcBuildParser
-        Stack.Options.GhciParser
-        Stack.Options.GhcVariantParser
-        Stack.Options.GlobalParser
-        Stack.Options.HaddockParser
-        Stack.Options.HpcReportParser
-        Stack.Options.LogLevelParser
-        Stack.Options.NewParser
-        Stack.Options.NixParser
-        Stack.Options.PackageParser
-        Stack.Options.ResolverParser
-        Stack.Options.ScriptParser
-        Stack.Options.SDistParser
-        Stack.Options.TestParser
-        Stack.Options.UploadParser
-        Stack.Options.Utils
-        Stack.Package
-        Stack.PackageDump
-        Stack.Path
-        Stack.Prelude
-        Stack.Runners
-        Stack.Script
-        Stack.SDist
-        Stack.Setup
-        Stack.Setup.Installed
-        Stack.SetupCmd
-        Stack.SourceMap
-        Stack.Storage.Project
-        Stack.Storage.User
-        Stack.Storage.Util
-        Stack.Types.Build
-        Stack.Types.CompilerBuild
-        Stack.Types.Compiler
-        Stack.Types.Config
-        Stack.Types.Config.Build
-        Stack.Types.Docker
-        Stack.Types.GhcPkgId
-        Stack.Types.NamedComponent
-        Stack.Types.Nix
-        Stack.Types.Package
-        Stack.Types.PackageName
-        Stack.Types.Resolver
-        Stack.Types.SourceMap
-        Stack.Types.TemplateName
-        Stack.Types.Version
-        Stack.Unpack
-        Stack.Upgrade
-        Stack.Upload
-        System.Info.ShortPathName
-        System.Permissions
-        System.Process.Pager
-        System.Terminal
-        Paths_stack
-
-    hs-source-dirs:   src/
-    other-modules:
-        Path.Extended
-        Stack.ComponentFile
-        Stack.PackageFile
-        Stack.Types.Cache
-        Stack.Types.Dependency
-        Stack.Types.PackageFile
-        Stack.Types.Storage
-
-    autogen-modules:  Paths_stack
-    default-language: Haskell2010
-    ghc-options:
-        -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs
-        -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
-        -optP-Wno-nonportable-include-path -fwarn-identities
-
-    build-depends:
-        Cabal >=3.6.3.0,
-        aeson >=2.0.3.0,
-        annotated-wl-pprint,
-        ansi-terminal,
-        array,
-        async,
-        attoparsec,
-        base >=4.14.3.0 && <5,
-        base64-bytestring,
-        bytestring,
-        casa-client,
-        casa-types,
-        colour,
-        conduit,
-        conduit-extra,
-        containers,
-        cryptonite,
-        cryptonite-conduit,
-        deepseq,
-        directory,
-        echo,
-        exceptions,
-        extra,
-        file-embed,
-        filelock,
-        filepath,
-        fsnotify >=0.4.1,
-        generic-deriving,
-        hackage-security,
-        hashable,
-        hi-file-parser,
-        hpack,
-        hpc,
-        http-client,
-        http-client-tls,
-        http-conduit,
-        http-download,
-        http-types,
-        memory,
-        microlens,
-        mintty,
-        mono-traversable,
-        mtl,
-        mustache,
-        neat-interpolation,
-        network-uri,
-        open-browser,
-        optparse-applicative >=0.17.0.0,
-        pantry >=0.8.1,
-        path,
-        path-io,
-        persistent >=2.13.3.5 && <2.14,
-        persistent-sqlite,
-        persistent-template,
-        pretty,
-        primitive,
-        process >=1.6.13.2,
-        project-template,
-        random,
-        retry,
-        rio >=0.1.22.0,
-        rio-prettyprint >=0.1.4.0,
-        semigroups,
-        split,
-        stm,
-        streaming-commons,
-        tar,
-        template-haskell,
-        temporary,
-        text,
-        text-metrics,
-        th-reify-many,
-        time,
-        tls,
-        transformers,
-        typed-process,
-        unicode-transforms,
-        unix-compat,
-        unliftio,
-        unordered-containers,
-        vector,
-        yaml,
-        zip-archive,
-        zlib
-
-    if os(windows)
-        cpp-options:   -DWINDOWS
-        build-depends: Win32
-
-    else
-        build-tool-depends: hsc2hs:hsc2hs
-        build-depends:      unix
-
-    if flag(developer-mode)
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
-
-    else
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
-
-    if os(windows)
-        hs-source-dirs: src/windows/
-        other-modules:  System.Uname
-
-    else
-        c-sources:      src/unix/cbits/uname.c
-        hs-source-dirs: src/unix/
-        other-modules:  System.Uname
-
-executable stack
-    main-is:          Main.hs
-    hs-source-dirs:   src/main
-    other-modules:
-        BuildInfo
-        Build_stack
-        Paths_stack
-
-    autogen-modules:
-        Build_stack
-        Paths_stack
-
-    default-language: Haskell2010
-    ghc-options:
-        -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs
-        -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
-        -optP-Wno-nonportable-include-path -threaded -rtsopts
-
-    build-depends:
-        Cabal >=3.6.3.0,
-        aeson >=2.0.3.0,
-        annotated-wl-pprint,
-        ansi-terminal,
-        array,
-        async,
-        attoparsec,
-        base >=4.14.3.0 && <5,
-        base64-bytestring,
-        bytestring,
-        casa-client,
-        casa-types,
-        colour,
-        conduit,
-        conduit-extra,
-        containers,
-        cryptonite,
-        cryptonite-conduit,
-        deepseq,
-        directory,
-        echo,
-        exceptions,
-        extra,
-        file-embed,
-        filelock,
-        filepath,
-        fsnotify >=0.4.1,
-        generic-deriving,
-        hackage-security,
-        hashable,
-        hi-file-parser,
-        hpack,
-        hpc,
-        http-client,
-        http-client-tls,
-        http-conduit,
-        http-download,
-        http-types,
-        memory,
-        microlens,
-        mintty,
-        mono-traversable,
-        mtl,
-        mustache,
-        neat-interpolation,
-        network-uri,
-        open-browser,
-        optparse-applicative >=0.17.0.0,
-        pantry >=0.8.1,
-        path,
-        path-io,
-        persistent >=2.13.3.5 && <2.14,
-        persistent-sqlite,
-        persistent-template,
-        pretty,
-        primitive,
-        process >=1.6.13.2,
-        project-template,
-        random,
-        retry,
-        rio >=0.1.22.0,
-        rio-prettyprint >=0.1.4.0,
-        semigroups,
-        split,
-        stack,
-        stm,
-        streaming-commons,
-        tar,
-        template-haskell,
-        temporary,
-        text,
-        text-metrics,
-        th-reify-many,
-        time,
-        tls,
-        transformers,
-        typed-process,
-        unicode-transforms,
-        unix-compat,
-        unliftio,
-        unordered-containers,
-        vector,
-        yaml,
-        zip-archive,
-        zlib
-
-    if os(windows)
-        cpp-options:   -DWINDOWS
-        build-depends: Win32
-
-    else
-        build-tool-depends: hsc2hs:hsc2hs
-        build-depends:      unix
-
-    if flag(developer-mode)
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
-
-    else
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
-
-    if flag(static)
-        ld-options: -static -pthread
-
-    if !flag(disable-git-info)
-        cpp-options:   -DUSE_GIT_INFO
-        build-depends:
-            githash,
-            optparse-simple
-
-    if flag(hide-dependency-versions)
-        cpp-options: -DHIDE_DEP_VERSIONS
-
-    if flag(supported-build)
-        cpp-options: -DSUPPORTED_BUILD
-
-executable stack-integration-test
-    main-is:          IntegrationSpec.hs
-    hs-source-dirs:   test/integration test/integration/lib
-    other-modules:
-        StackTest
-        Paths_stack
-
-    autogen-modules:  Paths_stack
-    default-language: Haskell2010
-    ghc-options:
-        -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs
-        -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
-        -optP-Wno-nonportable-include-path -threaded -rtsopts
-        -with-rtsopts=-N
-
-    build-depends:
-        Cabal >=3.6.3.0,
-        aeson >=2.0.3.0,
-        annotated-wl-pprint,
-        ansi-terminal,
-        array,
-        async,
-        attoparsec,
-        base >=4.14.3.0 && <5,
-        base64-bytestring,
-        bytestring,
-        casa-client,
-        casa-types,
-        colour,
-        conduit,
-        conduit-extra,
-        containers,
-        cryptonite,
-        cryptonite-conduit,
-        deepseq,
-        directory,
-        echo,
-        exceptions,
-        extra,
-        file-embed,
-        filelock,
-        filepath,
-        fsnotify >=0.4.1,
-        generic-deriving,
-        hackage-security,
-        hashable,
-        hi-file-parser,
-        hpack,
-        hpc,
-        hspec,
-        http-client,
-        http-client-tls,
-        http-conduit,
-        http-download,
-        http-types,
-        memory,
-        microlens,
-        mintty,
-        mono-traversable,
-        mtl,
-        mustache,
-        neat-interpolation,
-        network-uri,
-        open-browser,
-        optparse-applicative >=0.17.0.0,
-        optparse-generic,
-        pantry >=0.8.1,
-        path,
-        path-io,
-        persistent >=2.13.3.5 && <2.14,
-        persistent-sqlite,
-        persistent-template,
-        pretty,
-        primitive,
-        process >=1.6.13.2,
-        project-template,
-        random,
-        retry,
-        rio >=0.1.22.0,
-        rio-prettyprint >=0.1.4.0,
-        semigroups,
-        split,
-        stm,
-        streaming-commons,
-        tar,
-        template-haskell,
-        temporary,
-        text,
-        text-metrics,
-        th-reify-many,
-        time,
-        tls,
-        transformers,
-        typed-process,
-        unicode-transforms,
-        unix-compat,
-        unliftio,
-        unordered-containers,
-        vector,
-        yaml,
-        zip-archive,
-        zlib
-
-    if os(windows)
-        cpp-options:   -DWINDOWS
-        build-depends: Win32
-
-    else
-        build-tool-depends: hsc2hs:hsc2hs
-        build-depends:      unix
-
-    if flag(developer-mode)
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
-
-    else
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
-
-    if !flag(integration-tests)
-        buildable: False
-
-    if flag(static)
-        ld-options: -static -pthread
-
-test-suite stack-test
-    type:               exitcode-stdio-1.0
-    main-is:            Spec.hs
-    build-tool-depends: hspec-discover:hspec-discover
-    hs-source-dirs:     src/test
-    other-modules:
-        Stack.ArgsSpec
-        Stack.Build.ExecuteSpec
-        Stack.Build.TargetSpec
-        Stack.Config.DockerSpec
-        Stack.ConfigSpec
-        Stack.DotSpec
-        Stack.Ghci.PortableFakePaths
-        Stack.Ghci.ScriptSpec
-        Stack.GhciSpec
-        Stack.LockSpec
-        Stack.NixSpec
-        Stack.PackageDumpSpec
-        Stack.Types.TemplateNameSpec
-        Stack.UploadSpec
-        Paths_stack
-
-    autogen-modules:    Paths_stack
-    default-language:   Haskell2010
-    ghc-options:
-        -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs
-        -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
-        -optP-Wno-nonportable-include-path -threaded
-
-    build-depends:
-        Cabal >=3.6.3.0,
-        QuickCheck,
-        aeson >=2.0.3.0,
-        annotated-wl-pprint,
-        ansi-terminal,
-        array,
-        async,
-        attoparsec,
-        base >=4.14.3.0 && <5,
-        base64-bytestring,
-        bytestring,
-        casa-client,
-        casa-types,
-        colour,
-        conduit,
-        conduit-extra,
-        containers,
-        cryptonite,
-        cryptonite-conduit,
-        deepseq,
-        directory,
-        echo,
-        exceptions,
-        extra,
-        file-embed,
-        filelock,
-        filepath,
-        fsnotify >=0.4.1,
-        generic-deriving,
-        hackage-security,
-        hashable,
-        hi-file-parser,
-        hpack,
-        hpc,
-        hspec,
-        http-client,
-        http-client-tls,
-        http-conduit,
-        http-download,
-        http-types,
-        memory,
-        microlens,
-        mintty,
-        mono-traversable,
-        mtl,
-        mustache,
-        neat-interpolation,
-        network-uri,
-        open-browser,
-        optparse-applicative >=0.17.0.0,
-        pantry >=0.8.1,
-        path,
-        path-io,
-        persistent >=2.13.3.5 && <2.14,
-        persistent-sqlite,
-        persistent-template,
-        pretty,
-        primitive,
-        process >=1.6.13.2,
-        project-template,
-        random,
-        raw-strings-qq,
-        retry,
-        rio >=0.1.22.0,
-        rio-prettyprint >=0.1.4.0,
-        semigroups,
-        smallcheck,
-        split,
-        stack,
-        stm,
-        streaming-commons,
-        tar,
-        template-haskell,
-        temporary,
-        text,
-        text-metrics,
-        th-reify-many,
-        time,
-        tls,
-        transformers,
-        typed-process,
-        unicode-transforms,
-        unix-compat,
-        unliftio,
-        unordered-containers,
-        vector,
-        yaml,
-        zip-archive,
-        zlib
-
-    if os(windows)
-        cpp-options:   -DWINDOWS
-        build-depends: Win32
-
-    else
-        build-tool-depends: hsc2hs:hsc2hs
-        build-depends:      unix
-
-    if flag(developer-mode)
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
-
-    else
-        cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
+cabal-version: 2.0
+
+-- This file has been generated from package.yaml by hpack version 0.35.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stack
+version:        2.9.3.1
+synopsis:       The Haskell Tool Stack
+description:    Please see the documentation at <https://docs.haskellstack.org>
+                for usage information.
+                .
+                If building a 'stack' executable for distribution, please download the
+                source code from <https://github.com/commercialhaskell/stack/releases>
+                and build it using Stack itself in order to ensure identical behaviour
+                to official binaries.  This package on Hackage is provided for convenience
+                and bootstrapping purposes.
+                .
+                Note that the API for the library is not currently stable, and may
+                change significantly, even between minor releases. It is
+                currently only intended for use by the executable.
+category:       Development
+homepage:       http://haskellstack.org
+bug-reports:    https://github.com/commercialhaskell/stack/issues
+author:         Commercial Haskell SIG
+maintainer:     manny@fpcomplete.com
+license:        BSD3
+license-file:   LICENSE
+build-type:     Custom
+extra-source-files:
+    CONTRIBUTING.md
+    ChangeLog.md
+    README.md
+    stack.yaml
+    doc/azure_ci.md
+    doc/build_command.md
+    doc/build_overview.md
+    doc/ChangeLog.md
+    doc/CI.md
+    doc/clean_command.md
+    doc/config_command.md
+    doc/CONTRIBUTING.md
+    doc/coverage.md
+    doc/custom_snapshot.md
+    doc/debugging.md
+    doc/dependency_visualization.md
+    doc/developing_on_windows.md
+    doc/docker_command.md
+    doc/docker_integration.md
+    doc/dot_command.md
+    doc/editor_integration.md
+    doc/environment_variables.md
+    doc/eval_command.md
+    doc/exec_command.md
+    doc/faq.md
+    doc/ghc_command.md
+    doc/ghci.md
+    doc/global_flags.md
+    doc/glossary.md
+    doc/GUIDE.md
+    doc/GUIDE_advanced.md
+    doc/hoogle_command.md
+    doc/hpc_command.md
+    doc/ide_command.md
+    doc/init_command.md
+    doc/install_and_upgrade.md
+    doc/list_command.md
+    doc/lock_files.md
+    doc/ls_command.md
+    doc/new_command.md
+    doc/nix_integration.md
+    doc/nonstandard_project_init.md
+    doc/other_resources.md
+    doc/pantry.md
+    doc/path_command.md
+    doc/purge_command.md
+    doc/query_command.md
+    doc/README.md
+    doc/run_command.md
+    doc/runghc_command.md
+    doc/script_command.md
+    doc/scripts.md
+    doc/sdist_command.md
+    doc/setup_command.md
+    doc/shell_autocompletion.md
+    doc/SIGNING_KEY.md
+    doc/Stack_and_VS_Code.md
+    doc/stack_yaml_vs_cabal_package_file.md
+    doc/templates_command.md
+    doc/travis_ci.md
+    doc/uninstall_command.md
+    doc/unpack_command.md
+    doc/update_command.md
+    doc/upgrade_command.md
+    doc/upload_command.md
+    doc/yaml_configuration.md
+    src/setup-shim/StackSetupShim.hs
+    test/package-dump/ghc-7.10.txt
+    test/package-dump/ghc-7.8.4-osx.txt
+    test/package-dump/ghc-7.8.txt
+    test/package-dump/ghc-head.txt
+    src/test/Stack/Untar/test1.tar.gz
+    src/test/Stack/Untar/test2.tar.gz
+    cabal.project
+    cabal.config
+
+source-repository head
+  type: git
+  location: https://github.com/commercialhaskell/stack
+
+custom-setup
+  setup-depends:
+      Cabal <3.10
+    , base >=4.14.3.0 && <5
+    , filepath
+
+flag developer-mode
+  description: By default, should extra developer information be output?
+  manual: True
+  default: False
+
+flag disable-git-info
+  description: Disable compile-time inclusion of current git info in stack
+  manual: True
+  default: False
+
+flag hide-dependency-versions
+  description: Hides dependency versions from 'stack --version', used only by building Stack and the default 'stack.yaml'.  Note to packagers/distributors: DO NOT OVERRIDE THIS FLAG IF YOU ARE BUILDING 'stack' ANY OTHER WAY (e.g. using cabal or from Hackage), as it makes debugging support requests more difficult.
+  manual: True
+  default: False
+
+flag integration-tests
+  description: Run the integration test suite
+  manual: True
+  default: False
+
+flag static
+  description: Pass -static/-pthread to ghc when linking the stack binary.
+  manual: True
+  default: False
+
+flag supported-build
+  description: If false, causes 'stack --version' to issue a warning about the build being unsupported.  Should be True only if building with Stack and the default 'stack.yaml'.  Note to packagers/distributors: DO NOT OVERRIDE THIS FLAG IF YOU ARE BUILDING 'stack' ANY OTHER WAY (e.g. using cabal or from Hackage), as it makes debugging support requests more difficult.
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Control.Concurrent.Execute
+      Data.Attoparsec.Args
+      Data.Attoparsec.Combinators
+      Data.Attoparsec.Interpreter
+      Data.Monoid.Map
+      Network.HTTP.StackClient
+      Options.Applicative.Args
+      Options.Applicative.Builder.Extra
+      Options.Applicative.Complicated
+      Path.CheckInstall
+      Path.Extra
+      Path.Find
+      Stack.Build
+      Stack.Build.Cache
+      Stack.Build.ConstructPlan
+      Stack.Build.Execute
+      Stack.Build.Haddock
+      Stack.Build.Installed
+      Stack.Build.Source
+      Stack.Build.Target
+      Stack.BuildPlan
+      Stack.Clean
+      Stack.Config
+      Stack.Config.Build
+      Stack.Config.Docker
+      Stack.Config.Nix
+      Stack.ConfigCmd
+      Stack.Constants
+      Stack.Constants.Config
+      Stack.Coverage
+      Stack.DefaultColorWhen
+      Stack.Docker
+      Stack.Dot
+      Stack.FileWatch
+      Stack.GhcPkg
+      Stack.Ghci
+      Stack.Ghci.Script
+      Stack.Hoogle
+      Stack.IDE
+      Stack.Init
+      Stack.List
+      Stack.Ls
+      Stack.Lock
+      Stack.New
+      Stack.Nix
+      Stack.Options.BenchParser
+      Stack.Options.BuildMonoidParser
+      Stack.Options.BuildParser
+      Stack.Options.CleanParser
+      Stack.Options.ConfigParser
+      Stack.Options.Completion
+      Stack.Options.DockerParser
+      Stack.Options.DotParser
+      Stack.Options.ExecParser
+      Stack.Options.GhcBuildParser
+      Stack.Options.GhciParser
+      Stack.Options.GhcVariantParser
+      Stack.Options.GlobalParser
+      Stack.Options.HaddockParser
+      Stack.Options.HpcReportParser
+      Stack.Options.LogLevelParser
+      Stack.Options.NewParser
+      Stack.Options.NixParser
+      Stack.Options.PackageParser
+      Stack.Options.ResolverParser
+      Stack.Options.ScriptParser
+      Stack.Options.SDistParser
+      Stack.Options.TestParser
+      Stack.Options.UploadParser
+      Stack.Options.Utils
+      Stack.Package
+      Stack.PackageDump
+      Stack.Path
+      Stack.Prelude
+      Stack.Runners
+      Stack.Script
+      Stack.SDist
+      Stack.Setup
+      Stack.Setup.Installed
+      Stack.SetupCmd
+      Stack.SourceMap
+      Stack.Storage.Project
+      Stack.Storage.User
+      Stack.Storage.Util
+      Stack.Types.Build
+      Stack.Types.CompilerBuild
+      Stack.Types.Compiler
+      Stack.Types.Config
+      Stack.Types.Config.Build
+      Stack.Types.Docker
+      Stack.Types.GhcPkgId
+      Stack.Types.NamedComponent
+      Stack.Types.Nix
+      Stack.Types.Package
+      Stack.Types.PackageName
+      Stack.Types.Resolver
+      Stack.Types.SourceMap
+      Stack.Types.TemplateName
+      Stack.Types.Version
+      Stack.Unpack
+      Stack.Upgrade
+      Stack.Upload
+      System.Info.ShortPathName
+      System.Permissions
+      System.Process.Pager
+      System.Terminal
+      Paths_stack
+  other-modules:
+      Path.Extended
+      Stack.ComponentFile
+      Stack.PackageFile
+      Stack.Types.Cache
+      Stack.Types.Dependency
+      Stack.Types.PackageFile
+      Stack.Types.Storage
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/
+  ghc-options: -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path -fwarn-identities
+  build-depends:
+      Cabal >=3.6.3.0
+    , aeson >=2.0.3.0
+    , annotated-wl-pprint
+    , ansi-terminal
+    , array
+    , async
+    , attoparsec
+    , base >=4.14.3.0 && <5
+    , base64-bytestring
+    , bytestring
+    , casa-client
+    , casa-types
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify >=0.4.1
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hi-file-parser
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-download
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative >=0.17.0.0
+    , pantry >=0.8.1
+    , path
+    , path-io
+    , persistent >=2.13.3.5 && <2.15
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process >=1.6.13.2
+    , project-template
+    , random
+    , retry
+    , rio >=0.1.22.0
+    , rio-prettyprint >=0.1.4.0
+    , semigroups
+    , split
+    , stm
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  default-language: Haskell2010
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-depends:
+        unix
+    build-tool-depends:
+        hsc2hs:hsc2hs
+  if flag(developer-mode)
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
+  else
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
+  if os(windows)
+    other-modules:
+        System.Posix.User
+        System.Uname
+    hs-source-dirs:
+        src/windows/
+  else
+    other-modules:
+        System.Uname
+    hs-source-dirs:
+        src/unix/
+    c-sources:
+        src/unix/cbits/uname.c
+
+executable stack
+  main-is: Main.hs
+  other-modules:
+      BuildInfo
+      Build_stack
+      Paths_stack
+  autogen-modules:
+      Build_stack
+      Paths_stack
+  hs-source-dirs:
+      src/main
+  ghc-options: -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path -threaded -rtsopts
+  build-depends:
+      Cabal >=3.6.3.0
+    , aeson >=2.0.3.0
+    , annotated-wl-pprint
+    , ansi-terminal
+    , array
+    , async
+    , attoparsec
+    , base >=4.14.3.0 && <5
+    , base64-bytestring
+    , bytestring
+    , casa-client
+    , casa-types
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify >=0.4.1
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hi-file-parser
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-download
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative >=0.17.0.0
+    , pantry >=0.8.1
+    , path
+    , path-io
+    , persistent >=2.13.3.5 && <2.15
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process >=1.6.13.2
+    , project-template
+    , random
+    , retry
+    , rio >=0.1.22.0
+    , rio-prettyprint >=0.1.4.0
+    , semigroups
+    , split
+    , stack
+    , stm
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  default-language: Haskell2010
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-depends:
+        unix
+    build-tool-depends:
+        hsc2hs:hsc2hs
+  if flag(developer-mode)
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
+  else
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
+  if flag(static)
+    ld-options: -static -pthread
+  if !(flag(disable-git-info))
+    cpp-options: -DUSE_GIT_INFO
+    build-depends:
+        githash
+      , optparse-simple
+  if flag(hide-dependency-versions)
+    cpp-options: -DHIDE_DEP_VERSIONS
+  if flag(supported-build)
+    cpp-options: -DSUPPORTED_BUILD
+
+executable stack-integration-test
+  main-is: IntegrationSpec.hs
+  other-modules:
+      StackTest
+      Paths_stack
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      test/integration
+      test/integration/lib
+  ghc-options: -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      Cabal >=3.6.3.0
+    , aeson >=2.0.3.0
+    , annotated-wl-pprint
+    , ansi-terminal
+    , array
+    , async
+    , attoparsec
+    , base >=4.14.3.0 && <5
+    , base64-bytestring
+    , bytestring
+    , casa-client
+    , casa-types
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify >=0.4.1
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hi-file-parser
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-download
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative >=0.17.0.0
+    , optparse-generic
+    , pantry >=0.8.1
+    , path
+    , path-io
+    , persistent >=2.13.3.5 && <2.15
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process >=1.6.13.2
+    , project-template
+    , random
+    , retry
+    , rio >=0.1.22.0
+    , rio-prettyprint >=0.1.4.0
+    , semigroups
+    , split
+    , stm
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  default-language: Haskell2010
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-depends:
+        unix
+    build-tool-depends:
+        hsc2hs:hsc2hs
+  if flag(developer-mode)
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
+  else
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
+  if !(flag(integration-tests))
+    buildable: False
+  if flag(static)
+    ld-options: -static -pthread
+
+test-suite stack-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Stack.ArgsSpec
+      Stack.Build.ExecuteSpec
+      Stack.Build.TargetSpec
+      Stack.Config.DockerSpec
+      Stack.ConfigSpec
+      Stack.DotSpec
+      Stack.Ghci.PortableFakePaths
+      Stack.Ghci.ScriptSpec
+      Stack.GhciSpec
+      Stack.LockSpec
+      Stack.NixSpec
+      Stack.PackageDumpSpec
+      Stack.Types.TemplateNameSpec
+      Stack.UploadSpec
+      Paths_stack
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/test
+  ghc-options: -fwrite-ide-info -hiedir=.hie -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path -threaded
+  build-depends:
+      Cabal >=3.6.3.0
+    , QuickCheck
+    , aeson >=2.0.3.0
+    , annotated-wl-pprint
+    , ansi-terminal
+    , array
+    , async
+    , attoparsec
+    , base >=4.14.3.0 && <5
+    , base64-bytestring
+    , bytestring
+    , casa-client
+    , casa-types
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify >=0.4.1
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hi-file-parser
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-download
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative >=0.17.0.0
+    , pantry >=0.8.1
+    , path
+    , path-io
+    , persistent >=2.13.3.5 && <2.15
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process >=1.6.13.2
+    , project-template
+    , random
+    , raw-strings-qq
+    , retry
+    , rio >=0.1.22.0
+    , rio-prettyprint >=0.1.4.0
+    , semigroups
+    , smallcheck
+    , split
+    , stack
+    , stm
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  default-language: Haskell2010
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-depends:
+        unix
+    build-tool-depends:
+        hsc2hs:hsc2hs
+  if flag(developer-mode)
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=True
+  else
+    cpp-options: -DSTACK_DEVELOPER_MODE_DEFAULT=False
+  build-tool-depends:
+      hspec-discover:hspec-discover
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,14 +1,8 @@
-# GHC 9.2.5
-resolver: lts-20.0
+# GHC 9.4.5
+resolver: lts-21.0
 
 packages:
 - .
-
-extra-deps:
-- hpack-0.35.1@sha256:ef816234cbc7b52b0a6c55f7e904b6bc5292b8dd8f2d81ffcbcbc69ab80d75e5,4762
-- pantry-0.8.1@sha256:196111414d2489499fda6213deebcb865bc12285023d5af9bd273bf27cdb185d,4099
-- rio-prettyprint-0.1.4.0@sha256:1f8eb3ead0ef33d3736d53e1de5e9b2c91a0c207cdca23321bd74c401e85f23a,1301
-- fsnotify-0.4.1.0@sha256:44540beabea36aeeef930aa4d5f28091d431904bc9923b6ac4d358831c651235,2854
 
 drop-packages:
 # See https://github.com/commercialhaskell/stack/pull/4712
