diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+## 1.2.1
+
+* `Data.Conduit.Process.Typed`
+* `withSourceFile`, `withSinkFile`, and `withSinkFileBuilder`
+
 ## 1.2.0
 
 * Added the `posOffset` field to the
diff --git a/Data/Conduit/Binary.hs b/Data/Conduit/Binary.hs
--- a/Data/Conduit/Binary.hs
+++ b/Data/Conduit/Binary.hs
@@ -20,6 +20,7 @@
     , sourceFileRange
     , sourceHandleRange
     , sourceHandleRangeWithBuffer
+    , withSourceFile
       -- ** Sinks
     , sinkFile
     , sinkFileCautious
@@ -27,6 +28,8 @@
     , sinkSystemTempFile
     , sinkHandle
     , sinkIOHandle
+    , withSinkFile
+    , withSinkFileBuilder
       -- ** Conduits
     , conduitFile
     , conduitHandle
@@ -57,9 +60,11 @@
 import qualified Data.ByteString.Lazy as L
 import Data.Conduit
 import Data.Conduit.List (sourceList, consume)
+import qualified Data.Conduit.List as CL
 import Control.Exception (assert, finally)
 import Control.Monad (unless, when)
 import Control.Monad.IO.Class (liftIO, MonadIO)
+import Control.Monad.IO.Unlift
 import Control.Monad.Trans.Resource (allocate, release)
 import Control.Monad.Trans.Class (lift)
 import qualified System.IO as IO
@@ -88,6 +93,7 @@
 import System.IO (hClose, openBinaryTempFile)
 import Control.Exception (throwIO, catch)
 import System.IO.Error (isDoesNotExistError)
+import qualified Data.ByteString.Builder as BB
 
 -- | Stream the contents of a file as binary data.
 --
@@ -589,3 +595,42 @@
 data SinkStorableException = SinkStorableInsufficientBytes
     deriving (Show, Typeable)
 instance Exception SinkStorableException
+
+-- | Like 'IO.withBinaryFile', but provides a source to read bytes from.
+--
+-- @since 1.2.1
+withSourceFile
+  :: (MonadUnliftIO m, MonadIO n)
+  => FilePath
+  -> (ConduitM i ByteString n () -> m a)
+  -> m a
+withSourceFile fp inner =
+  withRunInIO $ \run ->
+  IO.withBinaryFile fp IO.ReadMode $
+  run . inner . sourceHandle
+
+-- | Like 'IO.withBinaryFile', but provides a sink to write bytes to.
+--
+-- @since 1.2.1
+withSinkFile
+  :: (MonadUnliftIO m, MonadIO n)
+  => FilePath
+  -> (ConduitM ByteString o n () -> m a)
+  -> m a
+withSinkFile fp inner =
+  withRunInIO $ \run ->
+  IO.withBinaryFile fp IO.ReadMode $
+  run . inner . sinkHandle
+
+-- | Same as 'withSinkFile', but lets you use a 'BB.Builder'.
+--
+-- @since 1.2.1
+withSinkFileBuilder
+  :: (MonadUnliftIO m, MonadIO n)
+  => FilePath
+  -> (ConduitM BB.Builder o n () -> m a)
+  -> m a
+withSinkFileBuilder fp inner =
+  withRunInIO $ \run ->
+  IO.withBinaryFile fp IO.ReadMode $ \h ->
+  run $ inner $ CL.mapM_ (liftIO . BB.hPutBuilder h)
diff --git a/Data/Conduit/Process/Typed.hs b/Data/Conduit/Process/Typed.hs
new file mode 100644
--- /dev/null
+++ b/Data/Conduit/Process/Typed.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE DataKinds #-}
+
+-- | The "System.Process.Typed" module from @typed-process@, but with
+-- added conduit helpers.
+module Data.Conduit.Process.Typed
+  ( -- * Conduit specific stuff
+    createSink
+  , createSource
+    -- * Generalized functions
+  , withProcess
+  , withProcess_
+    -- * Reexports
+  , module System.Process.Typed
+  ) where
+
+import System.Process.Typed hiding (withProcess, withProcess_)
+import qualified System.Process.Typed as P
+import Data.Conduit (ConduitM)
+import qualified Data.Conduit as C
+import qualified Data.Conduit.Binary as CB
+import Control.Monad.IO.Unlift
+import qualified Data.ByteString as S
+import System.IO (hClose)
+
+-- | Provide input to a process by writing to a conduit.
+--
+-- @since 1.2.1
+createSink :: MonadIO m => StreamSpec 'STInput (ConduitM S.ByteString o m ())
+createSink =
+    (\h -> C.addCleanup (\_ -> liftIO $ hClose h) (CB.sinkHandle h))
+    `fmap` createPipe
+
+-- | Read output from a process by read from a conduit.
+--
+-- @since 1.2.1
+createSource :: MonadIO m => StreamSpec 'STOutput (ConduitM i S.ByteString m ())
+createSource =
+    (\h -> C.addCleanup (\_ -> liftIO $ hClose h) (CB.sourceHandle h))
+    `fmap` createPipe
+
+-- | Same as 'P.withProcess', but generalized to 'MonadUnliftIO'.
+--
+-- @since 1.2.1
+withProcess
+  :: MonadUnliftIO m
+  => ProcessConfig stdin stdout stderr
+  -> (Process stdin stdout stderr -> m a)
+  -> m a
+withProcess pc f = withRunInIO $ \run -> P.withProcess pc (run . f)
+
+-- | Same as 'P.withProcess_', but generalized to 'MonadUnliftIO'.
+--
+-- @since 1.2.1
+withProcess_
+  :: MonadUnliftIO m
+  => ProcessConfig stdin stdout stderr
+  -> (Process stdin stdout stderr -> m a)
+  -> m a
+withProcess_ pc f = withRunInIO $ \run -> P.withProcess pc (run . f)
diff --git a/conduit-extra.cabal b/conduit-extra.cabal
--- a/conduit-extra.cabal
+++ b/conduit-extra.cabal
@@ -1,5 +1,5 @@
 Name:                conduit-extra
-Version:             1.2.0
+Version:             1.2.1
 Synopsis:            Batteries included conduit: adapters for common libraries.
 Description:
     The conduit package itself maintains relative small dependencies. The purpose of this package is to collect commonly used utility functions wrapping other library dependencies, without depending on heavier-weight dependencies. The basic idea is that this package should only depend on haskell-platform packages and conduit.
@@ -33,6 +33,8 @@
                        Data.Conduit.Zlib
   if !os(windows)
       Exposed-modules: Data.Conduit.Network.Unix
+  if impl(ghc >= 7.8)
+      Exposed-modules: Data.Conduit.Process.Typed
 
   if arch(x86_64) || arch(i386)
       -- These architectures are able to perform unaligned memory accesses
@@ -41,9 +43,7 @@
   Build-depends:       base                     >= 4.5          && < 5
                      , conduit                  >= 1.1          && < 1.3
 
-                       -- No version bounds necessary, since they're inherited
-                       -- from conduit.
-                     , bytestring
+                     , bytestring               >= 0.10.2
                      , exceptions
                      , monad-control
                      , text
@@ -61,6 +61,9 @@
                      , resourcet                >= 1.1
                      , stm
                      , streaming-commons        >= 0.1.16
+                     , unliftio-core
+  if impl(ghc >= 7.8)
+    build-depends:     typed-process            >= 0.2
 
   ghc-options:     -Wall
 
