@@ -15,24 +15,17 @@ import Stack.Config
1515import Stack.Types
1616
1717
18−newtype StackagePackages = StackagePackages { unStackagePackages :: FilePath }
19− deriving (Show)
20−
21−makePrisms ''StackagePackages
22−
23−newtype StackageConfig = StackageConfig { unStackageConfig :: FilePath }
24− deriving (Show)
25−
26−makePrisms ''StackageConfig
27−
2818data Options = Options
29− { _optOutFile :: !FilePath
30− , _optHackageDb :: !(Maybe HackageDb)
31− , _optStackagePackages :: !(Maybe StackagePackages)
32− , _optStackageConfig :: !(Maybe StackageConfig)
33− , _optCompilerId :: !CompilerId
34− , _optPlatform :: !Platform
35− , _optStackYaml :: !FilePath
19+ { _optOutFile :: !FilePath
20+ , _optHackageDb :: !(Maybe HackageDb)
21+ , _optNixpkgsRepository :: !FilePath
22+ , _optStackageBuildPlan :: !FilePath
23+ , _optAllCabalHashes :: !FilePath
24+ , _optStackageOutPackages :: !FilePath
25+ , _optStackageOutConfig :: !FilePath
26+ , _optCompilerId :: !CompilerId
27+ , _optPlatform :: !Platform
28+ , _optStackYaml :: !FilePath
3629 } deriving (Show)
3730
3831makeLenses ''Options
@@ -41,8 +34,11 @@ options :: Parser Options
4134options = Options
4235 <$> outFile
4336 <*> optional hackageDb
44− <*> optional stackagePackages
45− <*> optional stackageConfig
37+ <*> nixpkgsRepository
38+ <*> stackageBuildPlan
39+ <*> allCabalHashes
40+ <*> stackageOutPackages
41+ <*> stackageOutConfig
4642 <*> compilerId
4743 <*> platform
4844 <*> stackYamlArg
@@ -61,6 +57,26 @@ outFile = option str
6157 <> help "path where to write output derivation"
6258 <> value "default.nix" )
6359
60+nixpkgsRepository :: Parser FilePath
61+nixpkgsRepository = option str
62+ ( long "nixpkgs"
63+ <> metavar "NIXPKGS"
64+ <> help "path to Nixpkgs repository"
65+ <> value "<nixpkgs>"
66+ <> showDefaultWith id )
67+
68+stackageBuildPlan :: Parser FilePath
69+stackageBuildPlan = option str
70+ ( long "stackage-build-plan"
71+ <> metavar "STACKAGE_BUILD_PLAN"
72+ <> help "stackage build plan (YAML)" )
73+
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" )
79+
6480stackResolver :: Parser StackResolver
6581stackResolver = StackResolver <$>
6682 option text
@@ -68,19 +84,19 @@ stackResolver = StackResolver <$>
6884 <> metavar "RESOLVER"
6985 <> help "override stack resolver" )
7086
71−stackagePackages :: Parser StackagePackages
72−stackagePackages = StackagePackages <$>
73− option str
74− ( long "nix-stackage-packages"
75− <> metavar "STACKAGE_PACKAGES"
76− <> help "path to packages file generated by 'stackage2nix'" )
77−
78−stackageConfig :: Parser StackageConfig
79−stackageConfig = StackageConfig <$>
80− option str
81− ( long "nix-stackage-config"
82− <> metavar "STACKAGE_CONFIG"
83− <> help "path to packages config file generated by 'stackage2nix'" )
87+stackageOutPackages :: Parser FilePath
88+stackageOutPackages = option str
89+ ( long "nix-stackage-packages"
90+ <> metavar "STACKAGE_PACKAGES"
91+ <> help "name of the output file for the package set"
92+ <> value "configuration-packages.nix" )
93+
94+stackageOutConfig :: Parser FilePath
95+stackageOutConfig = option str
96+ ( long "nix-stackage-config"
97+ <> metavar "STACKAGE_CONFIG"
98+ <> help "name of the output file for the package set configuration"
99+ <> value "packages.nix" )
84100
85101stackYamlArg :: Parser FilePath
86102stackYamlArg = Opts.argument str