HORIZON HASKELLDocslts/ghc-10.0.xfc4e5982026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · fc4e598 · 2026-10-11

Modulehorizon-config-0.8.0GHC2024

Horizon.Config.Types

The typed vocabulary of a package-set config. Each pin argument that has a shape a wrong string could violate gets its own newtype with a validating IsString instance, so a malformed literal — a revision that is not a hash, an empty version — is rejected at fold time (the wisp's own error), not silently written into a pin. With OverloadedStrings on, a config still writes bare string literals (hackage "lens" "5.3.4"): GHC selects the right fromString from each argument's expected type, so the .vx surface is unchanged and the ergonomics are identical.

Validation lives here, once, rather than being re-checked at every use; an invalid literal is a partial fromString (an error), which is the same discipline Horizon.Config.Host already uses for subdirectories. The accessors expose the underlying value (a Text, or a time for an IndexState) so the host can wrap it with no re-parsing.

  • 22 types
  • 3 values
newtypenewtype Compiler
#

A GHC compiler spec, e.g. ghc-9.10.1 or ghc-10.0.x: non-empty and beginning with ghc, which is all a config can meaningfully name here.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq CompilerDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord CompilerDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show CompilerDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString CompilerDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Version
#

A package version, e.g. 2.2.3.0: non-empty, only digits and dots. (x components as in an lts pin are a branch, not a package version, so a package Version is strictly numeric.)

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq VersionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord VersionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show VersionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString VersionDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Revision
#

A git commit revision: a hex string (a full 40-char SHA-1 or an unambiguous prefix of at least 7). This is what a flake pin locks to, so a non-hex value here is exactly the mistake worth catching early.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq RevisionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord RevisionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show RevisionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString RevisionDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype GitRef
#

A git ref: a branch or tag name, e.g. lts/ghc-10.0.x or 0.24.0. Non-empty, no whitespace; the human-readable branch a Revision is on.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq GitRefDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord GitRefDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show GitRefDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString GitRefDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Url
#

A URL (git repo or tarball): non-empty, no whitespace.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq UrlDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord UrlDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show UrlDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString UrlDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Subdir
#

A subdirectory within a repo or tarball: non-empty, no whitespace. (The host still parses it into a real relative directory; this only rules out the obviously-bad literal at the DSL surface.)

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq SubdirDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord SubdirDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show SubdirDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString SubdirDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype FlagName
#

A cabal flag name: non-empty, no whitespace.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq FlagNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord FlagNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show FlagNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString FlagNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Platform
#

A target platform as cabal names it, ARCH-OS (javascript-ghcjs, x86_64-linux): an architecture of letters, digits and underscores, a dash, then the operating system. Whether cabal knows the architecture and the system is the host's check, which has cabal's tables.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq PlatformDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord PlatformDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show PlatformDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString PlatformDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype IndexState
#

A Hackage index state, as cabal spells one: a UTC time to the second, 2025-03-01T00:00:00Z. Only the index entries published by then are read, so a later revision cannot change what the set renders. The literal must be the time's canonical spelling, which is the one form cabal's index-state and cabal2nix's snapshot both accept.

Instances4Eq, Ord, Show, IsString
newtypenewtype ForgePath
#

A repository on a forge, named by host and path with no scheme: nixlab.openfp.netpackage-setshaskell/horizon-core. The host is part of the path so a config names the whole location and the generator holds no forge of its own. Two or more segments, none empty, . or ..; a host with a dot; nothing a URL would read as a scheme, query or fragment; and a last segment, the repository, that is a SetName, since a toolchain base is the flake input named for its repository.

Instances4Eq, Ord, Show, IsString
  • Eq ForgePathDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord ForgePathDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show ForgePathDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString ForgePathDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype SetName
#

The name a package set is known by, which is also its flake input in a set layered on it: a letter, then letters, digits, dashes and underscores.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq SetNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord SetNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show SetNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString SetNameDefined in horizon-config-0.8.0 · Horizon.Config.Types

Repositories

2 declarations
newtypenewtype RepositoryName
#

The name a config gives a secure cabal repository, which is also the name cabal keeps the repository's index under (packages/NAME): letters, digits, dots, dashes and underscores, e.g. nixlab.

Instances4Eq, Ord, Show, IsString
newtypenewtype RootKey
#

A root key of a secure repository, as cabal's root-keys lists it: the key id, 64 lowercase hex digits.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq RootKeyDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord RootKeyDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show RootKeyDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString RootKeyDefined in horizon-config-0.8.0 · Horizon.Config.Types

Repository scope

11 declarations
newtypenewtype Spdx
#

A licence, as one SPDX licence identifier: MIT, BSD-3-Clause, Apache-2.0, GPL-3.0-or-later. Letters, digits, ., - and +, beginning with a letter; whether SPDX lists it is the generator's check.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq SpdxDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord SpdxDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show SpdxDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString SpdxDefined in horizon-config-0.8.0 · Horizon.Config.Types
datadata Language
#

The language a generated cabal declares as its default-language.

Instances6Bounded, Enum, Eq, Ord, Show, IsString
  • Bounded LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Enum LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Eq LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString LanguageDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype Extension
#

One GHC extension a generated cabal turns on by default (default-extensions): OverloadedStrings, BlockArguments, or a No-prefixed one that turns it off. A capitalised identifier; whether GHC knows it is the generator's check.

Instances4Eq, Ord, Show, IsString
  • Eq ExtensionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord ExtensionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show ExtensionDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString ExtensionDefined in horizon-config-0.8.0 · Horizon.Config.Types
datadata Warnings
#

The warnings contract of a repository's Haskell builds. werrorwolf is the estate's: every package also builds as a check with -Werror on top of its -Weverything. none declares no contract.

Instances6Bounded, Enum, Eq, Ord, Show, IsString
  • Bounded WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Enum WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Eq WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString WarningsDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype ModuleName
#

A Haskell module name as cabal lists one: dot-separated components, each a capitalised identifier (Tint.Lexer.Cabal).

Instances4Eq, Ord, Show, IsString
newtypenewtype SuiteName
#

The name of a test suite, as cabal names a component: words of letters and digits joined by -, each word holding a letter (laws, golden-files).

Instances4Eq, Ord, Show, IsString
  • Eq SuiteNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord SuiteNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show SuiteNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString SuiteNameDefined in horizon-config-0.8.0 · Horizon.Config.Types
newtypenewtype MainIs
#

The file a test suite runs, relative to its source directory, as cabal's main-is names it: Main.hs, Laws.hs, Golden/Main.hs. No empty, . or .. segment and no leading /; ends in .hs.

Constructors

Instances4Eq, Ord, Show, IsString
  • Eq MainIsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord MainIsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show MainIsDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString MainIsDefined in horizon-config-0.8.0 · Horizon.Config.Types
datadata Backend
#

A backend a package is built for: the native code generator, or GHC's JavaScript backend.

Instances6Bounded, Enum, Eq, Ord, Show, IsString
  • Bounded BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Enum BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Eq BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Ord BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • Show BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types
  • IsString BackendDefined in horizon-config-0.8.0 · Horizon.Config.Types