diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.4.13
+
+* Enable stack with yesod keter [#1041](https://github.com/yesodweb/yesod/pull/1041)
+
 ## 1.4.12
 
 * Devel server: have to type quit to quit
diff --git a/Devel.hs b/Devel.hs
--- a/Devel.hs
+++ b/Devel.hs
@@ -88,14 +88,14 @@
 lockFile =  "yesod-devel/devel-terminate"
 
 writeLock :: DevelOpts -> IO ()
-writeLock opts = do
+writeLock _opts = do
     createDirectoryIfMissing True "yesod-devel"
     writeFile lockFile ""
     createDirectoryIfMissing True "dist" -- for compatibility with old devel.hs
     writeFile "dist/devel-terminate" ""
 
 removeLock :: DevelOpts -> IO ()
-removeLock opts = do
+removeLock _opts = do
     removeFileIfExists lockFile
     removeFileIfExists "dist/devel-terminate"  -- for compatibility with old devel.hs
 
@@ -138,6 +138,8 @@
     , proxyTimeout = 10
     , useReverseProxy = True
     , terminateWith = TerminateOnEnter
+    , develConfigOpts = []
+    , develEnv = Nothing
     }
 
 cabalProgram :: DevelOpts -> FilePath
@@ -197,7 +199,7 @@
     putStrLn ""
     loop (race_ httpProxy httpsProxy) `Ex.catch` \e -> do
         print (e :: Ex.SomeException)
-        exitFailure
+        _ <- exitFailure
         Ex.throwIO e -- heh, just for good measure
   where
     loop proxies = forever $ do
@@ -524,7 +526,7 @@
 
 lookupLdAr' :: IO (Maybe (FilePath, FilePath))
 lookupLdAr' = do
-#if MIN_VERSION_Cabal(1,22,0)
+#if MIN_VERSION_Cabal(1,18,0)
   (_, _, pgmc) <- D.configCompilerEx (Just D.GHC) Nothing Nothing D.defaultProgramConfiguration D.silent
 #else
   (_, pgmc) <- D.configCompiler (Just D.GHC) Nothing Nothing D.defaultProgramConfiguration D.silent
diff --git a/HsFile.hs b/HsFile.hs
--- a/HsFile.hs
+++ b/HsFile.hs
@@ -3,9 +3,9 @@
 module HsFile (mkHsFile) where
 import Text.ProjectTemplate (createTemplate)
 import Data.Conduit 
-    ( ($$), (=$), ConduitM, awaitForever, yield, Source )
+    ( ($$), (=$), awaitForever)
 import Data.Conduit.Filesystem (sourceDirectory)
-import Control.Monad.Trans.Resource (ResourceT, runResourceT)
+import Control.Monad.Trans.Resource (runResourceT)
 import qualified Data.Conduit.List as CL
 import qualified Data.ByteString as BS
 import Control.Monad.IO.Class (liftIO)
diff --git a/Keter.hs b/Keter.hs
--- a/Keter.hs
+++ b/Keter.hs
@@ -11,7 +11,6 @@
 import Control.Monad
 import System.Directory hiding (findFiles)
 import Data.Maybe (mapMaybe)
-import System.Directory (removeDirectoryRecursive)
 import System.FilePath ((</>))
 import qualified Codec.Archive.Tar as Tar
 import Control.Exception
@@ -73,10 +72,12 @@
         collapse' (x:xs) = x : collapse' xs
         collapse' [] = []
 
-    unless noBuild $ do
-        run cabal ["clean"]
-        run cabal ["configure"]
-        run cabal ["build"]
+    unless noBuild $ if elem "stack.yaml" files
+        then do run "stack" ["clean"]
+                createDirectoryIfMissing True "./dist/bin"
+                run "stack"
+                    (words "--local-bin-path ./dist/bin build --copy-bins")
+        else mapM_ (\x -> run cabal [x]) ["clean", "configure", "build"]
 
     _ <- try' $ removeDirectoryRecursive "static/tmp"
 
diff --git a/ghcwrapper.hs b/ghcwrapper.hs
--- a/ghcwrapper.hs
+++ b/ghcwrapper.hs
@@ -9,7 +9,7 @@
 import           Data.Maybe                        (fromMaybe)
 
 import           Distribution.Compiler             (CompilerFlavor (..))
-import           Distribution.Simple.Configure     (configCompiler)
+import qualified Distribution.Simple.Configure as D
 import           Distribution.Simple.Program       (arProgram,
                                                     defaultProgramConfiguration,
                                                     ghcProgram, ldProgram,
@@ -44,7 +44,11 @@
 
 runProgram :: Program -> [String] -> IO ExitCode
 runProgram pgm args = do
-  (comp, pgmc) <- configCompiler (Just GHC) Nothing Nothing defaultProgramConfiguration silent
+#if MIN_VERSION_Cabal(1,18,0)
+  (_, comp, pgmc) <- D.configCompilerEx (Just GHC) Nothing Nothing defaultProgramConfiguration silent
+#else
+  (comp, pgmc) <- D.configCompiler (Just GHC) Nothing Nothing defaultProgramConfiguration silent
+#endif
   pgmc' <- configureAllKnownPrograms silent pgmc
   case lookupProgram pgm pgmc' of
     Nothing -> do
diff --git a/yesod-bin.cabal b/yesod-bin.cabal
--- a/yesod-bin.cabal
+++ b/yesod-bin.cabal
@@ -1,5 +1,5 @@
 name:            yesod-bin
-version:         1.4.12
+version:         1.4.13
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
