diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for horizon-gen-nix
 
+## 0.6
+
+* Support horizon-spec 0.6
+* Compiler flag now correctly preprocesses cabal files.
+
 ## v0.5
 
 * Support horizon-spec 0.5
diff --git a/horizon-gen-nix.cabal b/horizon-gen-nix.cabal
--- a/horizon-gen-nix.cabal
+++ b/horizon-gen-nix.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               horizon-gen-nix
-version:            0.5
+version:            0.6
 synopsis:           Generate nix expressions from horizon-spec definitions
 description:        Generate nix expressions from horizon-spec definitions
 category:           Package Management, Nix
@@ -49,7 +49,7 @@
     , directory
     , distribution-nixpkgs
     , either
-    , horizon-spec          >=0.4  && <0.6
+    , horizon-spec          >=0.6  && <0.7
     , language-nix
     , lens
     , optparse-applicative
diff --git a/src/Horizon/Gen/Nix.hs b/src/Horizon/Gen/Nix.hs
--- a/src/Horizon/Gen/Nix.hs
+++ b/src/Horizon/Gen/Nix.hs
@@ -6,7 +6,9 @@
   , makeOverlay
   ) where
 
+import qualified Data.Text               as T (unpack)
 import           Dhall                   (auto, inputFile)
+import           Distribution.Parsec     (eitherParsec)
 import           Horizon.Gen.Nix.Options (HorizonOptions (MkHorizonOptions),
                                           fromInputFile, horizonGenNixOptsInfo,
                                           optInputFile)
@@ -15,7 +17,8 @@
 import           Horizon.Spec            (HorizonExport (MakeOverlay, MakePackageSet),
                                           OverlayExportSettings (MkOverlayExportSettings),
                                           PackageSetExportSettings (MkPackageSetExportSettings),
-                                          fromOverlay, packages)
+                                          compiler, fromCompiler, fromOverlay,
+                                          packages)
 import           Options.Applicative     (execParser)
 import           Path                    (toFilePath)
 import           Path.Dhall              ()
@@ -23,13 +26,21 @@
 
 makeMakePackageSet :: PackageSetExportSettings -> IO ()
 makeMakePackageSet (MkPackageSetExportSettings d f xs) = do
-  writeHaskellPackages d (packages xs)
-  writeMakePackageSet d f xs
+  case eitherParsec (T.unpack $ fromCompiler $ compiler xs) of
+    Left e -> putStrLn e
+    Right x -> do
+      writeHaskellPackages d x (packages xs)
+      writeMakePackageSet d f xs
 
 makeOverlay :: OverlayExportSettings -> IO ()
