@@ -100,10 +100,12 @@ renderDerivation deriv = funargs (map text ("cabal" : inputs)) $$ vcat
101 inputs = nub $ sortBy (compare `on` map toLower) $ filter (/="cabal") $ filter (not . isPrefixOf "self.") $
101 inputs = nub $ sortBy (compare `on` map toLower) $ filter (/="cabal") $ filter (not . isPrefixOf "self.") $
102 buildDepends deriv ++ testDepends deriv ++ buildTools deriv ++ extraLibs deriv ++ pkgConfDeps deriv ++ extraFunctionArgs deriv
102 buildDepends deriv ++ testDepends deriv ++ buildTools deriv ++ extraLibs deriv ++ pkgConfDeps deriv ++ extraFunctionArgs deriv
103− ++ ["fetch" ++ derivKind (src deriv) | derivKind (src deriv) /= ""]
103+ ++ ["fetch" ++ derivKind (src deriv) | derivKind (src deriv) /= "" && not isHackagePackage]
104 renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- cabalFlags deriv ]
104 renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- cabalFlags deriv ]
105 ++ map text (configureFlags deriv)
105 ++ map text (configureFlags deriv)
106+ isHackagePackage = "mirror://hackage/" `isPrefixOf` derivUrl (src deriv)
106 sourceAttr (DerivationSource{..})
107 sourceAttr (DerivationSource{..})
108+ | isHackagePackage = attr "sha256" $ string derivHash
107 | derivKind /= "" = vcat
109 | derivKind /= "" = vcat
108 [ text "src" <+> equals <+> text ("fetch" ++ derivKind) <+> lbrace
110 [ text "src" <+> equals <+> text ("fetch" ++ derivKind) <+> lbrace
109 , nest 2 $ vcat
111 , nest 2 $ vcat