@@ -1,6 +1,8 @@
11module Runner ( run ) where
22
33import Control.Lens
4+import Distribution.Nixpkgs.Haskell.FromStack
5+import Distribution.Nixpkgs.Haskell.FromStack.Package
46import Distribution.Nixpkgs.Haskell.Stack
57import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
68import Distribution.Version (Version(..))
@@ -8,7 +10,10 @@ import Options.Applicative
810import Runner.Cli
911import Stack.Config
1012import Stackage.Types
13+import System.IO (withFile, IOMode(..), hPutStrLn)
14+import Text.PrettyPrint.HughesPJClass (render)
1115
16+import qualified Data.Map as Map
1217import qualified Stackage2nix as S2n
1318
1419
@@ -16,8 +21,7 @@ run :: IO ()
1621run = do
1722 opts <- execParser pinfo
1823 stackYaml <- either fail pure =<< readStackConfig (opts ^. optStackYaml)
19− -- generate stackage packages
20− buildPlan <- S2n.run $ mkS2nOptions opts
24+ (buildPlan, packageSetConfig) <- S2n.run $ mkS2nOptions opts
2125 -- generate haskell packages override
2226 let
2327 pkgConfig = mkPackageConfig (opts ^. optPlatform) (opts ^. optCompilerId)
@@ -27,7 +31,17 @@ run = do
2731 let
2832 out = PP.overrideHaskellPackages overrideConfig packages
2933 writeFile (opts ^. optOutFile) (show out)
30− putStrLn $ "\nDerivation was written to " ++ opts ^. optOutFile
34+ -- generate stackage packages
35+ allNodes <- traverse (uncurry $ buildNodeM packageSetConfig)
36+ $ Map.toList (bpPackages buildPlan)
37+ let nodes = reachableDependencies (mkNode <$> packages) allNodes
38+ withFile (opts ^. optStackageOutPackages) WriteMode $ \h -> do
39+ hPutStrLn h ("# Generated by stack2nix from " ++ opts ^. optStackageBuildPlan)
40+ hPutStrLn h $ render $ pPrintOutPackages (nodeDerivation <$> nodes)
41+ withFile (opts ^. optStackageOutConfig) WriteMode $ \h -> do
42+ hPutStrLn h ("# Generated by stack2nix from " ++ opts ^. optStackageBuildPlan)
43+ hPutStrLn h $ render $ pPrintOutConfig (bpSystemInfo buildPlan) nodes
44+ putStrLn $ "Derivation was written to " ++ opts ^. optOutFile
3145
3246mkOverrideConfig :: Options -> Version -> OverrideConfig
3347mkOverrideConfig opts ghcVersion = OverrideConfig