packages feed

hix-0.9.0: lib/Hix/Managed/Cabal/HackageRepo.hs

module Hix.Managed.Cabal.HackageRepo where

import Exon (exon)

import Hix.CabalParsec (unsafeParsec)
import qualified Hix.Managed.Cabal.Data.HackageLocation as HackageLocation
import Hix.Managed.Cabal.Data.HackageLocation (HackageLocation (HackageLocation, host), central)
import Hix.Managed.Cabal.Data.HackageRepo (HackageDescription (..), HackageName, HackageRepo (..), centralName)

hackageDescription :: HackageLocation -> HackageDescription
hackageDescription HackageLocation {host} =
  if host == central.host
  then "central Hackage"
  else HackageDescription [exon|Hackage at ##{host}|]

hackageRepo :: HackageName -> HackageLocation -> HackageRepo
hackageRepo name location =
  HackageRepo {
    name,
    description = hackageDescription location,
    location,
    enable = True,
    secure = Just True,
    keys = Nothing,
    solver = True,
    publish = False,
    indexState = Nothing
  }

centralHackage :: HackageRepo
centralHackage =
  (hackageRepo centralName HackageLocation.central) {
    description = "central Hackage",
    publish = True
  }

unsafeCentralHackageFixed :: HackageRepo
unsafeCentralHackageFixed =
  centralHackage {indexState = Just (unsafeParsec ("2025-01-01T00:00:00Z" :: String))}