@@ -15,24 +15,17 @@ import Stack.Config
15import Stack.Types
15import Stack.Types
18−newtype StackagePackages = StackagePackages { unStackagePackages :: FilePath }
21−makePrisms ''StackagePackages
23−newtype StackageConfig = StackageConfig { unStackageConfig :: FilePath }
26−makePrisms ''StackageConfig
28data Options = Options
18data Options = Options
29− { _optOutFile :: !FilePath
19+ { _optOutFile :: !FilePath
30− , _optHackageDb :: !(Maybe HackageDb)
20+ , _optHackageDb :: !(Maybe HackageDb)
31− , _optStackagePackages :: !(Maybe StackagePackages)
21+ , _optNixpkgsRepository :: !FilePath
32− , _optStackageConfig :: !(Maybe StackageConfig)
22+ , _optStackageBuildPlan :: !FilePath
23+ , _optAllCabalHashes :: !FilePath
24+ , _optStackageOutPackages :: !FilePath
25+ , _optStackageOutConfig :: !FilePath
33− , _optCompilerId :: !CompilerId
26+ , _optCompilerId :: !CompilerId
34− , _optPlatform :: !Platform
27+ , _optPlatform :: !Platform
35− , _optStackYaml :: !FilePath
28+ , _optStackYaml :: !FilePath
36 } deriving (Show)
29 } deriving (Show)
38makeLenses ''Options
31makeLenses ''Options
@@ -41,8 +34,11 @@ options :: Parser Options
41options = Options
34options = Options
42 <$> outFile
35 <$> outFile
43 <*> optional hackageDb
36 <*> optional hackageDb
44− <*> optional stackagePackages
37+ <*> nixpkgsRepository
45− <*> optional stackageConfig
38+ <*> stackageBuildPlan
40+ <*> stackageOutPackages
41+ <*> stackageOutConfig
46 <*> compilerId
42 <*> compilerId
47 <*> platform
43 <*> platform
48 <*> stackYamlArg
44 <*> stackYamlArg
@@ -61,6 +57,26 @@ outFile = option str
61 <> help "path where to write output derivation"
57 <> help "path where to write output derivation"
62 <> value "default.nix" )
58 <> value "default.nix" )
60+nixpkgsRepository :: Parser FilePath
61+nixpkgsRepository = option str
64+ <> help "path to Nixpkgs repository"
66+ <> showDefaultWith id )
68+stackageBuildPlan :: Parser FilePath
69+stackageBuildPlan = option str
70+ ( long "stackage-build-plan"
71+ <> metavar "STACKAGE_BUILD_PLAN"
72+ <> help "stackage build plan (YAML)" )
74+allCabalHashes :: Parser FilePath
75+allCabalHashes = option str
76+ ( long "all-cabal-hashes"
77+ <> metavar "ALL_CABAL_HASHES"
78+ <> help "path to all-cabal-hashes repository" )
64stackResolver :: Parser StackResolver
80stackResolver :: Parser StackResolver
65stackResolver = StackResolver <$>
81stackResolver = StackResolver <$>
66 option text
82 option text
@@ -68,19 +84,19 @@ stackResolver = StackResolver <$>
68 <> metavar "RESOLVER"
84 <> metavar "RESOLVER"
69 <> help "override stack resolver" )
85 <> help "override stack resolver" )
71−stackagePackages :: Parser StackagePackages
87+stackageOutPackages :: Parser FilePath
72−stackagePackages = StackagePackages <$>
73− option str
88+stackageOutPackages = option str
74− ( long "nix-stackage-packages"
89+ ( long "nix-stackage-packages"
75− <> metavar "STACKAGE_PACKAGES"
90+ <> metavar "STACKAGE_PACKAGES"
76− <> help "path to packages file generated by 'stackage2nix'" )
91+ <> help "name of the output file for the package set"
77−
92+ <> value "configuration-packages.nix" )
78−stackageConfig :: Parser StackageConfig
93+
79−stackageConfig = StackageConfig <$>
94+stackageOutConfig :: Parser FilePath
80− option str
95+stackageOutConfig = option str
81− ( long "nix-stackage-config"
96+ ( long "nix-stackage-config"
82− <> metavar "STACKAGE_CONFIG"
97+ <> metavar "STACKAGE_CONFIG"
83− <> help "path to packages config file generated by 'stackage2nix'" )
98+ <> help "name of the output file for the package set configuration"
99+ <> value "packages.nix" )
85stackYamlArg :: Parser FilePath
101stackYamlArg :: Parser FilePath
86stackYamlArg = Opts.argument str
102stackYamlArg = Opts.argument str