diff --git a/cabal2nix.cabal b/cabal2nix.cabal
--- a/cabal2nix.cabal
+++ b/cabal2nix.cabal
@@ -1,5 +1,5 @@
 Name:                   cabal2nix
-Version:                1.65
+Version:                1.66
 Copyright:              Peter Simons, Andres Loeh
 License:                BSD3
 License-File:           LICENSE
@@ -10,7 +10,7 @@
 Synopsis:               Convert Cabal files into Nix build instructions
 Cabal-Version:          >= 1.8
 Build-Type:             Custom
-Tested-With:            GHC >= 6.10.4 && <= 7.8.2
+Tested-With:            GHC >= 6.10.4 && <= 7.8.3
 Data-files:             README.md
 Description:
   The @cabal2nix@ utility converts Cabal files into Nix build instructions. The
@@ -18,6 +18,7 @@
   .
   > Usage: cabal2nix [options] url-to-cabal-file
   >   -h             --help                   show this help text
+  >                  --hackage-db=FILEPATH    path to the local hackage db in tar format
   >                  --sha256=HASH            sha256 hash of source tarball
   >   -m MAINTAINER  --maintainer=MAINTAINER  maintainer of this package (may be specified multiple times)
   >   -p PLATFORM    --platform=PLATFORM      supported build platforms (may be specified multiple times)
@@ -36,8 +37,8 @@
   .
   The only required argument is the path to the cabal file. For example:
   .
-  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.65/cabal2nix.cabal
-  > cabal2nix cabal://cabal2nix-1.65
+  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.66/cabal2nix.cabal
+  > cabal2nix cabal://cabal2nix-1.66
   .
   If the @--sha256@ option has not been specified, cabal2nix calls
   @nix-prefetch-url@ to determine the hash automatically. This causes
diff --git a/src/Cabal2Nix/Hackage.hs b/src/Cabal2Nix/Hackage.hs
--- a/src/Cabal2Nix/Hackage.hs
+++ b/src/Cabal2Nix/Hackage.hs
@@ -57,21 +57,21 @@
   where
     version = showVersion version'
 
-readCabalFile :: FilePath -> IO String
-readCabalFile path
+readCabalFile :: Maybe FilePath -> FilePath -> IO String
+readCabalFile hackageDbPath path
   | "cabal://" `isPrefixOf` path = do let pid p = fromJust $ simpleParse p
                                           packageName = drop 8 path
                                       case versionBranch $ pkgVersion $ pid packageName of
                                         [] -> do
-                                          packageDescription <- DB.lookup packageName `fmap` DB.readHackage
+                                          packageDescription <- DB.lookup packageName `fmap` maybe DB.readHackage DB.readHackage' hackageDbPath
                                           case packageDescription of
                                             Just d -> do
                                               let version = showVersion $ last $ DB.keys d
-                                              readCabalFile $ hackagePath (pid $ packageName ++ "-" ++ version) Cabal
+                                              readCabalFile Nothing $ hackagePath (pid $ packageName ++ "-" ++ version) Cabal
                                             Nothing -> error "No such package"
-                                        _  -> readCabalFile $ hackagePath (pid packageName) Cabal
+                                        _  -> readCabalFile Nothing $ hackagePath (pid packageName) Cabal
   | "http://"  `isPrefixOf` path = fetchUrl path
-  | "file://"  `isPrefixOf` path = readCabalFile (drop 7 path)
+  | "file://"  `isPrefixOf` path = readCabalFile Nothing (drop 7 path)
   | otherwise                    = readFile path
 
 fetchUrl :: String -> IO String
diff --git a/src/Cabal2Nix/PostProcess.hs b/src/Cabal2Nix/PostProcess.hs
--- a/src/Cabal2Nix/PostProcess.hs
+++ b/src/Cabal2Nix/PostProcess.hs
@@ -265,7 +265,7 @@
 eitherNoHaddock :: String
 eitherNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.6\";"
 
-httpNoHaddock, quickCheckNoHaddock, tarNoHaddock :: String
+httpNoHaddock, quickCheckNoHaddock, tarNoHaddock, transformersNoHaddock :: String
 httpNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"6.11\";"
 quickCheckNoHaddock = httpNoHaddock
 tarNoHaddock = httpNoHaddock
diff --git a/src/cabal2nix.hs b/src/cabal2nix.hs
--- a/src/cabal2nix.hs
+++ b/src/cabal2nix.hs
@@ -25,6 +25,7 @@
   , optDoCheck :: Bool
   , optJailbreak :: Bool
   , optHyperlinkSource :: Bool
+  , optHackageDb :: Maybe FilePath
   }
   deriving (Show)
 
@@ -39,11 +40,13 @@
   , optDoCheck = True
   , optJailbreak = False
   , optHyperlinkSource = True
+  , optHackageDb = Nothing
   }
 
 options :: [OptDescr (Configuration -> Configuration)]
 options =
   [ Option "h" ["help"]       (NoArg (\o -> o { optPrintHelp = True }))                                  "show this help text"
+  , Option ""  ["hackage-db"] (ReqArg (\x o -> o { optHackageDb = Just x }) "FILEPATH")                  "path to the local hackage db in tar format"
   , Option ""  ["sha256"]     (ReqArg (\x o -> o { optSha256 = Just x }) "HASH")                         "sha256 hash of source tarball"
   , Option "m" ["maintainer"] (ReqArg (\x o -> o { optMaintainer = x : optMaintainer o }) "MAINTAINER")  "maintainer of this package (may be specified multiple times)"
   , Option "p" ["platform"]   (ReqArg (\x o -> o { optPlatform = x : optPlatform o }) "PLATFORM")        "supported build platforms (may be specified multiple times)"
@@ -79,7 +82,7 @@
   when (optPrintHelp cfg) (putStr usage >> exitSuccess)
   when (length args /= 1) (cmdlineError "*** exactly one url-to-cabal-file must be specified\n")
 
-  cabal' <- fmap parsePackageDescription (readCabalFile (head args))
+  cabal' <- fmap parsePackageDescription (readCabalFile (optHackageDb cfg) (head args))
   cabal <- case cabal' of
              ParseOk _ a -> return a
              ParseFailed err -> do
