let Prelude = env:DHALL_PRELUDE ? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v21.1.0/Prelude/package.dhall sha256:0fed19a88330e9a8a3fbe1e8442aa11d12e38da51eb12ba8bcb56f3c25d0854a let FilePath = Text let Directory = Text let Name = Text let Version = Text let Revision = Text let Subdir = Text let Url = Text let HaskellSource = < FromHackage : { name : Name, version : Version } | FromGit : { url : Url, revision : Revision, subdir : Optional Subdir } | FromLocal : Subdir | FromTarball : Url > let Modifiers = { Type = { doBenchmark : Bool , doCheck : Bool , doJailbreak : Bool , enableProfiling : Bool , includeBenchmarks : Bool , includeExecutables : Bool , includeTests : Bool } , default = { doBenchmark = False , doCheck = False , doJailbreak = True , enableProfiling = True , includeBenchmarks = True , includeExecutables = True , includeTests = True } } let Attr = λ(a : Type) → { mapKey : Text, mapValue : a } let Flag : ∀(x : Type) → Type = λ(x : Type) → < Enable : x | Disable : x > let CabalFlag = Flag Text let HaskellPackage = { Type = { source : HaskellSource , modifiers : Modifiers.Type , flags : List CabalFlag } , default = { modifiers = Modifiers.default, flags = [] : List CabalFlag } } let Compiler = Text let PackageEntry = Attr HaskellPackage.Type let PackageList = List PackageEntry let PackageSet = { compiler : Compiler, packages : PackageList } let Overlay = PackageList let PackageSetExportSettings = { packagesDir : Directory , packageSetFile : FilePath , packageSet : PackageSet } let OverlayExportSettings = { packagesDir : Directory, overlayFile : FilePath, overlay : Overlay } let HorizonExport = < MakePackageSet : PackageSetExportSettings | MakeOverlay : OverlayExportSettings > let callHackage : Name → Version → HaskellPackage.Type = λ(name : Name) → λ(version : Version) → HaskellPackage::{ source = HaskellSource.FromHackage { name, version } } let callGit : Url → Revision → Optional Subdir → HaskellPackage.Type = λ(url : Url) → λ(revision : Revision) → λ(subdir : Optional Subdir) → HaskellPackage::{ , source = HaskellSource.FromGit { url, revision, subdir } } let callLocal : Subdir → HaskellPackage.Type = λ(subdir : Subdir) → HaskellPackage::{ source = HaskellSource.FromLocal subdir } let callTarball : Url → HaskellPackage.Type = λ(url : Url) → HaskellPackage::{ source = HaskellSource.FromTarball url } let modPackageList : Modifiers.Type → PackageList → PackageList = λ(xs : Modifiers.Type) → λ(ps : PackageList) → Prelude.List.map PackageEntry PackageEntry (λ(x : PackageEntry) → x with mapValue.modifiers = xs) ps let modPackageSet : Modifiers.Type → PackageSet → PackageSet = λ(xs : Modifiers.Type) → λ(ps : PackageSet) → ps with packages = modPackageList xs ps.packages in { Attr , CabalFlag , Compiler , Directory , FilePath , Flag , HaskellSource , HaskellPackage , HorizonExport , Modifiers , Name , OverlayExportSettings , Overlay , PackageEntry , PackageList , PackageSetExportSettings , PackageSet , Revision , Subdir , Version , Url , callGit , callHackage , callLocal , callTarball , modPackageList , modPackageSet }