Skip to content

kelp/gale-recipes

Repository files navigation

gale-recipes

Recipe repository for Gale.

Each recipe is a TOML file that describes how to build a package from source. CI builds every recipe on macOS ARM64 and Linux AMD64, pushes binaries to GHCR, and attests provenance via Sigstore. The binaries are a cache. The recipe is the source of truth.

Layout

Recipes live in letter-bucketed directories. CI manages binary indexes and version history alongside each recipe.

recipes/
  j/
    jq.toml             # recipe — human-authored
    jq.binaries.toml    # binary index + ledger — CI-managed
    jq.versions         # version history

Each .binaries.toml has two parts. The head mirror (a top-level version plus one [<platform>] table per platform) is what deployed gale clients parse. Below it, [[history]] blocks form an append-only ledger: one entry per published <version>-<revision>, recording each platform's archive sha256 and GHCR manifest_digest. The ledger is unbounded by design — entries are never rewritten or dropped, and the required Ledger Check rejects any PR that tries. Pruning old entries would be a deliberate, ruleset-visible act, not routine maintenance.

Recipe Format

[package]
name = "jq"
version = "1.8.1"
description = "Lightweight and flexible command-line JSON processor"
license = "MIT"
homepage = "https://jqlang.github.io/jq"

[source]
repo = "jqlang/jq"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-1.8.1.tar.gz"
sha256 = "2be64e71..."

[build]
steps = [
  "./configure --prefix=${PREFIX} --with-oniguruma=builtin",
  "make -j${JOBS}",
  "make install",
]

Build steps run in a clean shell. Available variables:

Variable Value
${PREFIX} Install destination
${VERSION} Package version
${JOBS} CPU count
${OS} darwin or linux
${ARCH} arm64 or amd64
${PLATFORM} darwin-arm64 or linux-amd64

Contributing

Create a recipe:

gale import homebrew <name>          # starting point
curl -sL <url> | shasum -a 256      # verify sha256

Write it to recipes/<first-letter>/<name>.toml. Build and lint:

gale build recipes/<letter>/<name>.toml
just lint

See docs/creating-recipes.md for build patterns (Cargo, Go, autotools, cmake) and dependency conventions.

Development

Dev tools are managed by gale itself:

gale sync --local    # install from local recipes
just lint            # gale lint + actionlint
just update-gale     # rebuild gale from source

Direnv activates the environment automatically on cd.

About

Official recipe repository for Gale package manager

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors