diff --git a/cabal2nix.cabal b/cabal2nix.cabal
--- a/cabal2nix.cabal
+++ b/cabal2nix.cabal
@@ -1,5 +1,5 @@
 Name:                   cabal2nix
-Version:                1.56
+Version:                1.57
 Copyright:              Peter Simons, Andres Loeh
 License:                BSD3
 License-File:           LICENSE
@@ -34,8 +34,8 @@
   .
   The only required argument is the path to the cabal file. For example:
   .
-  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.56/cabal2nix.cabal
-  > cabal2nix cabal://cabal2nix-1.56
+  > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.57/cabal2nix.cabal
+  > cabal2nix cabal://cabal2nix-1.57
   .
   If the @--sha256@ option has not been specified, cabal2nix calls
   @nix-prefetch-url@ to determine the hash automatically. This causes
@@ -48,7 +48,7 @@
 Executable cabal2nix
   main-is:              cabal2nix.hs
   hs-source-dirs:       src
-  Build-Depends:        base >= 3 && < 5, regex-posix, pretty, Cabal >= 1.10,
+  Build-Depends:        base >= 3 && < 5, regex-posix, pretty, Cabal >= 1.16,
                         filepath, directory, process, HTTP, hackage-db
   Extensions:           PatternGuards, RecordWildCards, CPP
   Ghc-Options:          -Wall
@@ -68,7 +68,7 @@
 Executable hackage4nix
   main-is:              hackage4nix.hs
   hs-source-dirs:       src
-  Build-Depends:        base >= 3 && < 5, regex-posix, pretty, Cabal >= 1.10,
+  Build-Depends:        base >= 3 && < 5, regex-posix, pretty, Cabal >= 1.16,
                         mtl, containers, directory, filepath, hackage-db
   Extensions:           PatternGuards, RecordWildCards, CPP
   Ghc-Options:          -Wall
diff --git a/src/Cabal2Nix/License.hs b/src/Cabal2Nix/License.hs
--- a/src/Cabal2Nix/License.hs
+++ b/src/Cabal2Nix/License.hs
@@ -17,5 +17,6 @@
 fromCabalLicense MIT                               = Known "self.stdenv.lib.licenses.mit"
 fromCabalLicense PublicDomain                      = Known "self.stdenv.lib.licenses.publicDomain"
 fromCabalLicense AllRightsReserved                 = Known "self.stdenv.lib.licenses.proprietary"
+fromCabalLicense (Apache Nothing)                  = Known "self.stdenv.lib.licenses.asl20"
 fromCabalLicense OtherLicense                      = Unknown Nothing
 fromCabalLicense l                                 = error $ "Cabal2Nix.License.fromCabalLicense: unknown license " ++ show l
diff --git a/src/Cabal2Nix/PostProcess.hs b/src/Cabal2Nix/PostProcess.hs
--- a/src/Cabal2Nix/PostProcess.hs
+++ b/src/Cabal2Nix/PostProcess.hs
@@ -7,13 +7,18 @@
 
 postProcess :: Derivation -> Derivation
 postProcess deriv@(MkDerivation {..})
-  | pname == "alex"             = deriv { buildTools = "perl":buildTools }
+  | pname == "alex" && version < Version [3,1] []
+                                = deriv { buildTools = "perl":buildTools }
+  | pname == "alex" && version >= Version [3,1] []
+                                = deriv { buildTools = "perl":"happy":buildTools }
+  | pname == "cabal2nix"        = deriv { doCheck = True, phaseOverrides = cabal2nixDoCheckHook }
   | 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 == "dns"              = deriv { testTarget = "spec" }
+  | pname == "doctest"          = deriv { runHaddock = True, phaseOverrides = doctestNoHaddock }
   | pname == "editline"         = deriv { extraLibs = "libedit":extraLibs }
   | pname == "epic"             = deriv { extraLibs = "gmp":"boehmgc":extraLibs, buildTools = "happy":buildTools }
   | pname == "ghc-heap-view"    = deriv { phaseOverrides = ghciPostInstall }
