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.Schema

The value schema a config denotes: a package set and the export that turns it into nix. This is the vortex-native replacement for the dhall-era Horizon.Spec.V0_10 — the very same ADTs, built on the validated newtypes of Horizon.Config.Types, but deriving only Eq/Show (no FromDhall/ToDhall). dhall contributed nothing here but those instances, and the only place they were load-bearing was the generator's lock file, which now hashes a Show encoding instead.

A config script (a Spec) folds into a PackageSet; the writers (folded into horizon-config-shell) consume a PackageSetExportSettings or OverlayExportSettings and emit nix. One schema, one package: the DSL and its denotation live together, and horizon-spec is gone from the path.

  • 30 types
  • 15 values

Sources

9 declarations
newtypenewtype Repo
#

A git repository, as a URL.

Constructors

Instances2Eq, Show
  • Eq RepoDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show RepoDefined in horizon-config-0.8.0 · Horizon.Config.Schema
newtypenewtype SubdirPath
#

A source subdirectory within a repo or tarball. A real relative directory (parsed at the fold boundary), so the writers can place it into cabal2nix's subpath directly.

Instances2Eq, Show
  • Eq SubdirPathDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show SubdirPathDefined in horizon-config-0.8.0 · Horizon.Config.Schema
newtypenewtype LocalSource
#

A local package: its source is a subdirectory of the config's own repo (inputs.self), not a fetched artifact. Lets a set include a project developed alongside it — the code you are writing here — rather than only upstream releases.

Instances2Eq, Show
  • Eq LocalSourceDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show LocalSourceDefined in horizon-config-0.8.0 · Horizon.Config.Schema
datadata SecureRepository
#

A secure cabal repository a set pins packages from: its name (the one cabal keeps its index under), its URL, how many root keys must sign its root metadata, and the root key ids.

Instances2Eq, Show
datadata RepositorySource
#

A package pinned to a version in a secure repository other than Hackage. The repository is part of the source, so a pin that moves to another repository, or a repository that changes its URL or keys, is a different pin.

Instances2Eq, Show

Packages

9 declarations

The default: build the library (and executables) only, no tests/benchmarks, no jailbreak, no profiling, haddock on.

datadata SystemDep
#

A native library a package binds: the callPackage argument its derivation takes and the nixpkgs attribute that supplies it, e.g. libblst from pkgs.blst. Usually the two are the same name.

Instances2Eq, Show
  • Eq SystemDepDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show SystemDepDefined in horizon-config-0.8.0 · Horizon.Config.Schema
datadata HaskellPackage
#

A package in the set. What is genuinely per-package: where its source comes from, source patches, native (system) libraries it binds, and its cabal flags. Build policy (jailbreak, tests, …) is NOT here — that is a neighbourhood property of the whole set (Modifiers on PackageSet), all-or-nothing by design.

Constructors

Instances2Eq, Show
newtypenewtype Overlay
#

An overlay: the packages a base set is missing, as a package set.

Instances2Eq, Show
  • Eq OverlayDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show OverlayDefined in horizon-config-0.8.0 · Horizon.Config.Schema

Repository scope

5 declarations
datadata RepoScope
#

What a repository declares about the Haskell it builds, beyond its pins: the licence, the warnings contract, the default language and extensions of its packages, and the nixConfig of its flake. A set that declares none of it is noRepoScope.

Constructors

Instances2Eq, Show
  • Eq RepoScopeDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show RepoScopeDefined in horizon-config-0.8.0 · Horizon.Config.Schema
datadata PackageFacts
#

What a repository declares about one of its local packages beyond its pin: the modules it exposes and keeps internal, its test suites and the backends it builds for. A package with none is noPackageFacts.

Constructors

Instances2Eq, Show

Export targets

6 declarations

Bases

11 declarations
newtypenewtype Forge
#

Where a repository lives: forge "nixlab.openfp.net/…".

Constructors

Instances2Eq, Show
  • Eq ForgeDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show ForgeDefined in horizon-config-0.8.0 · Horizon.Config.Schema
newtypenewtype Branch
#

The branch a repository is followed on: branch "lts/ghc-10.0.x". The commit is the flake lock's, not the config's.

Constructors

Instances2Eq, Show
  • Eq BranchDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show BranchDefined in horizon-config-0.8.0 · Horizon.Config.Schema
datadata Base
#

What a set is built on. A Toolchain is the bottom of a chain: the set is built from scratch with its compiler and build tools. A Layer is an overlay on a lower package set, whose packages, versions and compiler the set takes as given.

Instances2Eq, Show
  • Eq BaseDefined in horizon-config-0.8.0 · Horizon.Config.Schema
  • Show BaseDefined in horizon-config-0.8.0 · Horizon.Config.Schema
valuebaseName :: Base -> SetName
#

The flake input a base is: a lower set's name, or a toolchain's repository name, the last segment of its path.

Smart constructors

5 declarations