diff --git a/lib/StackageToHackage/Hackage.hs b/lib/StackageToHackage/Hackage.hs
--- a/lib/StackageToHackage/Hackage.hs
+++ b/lib/StackageToHackage/Hackage.hs
@@ -11,7 +11,7 @@
   ) where
 
 import           Data.List                      (sort)
-import           Data.List.Extra                (nubOn)
+import           Data.List.Extra                (nubOrdOn)
 import           Data.List.NonEmpty             (NonEmpty)
 import qualified Data.List.NonEmpty             as NEL
 import qualified Data.Map.Strict                as M
@@ -65,7 +65,7 @@
 genProject stack Resolver{compiler, deps} = Project
   (fromMaybe (Ghc "ghc") compiler)
   (localDirs stack)
-  (nubOn repo $ mapMaybe pickGit deps)
+  (nubOrdOn repo $ mapMaybe pickGit deps)
   where
     pickGit (Hackage _ )  = Nothing
     pickGit (SourceDep g) = Just g
@@ -76,17 +76,17 @@
 -- way that we exclude self packages.
 printFreeze :: Freeze -> Text
 printFreeze (Freeze deps (Flags flags)) =
-  T.concat [ "constraints:\n    ", constraints, "\n"]
+  T.concat [ "constraints: ", constraints, "\n"]
   where
-    constraints = T.intercalate "\n  , " (constrait <$> sort deps)
+    spacing = ",\n             "
+    constraints = T.intercalate spacing (constrait <$> sort deps)
     constrait pkg =
       let name = (T.pack . unPackageName . pkgName $ pkg)
           ver  = (T.pack . prettyShow . pkgVersion $ pkg)
-          base = T.concat [name, " ==", ver]
+          base = T.concat ["any.", name, " ==", ver]
       in case M.lookup name flags of
         Nothing      -> base
-        Just entries -> T.concat [ name, " ", (custom entries)
-                                 , "\n  , ", base]
+        Just entries -> T.concat [name, " ", (custom entries), spacing, base]
     custom (M.toList -> lst) = T.intercalate " " $ (renderFlag <$> lst)
     renderFlag (name, True)  = "+" <> name
     renderFlag (name, False) = "-" <> name
@@ -96,7 +96,7 @@
 genFreeze :: Resolver -> [PackageName] -> Freeze
 genFreeze Resolver{deps, flags} ignore =
   let pkgs = filter noSelfs $ unPkgId <$> mapMaybe pick deps
-      uniqpkgs = nubOn pkgName pkgs
+      uniqpkgs = nubOrdOn pkgName pkgs
    in Freeze uniqpkgs flags
   where pick (Hackage p)   = Just p
         pick (SourceDep _) = Nothing
diff --git a/stack2cabal.cabal b/stack2cabal.cabal
--- a/stack2cabal.cabal
+++ b/stack2cabal.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          stack2cabal
-version:       1.0.5
+version:       1.0.6
 synopsis:
   Convert stack projects to cabal.project + cabal.project.freeze
 
@@ -26,12 +26,12 @@
   build-depends:
     , base             >=4.10    && <5.0
     , bytestring
-    , Cabal            >=2.2     && <3.0
+    , Cabal            >=2.2     && <3.1
     , containers
     , directory
     , extra            ^>=1.6.13
     , filepath
-    , hpack            ^>=0.31.0
+    , hpack            ^>=0.31.0 || ^>= 0.32.0 || ^>= 0.33.0
     , HsYAML           ^>=0.1.1.2
     , http-client      ^>=0.5.14 || ^>=0.6.0
     , http-client-tls  ^>=0.3.5.3
