git.iko.soy/typeable/stackage2nix
on master help sign in
Generate stackYamlPackages filter
e1d3a67Dmitry Bushev
src/Distribution/Nixpkgs/Haskell/Stack/PrettyPrinting.hs+14−4
@@ -75,8 +75,8 @@ overrideHaskellPackages oc packages = vcat
75 , nest 2 "inherit pkgs stdenv;"
75 , nest 2 "inherit pkgs stdenv;"
76 , nest 2 "inherit (self) callPackage;"
76 , nest 2 "inherit (self) callPackage;"
77 , "};"
77 , "};"
78− , ""
78+ , attr "stackYamlPackages" (stackYamlPackages $ pkgName . packageId <$> packages)
79− ]
79+ ]
80 , "in callPackage (nixpkgs.path + \"/pkgs/development/haskell-modules\") {"
80 , "in callPackage (nixpkgs.path + \"/pkgs/development/haskell-modules\") {"
81 , nest 2 $ vcat
81 , nest 2 $ vcat
82 [ attr "ghc" ("pkgs.haskell.compiler." <> nixGhc)
82 [ attr "ghc" ("pkgs.haskell.compiler." <> nixGhc)
@@ -86,7 +86,7 @@ overrideHaskellPackages oc packages = vcat
86 , attr "configurationCommon" "args: self: super: {}"
86 , attr "configurationCommon" "args: self: super: {}"
87 , "inherit haskellLib;"
87 , "inherit haskellLib;"
88 ]
88 ]
89− , "}"
89+ , "} // { inherit stackYamlPackages; }"
90 ] where
90 ] where
91 nixGhc = toNixGhcVersion (oc ^. ocGhc)
91 nixGhc = toNixGhcVersion (oc ^. ocGhc)
92
92
@@ -100,11 +100,12 @@ overrideStackage stackResolver nixpkgsPath packages = vcat
100 , nest 2 $ vcat
100 , nest 2 $ vcat
101 [ "stackPackages ="
101 [ "stackPackages ="
102 , nest 2 $ overridePackages packages <> semi
102 , nest 2 $ overridePackages packages <> semi
103+ , attr "stackYamlPackages" (stackYamlPackages $ pkgName . packageId <$> packages)
103 ]
104 ]
104 , "in nixpkgs.haskell.packages.stackage." <> toNixStackResolver stackResolver <> ".override {"
105 , "in nixpkgs.haskell.packages.stackage." <> toNixStackResolver stackResolver <> ".override {"
105 , nest 2
106 , nest 2
106 $ attr "packageSetConfig" "self: super: stackPackages { inherit (nixpkgs) pkgs stdenv; inherit (self) callPackage; } super"
107 $ attr "packageSetConfig" "self: super: stackPackages { inherit (nixpkgs) pkgs stdenv; inherit (self) callPackage; } super"
107− , "}"
108+ , "} // { inherit stackYamlPackages; }"
108 ]
109 ]
109
110
110pPrintHaskellPackages :: OverrideConfig -> Doc
111pPrintHaskellPackages :: OverrideConfig -> Doc
@@ -147,6 +148,15 @@ pPrintHaskellPackages oc = vcat
147 , "in extensible-self"
148 , "in extensible-self"
148 ]
149 ]
149
150
151+stackYamlPackages :: NonEmpty PackageName -> Doc
152+stackYamlPackages packages = hcat
153+ [ "self: { "
154+ , "inherit (self) "
155+ , text . intercalate " " $ NE.toList packageNames
156+ , "; }" ]
157+ where
158+ packageNames = unPackageName <$> packages
159+
150toNixGhcVersion :: Version -> Doc
160toNixGhcVersion :: Version -> Doc
151toNixGhcVersion = (<>) "ghc" . toNixVersion . show . disp
161toNixGhcVersion = (<>) "ghc" . toNixVersion . show . disp
152
162