/horizon-spec-0.9.0/package.dhall

Copy path to clipboard

Source

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 }
| 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 Policy = < Keep | Pin >

let Flag
: ∀(x : Type) → Type
= λ(x : Type) → < Enable : x | Disable : x >

let CabalFlag = Flag Text

let HaskellPackage =
{ Type =
{ source : HaskellSource
, modifiers : Modifiers.Type
, policy : List Policy
, flags : List CabalFlag
}
, default =
{ modifiers = Modifiers.default
, flags = [] : List CabalFlag
, policy = [] : List Policy
}
}

let Compiler = Text

let PackageEntry = Attr HaskellPackage.Type

let PackageList = List PackageEntry

let PackageSet = { compiler : Compiler, packages : PackageList }

let Overlay = PackageSet

let PackageSetExportSettings =
{ packagesDir : Directory
, packageSetFile : FilePath
, packageSet : PackageSet
}

let OverlayExportSettings =
{ packagesDir : Directory, overlayFile : FilePath, overlay : Overlay }

let HorizonExport =
< MakePackageSet : PackageSetExportSettings
| MakeOverlay : OverlayExportSettings
>

let callHackage
: NameVersionHaskellPackage.Type
= λ(name : Name) →
λ(version : Version) →
HaskellPackage::{ source = HaskellSource.FromHackage { name, version } }

let callGit
: UrlRevision → Optional SubdirHaskellPackage.Type
= λ(url : Url) →
λ(revision : Revision) →
λ(subdir : Optional Subdir) →
HaskellPackage::{
, source = HaskellSource.FromGit { url, revision, subdir }
}

let callTarball
: UrlHaskellPackage.Type
= λ(url : Url) → HaskellPackage::{ source = HaskellSource.FromTarball url }

let modPackageList
: Modifiers.TypePackageListPackageList
= λ(xs : Modifiers.Type) →
λ(ps : PackageList) →
Prelude.List.map
PackageEntry
PackageEntry
(λ(x : PackageEntry) → x with mapValue.modifiers = xs)
ps

let modPackageSet
: Modifiers.TypePackageSetPackageSet
= λ(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
, Policy
, Revision
, Subdir
, Version
, Url
, callGit
, callHackage
, callTarball
, modPackageList
, modPackageSet
}