-makeOverlay (MkOverlayExportSettings d f xs) = do
-  writeHaskellPackages d (fromOverlay xs)
-  writeOverlay d f xs
+makeOverlay (MkOverlayExportSettings d f xs) = let
+  xs' = fromOverlay xs
+  in
+  case eitherParsec (T.unpack $ fromCompiler $ compiler xs') of
+    Left e -> putStrLn e
+    Right x -> do
+      writeHaskellPackages d x (packages xs')
+      writeOverlay d f xs
 
 processHorizonExport :: HorizonExport -> IO ()
 processHorizonExport (MakePackageSet settings) = makeMakePackageSet settings
diff --git a/src/Horizon/Gen/Nix/Cabal2Nix/Options.hs b/src/Horizon/Gen/Nix/Cabal2Nix/Options.hs
--- a/src/Horizon/Gen/Nix/Cabal2Nix/Options.hs
+++ b/src/Horizon/Gen/Nix/Cabal2Nix/Options.hs
@@ -32,7 +32,8 @@
                                                                  optUrl)
 import           Control.Lens                                   ((#))
 import qualified Data.Text                                      as T
-import           Distribution.Compiler                          (buildCompilerId)
+import           Distribution.Compiler                          (CompilerId,
+                                                                 buildCompilerId)
 import           Distribution.Nixpkgs.Fetch                     (FetchSubmodules (FetchSubmodules))
 import           Distribution.Nixpkgs.Haskell.PackageSourceSpec (HpackUse (NoHpack))
 import           Distribution.System                            (buildPlatform)
@@ -85,15 +86,15 @@
   , optFetchSubmodules = FetchSubmodules
   }
 
-haskellPackageToCabal2NixOptions :: HaskellPackage -> Options
-haskellPackageToCabal2NixOptions (MkHaskellPackage x ms _) =
+haskellPackageToCabal2NixOptions :: CompilerId -> HaskellPackage -> Options
+haskellPackageToCabal2NixOptions c (MkHaskellPackage x ms _) =
   applyModifiersToCabal2NixOptions ms $ (
     case x of
       FromHackage z -> applyHackageSourceToCabal2NixOptions z
       FromGit z     -> applyGitSourceToCabal2NixOptions z
       FromLocal z   -> applyLocalSourceToCabal2NixOptions z
       FromTarball z -> applyTarballSourceToCabal2NixOptions z
-    ) mkDefaultCabal2NixOptions
+    ) mkDefaultCabal2NixOptions { optCompiler = c }
 
 applyGitSourceToCabal2NixOptions
   :: GitSource
diff --git a/src/Horizon/Gen/Nix/Writers.hs b/src/Horizon/Gen/Nix/Writers.hs
--- a/src/Horizon/Gen/Nix/Writers.hs
+++ b/src/Horizon/Gen/Nix/Writers.hs
@@ -13,6 +13,7 @@
 import           Control.Monad                           (forM_, unless)
 import           Data.Map                                (keys, toList)
 import qualified Data.Text                               as T
+import           Distribution.Compiler                   (CompilerId)
 import           Distribution.Nixpkgs.Haskell.Derivation (Derivation,
                                                           benchmarkDepends,
                                                           testDepends)
@@ -46,7 +47,7 @@
 
 
 writeOverlay :: PackagesDir -> OverlayFile -> Overlay -> IO ()
-writeOverlay (MkPackagesDir d) (MkOverlayFile f) (MkOverlay (MkPackageList xs)) = withFile (toFilePath f) WriteMode $ \h -> do
+writeOverlay (MkPackagesDir d) (MkOverlayFile f) (MkOverlay (MkPackageSet _ (MkPackageList xs))) = withFile (toFilePath f) WriteMode $ \h -> do
   hPutStrLn h "{ pkgs, ... }:"
   hPutStrLn h ""
   hPutStrLn h "final: prev: with pkgs.haskell.lib; {"
@@ -80,14 +81,14 @@
 writeDerivation :: Path b File -> Derivation -> IO ()
 writeDerivation f = writeFile (toFilePath f) . show . prettyDerivation
 
-writeHaskellPackage :: PackagesDir -> Name -> HaskellPackage -> IO ()
-writeHaskellPackage (MkPackagesDir d) (MkName f) y = do
-  let o = haskellPackageToCabal2NixOptions y
+writeHaskellPackage :: PackagesDir -> CompilerId -> Name -> HaskellPackage -> IO ()
+writeHaskellPackage (MkPackagesDir d) c (MkName f) y = do
+  let o = haskellPackageToCabal2NixOptions c y
   createDirectoryIfMissing True (toFilePath d)
   f' <- parseRelFile  $ T.unpack (f <> ".nix")
   let j = d </> f'
   q  <- doesFileExist $ toFilePath j
   unless q $ writeCabal2Nix j (modifiers y) o
 
-writeHaskellPackages :: PackagesDir -> PackageList -> IO ()
-writeHaskellPackages d = mapM_ (uncurry $ writeHaskellPackage d) . toList . fromPackageList
+writeHaskellPackages :: PackagesDir -> CompilerId -> PackageList -> IO ()
+writeHaskellPackages d c = mapM_ (uncurry $ writeHaskellPackage d c) . toList . fromPackageList
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -19,6 +19,7 @@
 outputFilesOverlayRel =
   [ $(mkRelFile "overlay.nix")
   , $(mkRelFile "pkgs/lens.nix")
+  , $(mkRelFile "pkgs/hashable.nix")
   , $(mkRelFile "pkgs/Cabal-syntax.nix")
   , $(mkRelFile "pkgs/network-mux.nix")
   ]
@@ -27,6 +28,7 @@
 outputFilesPackageSetRel =
   [ $(mkRelFile "initial-packages.nix")
   , $(mkRelFile "pkgs/lens.nix")
+  , $(mkRelFile "pkgs/hashable.nix")
   , $(mkRelFile "pkgs/Cabal-syntax.nix")
   , $(mkRelFile "pkgs/network-mux.nix")
   ]
