@@ -15,6 +15,7 @@ import Distribution.Text
15import Distribution.Version (Version)
15import Distribution.Version (Version)
16import qualified Language.Nix.FilePath as Nix
16import qualified Language.Nix.FilePath as Nix
17import Language.Nix.PrettyPrinting as PP
17import Language.Nix.PrettyPrinting as PP
18+import Stack.Config (StackResolver, unStackResolver)
20data OverrideConfig = OverrideConfig
21data OverrideConfig = OverrideConfig
@@ -87,6 +88,28 @@ overrideHaskellPackages oc packages =
91+overrideStackage :: StackResolver -> OverrideConfig -> NonEmpty Derivation -> Doc
92+overrideStackage stackResolver oc packages =
94+ nixpkgs = if oc ^. ocNixpkgs . to fromString == systemNixpkgs
96+ else (disp . (fromString :: FilePath -> Nix.FilePath)) (oc ^. ocNixpkgs)
99+ [ "nixpkgs ? import " <> nixpkgs <> " {}"
105+ , nest 2 $ overridePackages packages <> semi
107+ , "in nixpkgs.haskell.packages.stackage." <> toNixStackResolver stackResolver <> ".override {"
109+ $ attr "packageSetConfig" "self: super: stackPackages { inherit (nixpkgs) pkgs stdenv; inherit (self) callPackage; } super"
90pPrintHaskellPackages :: OverrideConfig -> Doc
113pPrintHaskellPackages :: OverrideConfig -> Doc
91pPrintHaskellPackages oc =
114pPrintHaskellPackages oc =
@@ -114,5 +137,10 @@ pPrintHaskellPackages oc =
116toNixGhcVersion :: Version -> Doc
139toNixGhcVersion :: Version -> Doc
117−toNixGhcVersion =
140+toNixGhcVersion = (<>) "ghc" . toNixVersion . show . disp
142+toNixStackResolver :: StackResolver -> Doc
143+toNixStackResolver = toNixVersion . unStackResolver
145+toNixVersion :: String -> Doc
118− (<>) "ghc" . text . L.filter (/= '.') . show . disp
146+toNixVersion = text . L.filter (/= '.')