module Distribution.Nixpkgs.Haskell.Packages.PrettyPrinting where

import Language.Nix.PrettyPrinting

compilerConfig :: Doc -> Doc
compilerConfig body =
  funargsCurried ["self", "super"] <+> body

packageSetConfig :: Doc -> Doc
packageSetConfig body = vcat
  [ funargs ["pkgs", "stdenv", "callPackage"]
  , ""
  , funargsCurried ["self"] <+> "{"
  , nest 2 body
  , "}"]

overrides :: Doc -> Doc
overrides body = funargsCurried ["self", "super"] <+> body

-- | Function argument
-- output 'arg:'
funarg :: Doc -> Doc
funarg = flip (<>) colon

-- | Function arguments curried
-- output 'arg1: arg2:'
funargsCurried :: [Doc] -> Doc
funargsCurried = hsep . fmap funarg