diff --git a/cabal2nix.cabal b/cabal2nix.cabal
--- a/cabal2nix.cabal
+++ b/cabal2nix.cabal
@@ -1,5 +1,5 @@
 Name:                   cabal2nix
-Version:                1.39
+Version:                1.40
 Copyright:              Peter Simons, Andres Loeh
 License:                BSD3
 License-File:           LICENSE
@@ -32,8 +32,8 @@
   .
   The only required argument is the path to the cabal file. For example:
   .
-  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.39/cabal2nix.cabal
-  > cabal2nix cabal://cabal2nix-1.39
+  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.40/cabal2nix.cabal
+  > cabal2nix cabal://cabal2nix-1.40
   .
   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/Flags.hs b/src/Cabal2Nix/Flags.hs
--- a/src/Cabal2Nix/Flags.hs
+++ b/src/Cabal2Nix/Flags.hs
@@ -6,10 +6,11 @@
 configureCabalFlags :: PackageIdentifier -> FlagAssignment
 configureCabalFlags (PackageIdentifier (PackageName name) _)
  | name == "accelerate-examples"= [disable "opencl"]
+ | name == "pandoc"             = [enable "blaze_html_0_5"]
  | name == "haskeline"          = [enable "terminfo"]
  | name == "reactive-banana-wx" = [disable "buildExamples"]
  | name == "xmobar"             = [enable "with_xft", enable "with_iwlib"]
- | name == "xmonad-extras"      = [disable "with_hlist"]
+ | name == "xmonad-extras"      = [disable "with_hlist", enable "with_split", enable "with_parsec"]
  | otherwise                    = []
 
 enable :: String -> (FlagName,Bool)
diff --git a/src/Cabal2Nix/Generate.hs b/src/Cabal2Nix/Generate.hs
--- a/src/Cabal2Nix/Generate.hs
+++ b/src/Cabal2Nix/Generate.hs
@@ -27,6 +27,7 @@
   , configureFlags = []
   , cabalFlags     = configureCabalFlags pkg
   , runHaddock     = True
+  , jailbreak      = False
   , phaseOverrides = ""
   , metaSection    = Meta
                    { homepage    = Cabal.homepage descr
diff --git a/src/Cabal2Nix/Name.hs b/src/Cabal2Nix/Name.hs
--- a/src/Cabal2Nix/Name.hs
+++ b/src/Cabal2Nix/Name.hs
@@ -40,6 +40,7 @@
 libNixName "libglade-2.0"       = return "libglade"
 libNixName "libidn"             = return "idn"
 libNixName "librsvg-2.0"        = return "librsvg"
+libNixName "libxml-2.0"         = return "libxml2"
 libNixName "libzip"             = return "libzip"
 libNixName "m"                  = []  -- in stdenv
 libNixName "pangocairo"         = return "pango"
diff --git a/src/Cabal2Nix/PostProcess.hs b/src/Cabal2Nix/PostProcess.hs
--- a/src/Cabal2Nix/PostProcess.hs
+++ b/src/Cabal2Nix/PostProcess.hs
@@ -8,8 +8,11 @@
 postProcess :: Derivation -> Derivation
 postProcess deriv@(MkDerivation {..})
   | pname == "alex"             = deriv { buildTools = "perl":buildTools }
+  | pname == "cabal-install" && version >= (Version [0,14] [])
+                                = deriv { phaseOverrides = cabalInstallPostInstall }
   | pname == "cairo"            = deriv { extraLibs = "pkgconfig":"libc":"cairo":"zlib":extraLibs }
   | pname == "cuda"             = deriv { phaseOverrides = cudaConfigurePhase, extraLibs = "cudatoolkit":"nvidia_x11":"self.stdenv.gcc":extraLibs }
+  | pname == "darcs"            = deriv { phaseOverrides = darcsInstallPostInstall }
   | pname == "editline"         = deriv { extraLibs = "libedit":extraLibs }
   | pname == "epic"             = deriv { extraLibs = "gmp":"boehmgc":extraLibs, buildTools = "happy":buildTools }
   | pname == "ghc-mod"          = deriv { phaseOverrides = ghcModPostInstall, buildTools = "emacs":buildTools }
@@ -83,19 +86,35 @@
 
 ghcModPostInstall :: String
 ghcModPostInstall = unlines
-                    [ "postInstall = ''"
-                    , "    cd $out/share/$pname-$version"
-                    , "    make"
-                    , "    rm Makefile"
-                    , "    cd .."
-                    , "    ensureDir \"$out/share/emacs\""
-                    , "    mv $pname-$version emacs/site-lisp"
-                    , "  '';"
-                    ]
+  [ "postInstall = ''"
+  , "    cd $out/share/$pname-$version"
+  , "    make"
+  , "    rm Makefile"
+  , "    cd .."
+  , "    ensureDir \"$out/share/emacs\""
+  , "    mv $pname-$version emacs/site-lisp"
+  , "  '';"
+  ]
 
 wxcPostInstall :: String
 wxcPostInstall = unlines
-                 [ "postInstall = ''"
-                 , "    cp -v dist/build/libwxc.so.${self.version} $out/lib/libwxc.so"
-                 , "  '';"
-                 ]
+  [ "postInstall = ''"
+  , "    cp -v dist/build/libwxc.so.${self.version} $out/lib/libwxc.so"
+  , "  '';"
+  ]
+
+cabalInstallPostInstall :: String
+cabalInstallPostInstall = unlines
+  [ "postInstall = ''"
+  , "  mkdir $out/etc"
+  , "  mv bash-completion $out/etc/bash_completion.d"
+  , "'';"
+  ]
+
+darcsInstallPostInstall :: String
+darcsInstallPostInstall = unlines
+  [ "postInstall = ''"
+  , "  mkdir -p $out/etc/bash_completion.d"
+  , "  mv contrib/darcs_completion $out/etc/bash_completion.d/darcs"
+  , "'';"
+  ]
diff --git a/src/Distribution/NixOS/Derivation/Cabal.hs b/src/Distribution/NixOS/Derivation/Cabal.hs
--- a/src/Distribution/NixOS/Derivation/Cabal.hs
+++ b/src/Distribution/NixOS/Derivation/Cabal.hs
@@ -53,6 +53,7 @@
   , configureFlags      :: [String]
   , cabalFlags          :: FlagAssignment
   , runHaddock          :: Bool
+  , jailbreak           :: Bool
   , phaseOverrides      :: String
   , metaSection         :: Meta
   }
