diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+## Changes in 0.29.7
+  - Expose more stuff from `Hpack.Yaml` so that it can be used by third parties
+
 ## Changes in 0.29.6
   - Add `spec-version` (see #300)
 
diff --git a/hpack.cabal b/hpack.cabal
--- a/hpack.cabal
+++ b/hpack.cabal
@@ -1,13 +1,13 @@
 cabal-version: >= 1.10
 
--- This file has been generated from package.yaml by hpack version 0.29.5.
+-- This file has been generated from package.yaml by hpack version 0.29.6.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: d8b2a418f831494685f8d946c109f4cf86371e5f1a41613bdd538aa6ed27817c
+-- hash: 8d1eb0679326dc7c31be647812822700dc8277a27737239f5a704e45f367abdf
 
 name:           hpack
-version:        0.29.6
+version:        0.29.7
 synopsis:       A modern format for Haskell packages
 description:    See README at <https://github.com/sol/hpack#readme>
 category:       Development
diff --git a/src/Data/Aeson/Config/FromValue.hs b/src/Data/Aeson/Config/FromValue.hs
--- a/src/Data/Aeson/Config/FromValue.hs
+++ b/src/Data/Aeson/Config/FromValue.hs
@@ -28,6 +28,8 @@
 , withNumber
 , withBool
 
+, parseArray
+
 , (.:)
 , (.:?)
 
@@ -90,10 +92,13 @@
   fromValue value = liftParser (parseJSON value) >>= traverse fromValue
 
 instance FromValue a => FromValue [a] where
-  fromValue = withArray $ zipWithM (parseIndexed fromValue) [0..] . V.toList
-    where
-      parseIndexed :: (Value -> Parser a) -> Int -> Value -> Parser a
-      parseIndexed p n value = p value <?> Index n
+  fromValue = withArray (parseArray fromValue)
+
+parseArray :: (Value -> Parser a) -> Array -> Parser [a]
+parseArray f = zipWithM (parseIndexed f) [0..] . V.toList
+  where
+    parseIndexed :: (Value -> Parser a) -> Int -> Value -> Parser a
+    parseIndexed p n value = p value <?> Index n
 
 instance FromValue a => FromValue (Map String a) where
   fromValue = withObject $ \ o -> do
diff --git a/src/Hpack/Yaml.hs b/src/Hpack/Yaml.hs
--- a/src/Hpack/Yaml.hs
+++ b/src/Hpack/Yaml.hs
@@ -13,10 +13,12 @@
 -- tool that supports Hpack (e.g. @stack@ or @cabal2nix@).
 
   decodeYaml
+, module Data.Aeson.Config.FromValue
 ) where
 
 import           Data.Yaml hiding (decodeFile, decodeFileEither)
 import           Data.Yaml.Include
+import           Data.Aeson.Config.FromValue
 
 decodeYaml :: FilePath -> IO (Either String Value)
 decodeYaml file = do
diff --git a/test/EndToEndSpec.hs b/test/EndToEndSpec.hs
--- a/test/EndToEndSpec.hs
+++ b/test/EndToEndSpec.hs
@@ -1450,7 +1450,7 @@
     content = [i|
 executable #{name}
   other-modules:
-      Paths_#{name}
+      Paths_foo
 #{indentBy 2 $ unindent e}
   default-language: Haskell2010
 |]
diff --git a/test/Hpack/Syntax/DependencySpec.hs b/test/Hpack/Syntax/DependencySpec.hs
--- a/test/Hpack/Syntax/DependencySpec.hs
+++ b/test/Hpack/Syntax/DependencySpec.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE OverloadedLists #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE ConstraintKinds #-}
 module Hpack.Syntax.DependencySpec (spec) where
 
 import           Helper
