HORIZON HASKELLDocslts/ghc-10.0.x77a86622026-10-31Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 77a8662 · 2026-10-31

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.

Contents
  1. Sources
  2. Packages
  3. Repository scope
  4. Export targets
  5. Bases
  6. Smart constructors
Synopsis

Sources

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

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

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

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

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

Repository scope

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

Bases

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