@@ -47,6 +52,7 @@
   | pname == "llvm-base"        = deriv { extraLibs = "llvm":extraLibs }
   | pname == "llvm-general"     = deriv { doCheck = False }
   | pname == "llvm-general-pure"= deriv { doCheck = False }
+  | pname == "markdown-unlit"   = deriv { runHaddock = True, phaseOverrides = markdownUnlitNoHaddock }
   | pname == "multiarg"         = deriv { buildDepends = "utf8String":buildDepends }
   | pname == "ncurses"          = deriv { phaseOverrides = ncursesPatchPhase }
   | pname == "OpenAL"           = deriv { extraLibs = "openal":extraLibs }
@@ -112,12 +118,12 @@
   , "  cd .."
   , "  ensureDir \"$out/share/emacs\""
   , "  mv $pname-$version emacs/site-lisp"
-  , "  mv $out/bin/ghc-mod $out/ghc-mod"
+  , "  mv $out/bin/ghc-mod $out/bin/.ghc-mod-wrapped"
   , "  cat - > $out/bin/ghc-mod <<EOF"
-  , "  #!/bin/sh"
+  , "  #! ${self.stdenv.shell}"
   , "  COMMAND=\\$1"
   , "  shift"
-  , "  eval exec $out/ghc-mod \\$COMMAND \\$( ${self.ghc.GHCGetPackages} ${self.ghc.version} | tr \" \" \"\\n\" | tail -n +2 | paste -d \" \" - - | sed 's/.*/-g \"&\"/' | tr \"\\n\" \" \") \"\\$@\""
+  , "  eval exec $out/bin/.ghc-mod-wrapped \\$COMMAND \\$( ${self.ghc.GHCGetPackages} ${self.ghc.version} | tr \" \" \"\\n\" | tail -n +2 | paste -d \" \" - - | sed 's/.*/-g \"&\"/' | tr \"\\n\" \" \") \"\\$@\""
   , "  EOF"
   , "  chmod +x $out/bin/ghc-mod"
   , "'';"
@@ -162,11 +168,12 @@
 
 gitAnnexOverrides :: String
 gitAnnexOverrides = unlines
-  [ "preConfigure = \"patchShebangs .\";"
-  , "installPhase = \"./Setup install\";"
-  , "checkPhase = ''"
+  [ "installPhase = ''"
   , "  export HOME=\"$NIX_BUILD_TOP/tmp\""
   , "  mkdir \"$HOME\""
+  , "  ./Setup install"
+  , "'';"
+  , "checkPhase = ''"
   , "  cp dist/build/git-annex/git-annex git-annex"
   , "  ./git-annex test"
   , "'';"
@@ -213,6 +220,15 @@
   , "  substituteInPlace trifecta.cabal \\"
   , "    --replace \"blaze-html           >= 0.5     && < 0.6,\" \"blaze-html           >= 0.5     && < 0.7,\" \\"
   , "    --replace \"hashable             >= 1.2     && < 1.3,\" \"hashable             >= 1.1     && < 1.3,\" \\"
-  , "    --replace \"fingertree           >= 0.0.1   && < 0.1,\" \"fingertree           >= 0.0.1   && < 0.2,\""
+  , "    --replace \"fingertree           >= 0.0.1   && < 0.1,\" \"fingertree           >= 0.0.1   && < 0.2,\" \\"
+  , "    --replace \"comonad              == 3.*,\"              \"comonad              >= 3       && < 5,\" \\"
+  , "    --replace \"comonad              >= 3       && < 4,\"   \"comonad              >= 3       && < 5,\""
   , "'';"
   ]
+
+doctestNoHaddock, markdownUnlitNoHaddock :: String
+markdownUnlitNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.4\";"
+doctestNoHaddock = markdownUnlitNoHaddock
+
+cabal2nixDoCheckHook :: String
+cabal2nixDoCheckHook = "doCheck = self.stdenv.lib.versionOlder \"7.6\" self.ghc.version;"
