diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.8.19.0
+
+* Add `Data.Yaml.TH` module
+
 ## 0.8.18.7
 
 * Add `O_TRUNC` when opening files
diff --git a/Data/Yaml/TH.hs b/Data/Yaml/TH.hs
new file mode 100644
--- /dev/null
+++ b/Data/Yaml/TH.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE LambdaCase          #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell     #-}
+
+module Data.Yaml.TH
+  ( -- * Decoding
+    decodeFile
+    -- * Re-exports from "Data.Yaml"
+  , Value (..)
+  , Parser
+  , Object
+  , Array
+  , object
+  , array
+  , (.=)
+  , (.:)
+  , (.:?)
+  , (.!=)
+  , FromJSON (..)
+  ) where
+
+import Data.Yaml hiding (decodeFile)
+import Language.Haskell.TH
+import Language.Haskell.TH.Syntax
+
+-- | Decode a @yaml@ file at compile time. Only available on GHC version @7.8.1@
+-- or higher.
+--
+-- @since 0.8.19.0
+--
+-- ==== __Examples__
+--
+-- @
+-- {-\# LANGUAGE TemplateHaskell \#-}
+--
+-- config :: Config
+-- config = $$('decodeFile' "config.yaml")
+-- @
+decodeFile :: forall a. (Lift a, FromJSON a) => FilePath -> Q (TExp a)
+decodeFile path = do
+  addDependentFile path
+  runIO (decodeFileEither path) >>= \case
+    Left err -> fail (prettyPrintParseException err)
+    Right x -> fmap TExp (lift (x :: a))
diff --git a/yaml.cabal b/yaml.cabal
--- a/yaml.cabal
+++ b/yaml.cabal
@@ -1,5 +1,5 @@
 name:            yaml
-version:         0.8.18.7
+version:         0.8.19.0
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>, Anton Ageev <antage@gmail.com>,Kirill Simonov
@@ -64,9 +64,12 @@
                      Data.Yaml.Aeson
                      Data.Yaml.Builder
                      Data.Yaml.Config
-                     Data.Yaml.Pretty
-                     Data.Yaml.Parser
                      Data.Yaml.Include
+                     Data.Yaml.Parser
+                     Data.Yaml.Pretty
+    if impl(ghc >= 7.8.1)
+      build-depends: template-haskell >= 2.8.0.0
+      exposed-modules: Data.Yaml.TH
     other-modules:
                      Data.Yaml.Internal
     ghc-options:     -Wall