@@ -81,6 +82,7 @@
     , listattr "pkgconfigDepends" (pkgConfDeps deriv)
     , onlyIf renderedFlags $ attr "configureFlags" $ doubleQuotes (sep renderedFlags)
     , boolattr "noHaddock" (not (runHaddock deriv)) (not (runHaddock deriv))
+    , boolattr "jailbreak" (jailbreak deriv) (jailbreak deriv)
     , onlyIf (phaseOverrides deriv) $ vcat ((map text . lines) (phaseOverrides deriv))
     , disp (metaSection deriv)
     ]
@@ -107,6 +109,7 @@
   , plats     <- buf `regsubmatch` "platforms *= *([^;]+);"
   , maint     <- buf `regsubmatch` "maintainers *= *\\[([^\"]+)]"
   , noHaddock <- buf `regsubmatch` "noHaddock *= *(true|false) *;"
+  , jailBreak <- buf `regsubmatch` "jailbreak *= *(true|false) *;"
               = Just MkDerivation
                   { pname          = name
                   , version        = vers
@@ -119,8 +122,8 @@
                   , pkgConfDeps    = []
                   , configureFlags = []
                   , cabalFlags     = []
-                  , runHaddock     = case noHaddock of "true":[] -> False
-                                                       _         -> True
+                  , runHaddock     = noHaddock /= ["true"]
+                  , jailbreak      = jailBreak == ["true"]
                   , phaseOverrides = ""
                   , metaSection  = Meta
                                    { homepage    = ""
diff --git a/src/Hackage4Nix.hs b/src/Hackage4Nix.hs
--- a/src/Hackage4Nix.hs
+++ b/src/Hackage4Nix.hs
@@ -114,7 +114,7 @@
         when regenerate $ do
           msgDebug ("re-generate " ++ path)
           pkg <- getCabalPackage (pname deriv) (version deriv)
-          let deriv'  = (cabal2nix pkg) { sha256 = sha256 deriv, runHaddock = runHaddock deriv }
+          let deriv'  = (cabal2nix pkg) { sha256 = sha256 deriv, runHaddock = runHaddock deriv, jailbreak = jailbreak deriv }
               meta    = metaSection deriv'
               plats'  = if null plats then platforms meta else plats
               deriv'' = deriv' { metaSection = meta
@@ -202,7 +202,9 @@
 -- Packages that we cannot parse.
 
 badPackagePaths :: [FilePath]
-badPackagePaths = ["haskell-platform/2011.2.0.1.nix","haskell-platform/2011.4.0.0.nix","haskell-platform/2012.2.0.0.nix"]
+badPackagePaths = [ "haskell-platform/2011.2.0.1.nix", "haskell-platform/2011.4.0.0.nix"
+                  , "haskell-platform/2012.2.0.0.nix", "haskell-platform/2012.4.0.0.nix"
+                  ]
 
 -- Packages that we cannot regenerate automatically yet. This list
 -- should be empty.
