@@ -100,10 +100,12 @@ renderDerivation deriv = funargs (map text ("cabal" : inputs)) $$ vcat
100100 where
101101 inputs = nub $ sortBy (compare `on` map toLower) $ filter (/="cabal") $ filter (not . isPrefixOf "self.") $
102102 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]
104104 renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- cabalFlags deriv ]
105105 ++ map text (configureFlags deriv)
106+ isHackagePackage = "mirror://hackage/" `isPrefixOf` derivUrl (src deriv)
106107 sourceAttr (DerivationSource{..})
108+ | isHackagePackage = attr "sha256" $ string derivHash
107109 | derivKind /= "" = vcat
108110 [ text "src" <+> equals <+> text ("fetch" ++ derivKind) <+> lbrace
109111 , nest 2 $ vcat