git.iko.soy/typeable/stackage2nix
on master help sign in
Add: build extra-deps
39640c9Dmitry Bushev
src/Distribution/Nixpkgs/Haskell/Packages/PrettyPrinting.hs+3−1
@@ -12,7 +12,9 @@ packageSetConfig :: Doc -> Doc
12packageSetConfig body = vcat
12packageSetConfig body = vcat
13 [ funargs ["pkgs", "stdenv", "callPackage"]
13 [ funargs ["pkgs", "stdenv", "callPackage"]
14 , ""
14 , ""
15− , funarg "self" <+> body ]
15+ , funargsCurried ["self"] <+> "{"
16+ , nest 2 body
17+ , "}"]
16
18
17overrides :: Doc -> Doc
19overrides :: Doc -> Doc
18overrides body = funargsCurried ["self", "super"] <+> body
20overrides body = funargsCurried ["self", "super"] <+> body
src/Distribution/Nixpkgs/Haskell/Stack/PrettyPrinting.hsnew file+39
@@ -0,0 +1,39 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+
3+module Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting where
4+
5+import Control.Lens
6+import Distribution.Package
7+import Distribution.Text
8+import Distribution.Nixpkgs.Haskell.Derivation
9+import Distribution.Nixpkgs.Haskell.Packages.PrettyPrinting as PP
10+import Language.Nix.PrettyPrinting as PP
11+
12+
13+overrideExtraDeps :: [Derivation] -> Doc
14+overrideExtraDeps deps = PP.packageSetConfig . PP.cat $ callPackage <$> deps
15+ where
16+ drvNameString = PP.doubleQuotes . disp . pkgName . view pkgid
17+ callPackage drv = vcat
18+ [ drvNameString drv <> " = callPackage",
19+ nest 2 (PP.parens $ PP.pPrint drv) <+> "{};"]
20+
21+overrideHaskellPackages :: [Derivation] -> Doc -> Doc
22+overrideHaskellPackages extraDeps ghc = vcat
23+ [ funargs ["nixpkgs ? import <nixpkgs> {}"]
24+ , ""
25+ , "with nixpkgs;"
26+ , "let"
27+ , nest 2 $ vcat
28+ [ "extraDepsPackages ="
29+ , overrideExtraDeps extraDeps <> semi
30+ , "pkgOverrides = self: extraDepsPackages {"
31+ , nest 2 "inherit pkgs stdenv;"
32+ , nest 2 "inherit (self) callPackage;"
33+ , "};"
34+ ]
35+ , "in pkgs.haskell.packages." <> ghc <> ".override {"
36+ , nest 2 $ vcat
37+ [ "overrides = self: pkgOverrides self;"]
38+ , "}"
39+ ]
src/Runner.hs+2−2
@@ -5,6 +5,7 @@ module Runner where
5import Cli
5import Cli
6import Control.Lens
6import Control.Lens
7import Distribution.Nixpkgs.Haskell.Stack
7import Distribution.Nixpkgs.Haskell.Stack
8+import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
8import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
9import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
9import Distribution.Simple.Utils ( lowercase )
10import Distribution.Simple.Utils ( lowercase )
10import Language.Nix.PrettyPrinting as PP
11import Language.Nix.PrettyPrinting as PP
@@ -22,9 +23,8 @@ run :: IO ()
22run = do
23run = do
23 Options{..} <- execParser pinfo
24 Options{..} <- execParser pinfo
24 stackYaml <- either fail pure =<< readStackConfig optStackYaml
25 stackYaml <- either fail pure =<< readStackConfig optStackYaml
25− print $ stackYaml ^. scExtraDeps
26 derivations <- traverse (extraDepDerivation optHackageDb optPlatform optCompilerId (readFlagList optFlags))
26 derivations <- traverse (extraDepDerivation optHackageDb optPlatform optCompilerId (readFlagList optFlags))
27 $ stackYaml ^. scExtraDeps
27 $ stackYaml ^. scExtraDeps
28− let out = PP.cat $ PP.pPrint <$> derivations
28+ let out = PP.overrideHaskellPackages derivations (PP.text "ghc802")
29 print out
29 print out
30 --print $ nixpkgsOverride overrideConfigFixture
30 --print $ nixpkgsOverride overrideConfigFixture
stack2nix.cabal+3−2
@@ -16,6 +16,7 @@ library
16 exposed-modules: Cli
16 exposed-modules: Cli
17 , Distribution.Nixpkgs.Haskell.Packages.PrettyPrinting
17 , Distribution.Nixpkgs.Haskell.Packages.PrettyPrinting
18 , Distribution.Nixpkgs.Haskell.Stack
18 , Distribution.Nixpkgs.Haskell.Stack
19+ , Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting
19 , Runner
20 , Runner
20 , Stack.Config
21 , Stack.Config
21 , Stack.Config.Yaml
22 , Stack.Config.Yaml
@@ -38,7 +39,7 @@ library
38executable stack2nix
39executable stack2nix
39 hs-source-dirs: app
40 hs-source-dirs: app
40 main-is: Main.hs
41 main-is: Main.hs
41− ghc-options: -threaded -rtsopts -with-rtsopts=-N
42+ ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
42 build-depends: base
43 build-depends: base
43 , stack2nix
44 , stack2nix
44 default-language: Haskell2010
45 default-language: Haskell2010
@@ -57,7 +58,7 @@ test-suite spec
57 default-extensions: OverloadedStrings
58 default-extensions: OverloadedStrings
58 other-modules: PrettyPrintingSpec
59 other-modules: PrettyPrintingSpec
59 , Stack.Config.YamlSpec
60 , Stack.Config.YamlSpec
60− ghc-options: -threaded -rtsopts -with-rtsopts=-N
61+ ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
61 default-language: Haskell2010
62 default-language: Haskell2010
62
63
63source-repository head
64source-repository head