git.iko.soy/typeable/stackage2nix
on master help sign in
Add: write build derivation to file
8d273a4Dmitry Bushev
.gitignore+1
@@ -1,2 +1,3 @@
1.stack-work
1.stack-work
2+default.nix
2/nix
3/nix
src/Runner.hs+2−1
@@ -19,7 +19,8 @@ run = do
19 $ stackYaml ^. scPackages
19 $ stackYaml ^. scPackages
20 let
20 let
21 out = PP.overrideHaskellPackages overrideConfig packages
21 out = PP.overrideHaskellPackages overrideConfig packages
22− print out
22+ writeFile (opts ^. optOutFile) (show out)
23+ putStrLn $ "\nDerivation was written to " ++ opts ^. optOutFile
23
24
24mkOverrideConfig :: Options -> OverrideConfig
25mkOverrideConfig :: Options -> OverrideConfig
25mkOverrideConfig opts = OverrideConfig
26mkOverrideConfig opts = OverrideConfig
src/Runner/Cli.hs+11−2
@@ -26,7 +26,8 @@ newtype StackageConfig = StackageConfig { unStackageConfig :: FilePath }
26makePrisms ''StackageConfig
26makePrisms ''StackageConfig
27
27
28data Options = Options
28data Options = Options
29+ { _optOutFile :: !FilePath
29− { _optHackageDb :: !(Maybe HackageDb)
30+ , _optHackageDb :: !(Maybe HackageDb)
30 , _optStackagePackages :: !(Maybe StackagePackages)
31 , _optStackagePackages :: !(Maybe StackagePackages)
31 , _optStackageConfig :: !(Maybe StackageConfig)
32 , _optStackageConfig :: !(Maybe StackageConfig)
32 , _optCompilerId :: !CompilerId
33 , _optCompilerId :: !CompilerId
@@ -38,7 +39,8 @@ makeLenses ''Options
38
39
39options :: Parser Options
40options :: Parser Options
40options = Options
41options = Options
42+ <$> outFile
41− <$> optional hackageDb
43+ <*> optional hackageDb
42 <*> optional stackagePackages
44 <*> optional stackagePackages
43 <*> optional stackageConfig
45 <*> optional stackageConfig
44 <*> compilerId
46 <*> compilerId
@@ -52,6 +54,13 @@ pinfo = info
52 ( fullDesc
54 ( fullDesc
53 <> header "stack2nix converts Stack files into build instructions for Nix." )
55 <> header "stack2nix converts Stack files into build instructions for Nix." )
54
56
57+outFile :: Parser FilePath
58+outFile = option str
59+ ( long "nix-out-file"
60+ <> metavar "NIX_OUT_FILE"
61+ <> help "path where to write output derivation"
62+ <> value "default.nix" )
63+
55stackResolver :: Parser StackResolver
64stackResolver :: Parser StackResolver
56stackResolver = StackResolver <$>
65stackResolver = StackResolver <$>
57 option text
66 option text
test.sh+3−1
@@ -1,3 +1,5 @@
1#!/usr/bin/env sh
1#!/usr/bin/env sh
2
2
3−exec stack2nix --nix-stackage-config=nix/configuration-packages.nix --nix-stackage-packages=./nix/packages.nix
3+stack2nix --nix-stackage-config=nix/configuration-packages.nix --nix-stackage-packages=./nix/packages.nix
4+
5+nix-build -A stack2nix --dry-run