@@ -6,6 +6,7 @@ import Distribution.Nixpkgs.Haskell.FromStack.Package
6import Distribution.Nixpkgs.Haskell.Stack
6import Distribution.Nixpkgs.Haskell.Stack
7import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
7import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
8import Distribution.Version (Version(..))
8import Distribution.Version (Version(..))
9+import System.FilePath as Path
9import Options.Applicative
10import Options.Applicative
10import Runner.Cli
11import Runner.Cli
11import Stack.Config
12import Stack.Config
@@ -20,26 +21,28 @@ import qualified Stackage2nix as S2n
20run :: IO ()
21run :: IO ()
22 opts <- execParser pinfo
23 opts <- execParser pinfo
23− stackYaml <- either fail pure =<< readStackConfig (opts ^. optStackYaml)
24+ stackConf <- either fail pure =<< readStackConfig (opts ^. optStackYaml)
26+ s2nOpts = mkS2nOptions stackConf opts
24− (buildPlan, packageSetConfig) <- S2n.run $ mkS2nOptions opts
27+ (buildPlan, packageSetConfig) <- S2n.run s2nOpts
25 -- generate haskell packages override
28 -- generate haskell packages override
27 pkgConfig = mkPackageConfig (opts ^. optPlatform) (opts ^. optCompilerId)
30 pkgConfig = mkPackageConfig (opts ^. optPlatform) (opts ^. optCompilerId)
28 overrideConfig = mkOverrideConfig opts (siGhcVersion $ bpSystemInfo buildPlan)
31 overrideConfig = mkOverrideConfig opts (siGhcVersion $ bpSystemInfo buildPlan)
29 packages <- traverse (packageDerivation pkgConfig (opts ^. optHackageDb))
32 packages <- traverse (packageDerivation pkgConfig (opts ^. optHackageDb))
30− $ stackYaml ^. scPackages
33+ $ stackConf ^. scPackages
32 out = PP.overrideHaskellPackages overrideConfig packages
35 out = PP.overrideHaskellPackages overrideConfig packages
33 writeFile (opts ^. optOutFile) (show out)
36 writeFile (opts ^. optOutFile) (show out)
34 -- generate stackage packages
37 -- generate stackage packages
35− allNodes <- traverse (uncurry $ buildNodeM packageSetConfig)
38+ nodes <- traverse (uncurry $ buildNodeM packageSetConfig)
36 $ Map.toList (bpPackages buildPlan)
39 $ Map.toList (bpPackages buildPlan)
37− let nodes = reachableDependencies (mkNode <$> packages) allNodes
40+ -- let nodes = reachableDependencies (mkNode <$> packages) allNodes
38 withFile (opts ^. optStackageOutPackages) WriteMode $ \h -> do
41 withFile (opts ^. optStackageOutPackages) WriteMode $ \h -> do
39− hPutStrLn h ("# Generated by stack2nix from " ++ opts ^. optStackageBuildPlan)
42+ hPutStrLn h ("# Generated by stack2nix from " ++ S2n.optBuildPlanFile s2nOpts)
40 hPutStrLn h $ render $ pPrintOutPackages (nodeDerivation <$> nodes)
43 hPutStrLn h $ render $ pPrintOutPackages (nodeDerivation <$> nodes)
41 withFile (opts ^. optStackageOutConfig) WriteMode $ \h -> do
44 withFile (opts ^. optStackageOutConfig) WriteMode $ \h -> do
42− hPutStrLn h ("# Generated by stack2nix from " ++ opts ^. optStackageBuildPlan)
45+ hPutStrLn h ("# Generated by stack2nix from " ++ S2n.optBuildPlanFile s2nOpts)
43 hPutStrLn h $ render $ pPrintOutConfig (bpSystemInfo buildPlan) nodes
46 hPutStrLn h $ render $ pPrintOutConfig (bpSystemInfo buildPlan) nodes
44 putStrLn $ "Derivation was written to " ++ opts ^. optOutFile
47 putStrLn $ "Derivation was written to " ++ opts ^. optOutFile
@@ -49,10 +52,13 @@ mkOverrideConfig opts ghcVersion = OverrideConfig
49 , _ocStackagePackages = opts ^. optStackageOutPackages
52 , _ocStackagePackages = opts ^. optStackageOutPackages
50 , _ocStackageConfig = opts ^. optStackageOutConfig }
53 , _ocStackageConfig = opts ^. optStackageOutConfig }
52−mkS2nOptions :: Options -> S2n.Options
55+mkS2nOptions :: StackConfig -> Options -> S2n.Options
53−mkS2nOptions opts = S2n.Options
56+mkS2nOptions conf opts = S2n.Options
54− { S2n.optBuildPlanFile = opts ^. optStackageBuildPlan
57+ { S2n.optBuildPlanFile =
58+ (opts ^. optLtsHaskellPath) Path.</>
59+ (conf ^. scResolver . to unStackResolver) Path.<.>
55− , S2n.optAllCabalHashes = opts ^. optAllCabalHashes
61+ , S2n.optAllCabalHashes = opts ^. optAllCabalHashesPath
56 , S2n.optNixpkgsRepository = opts ^. optNixpkgsRepository
62 , S2n.optNixpkgsRepository = opts ^. optNixpkgsRepository
57 , S2n.optNixpkgsMap = Nothing
63 , S2n.optNixpkgsMap = Nothing
58 , S2n.optOutPackages = opts ^. optStackageOutPackages
64 , S2n.optOutPackages = opts ^. optStackageOutPackages