Install
Giant ships as a small suite of static binaries: the giant engine plus
the porcelains it dispatches to (giant-build, giant-task, giant-tui,
and friends). No runtime dependencies, no daemon, no JVM. Pick whichever
installation method fits your environment.
Pre-built binaries (recommended)
Section titled “Pre-built binaries (recommended)”The install script detects your OS and architecture, downloads the
matching release tarball from GitHub, and installs the suite into
/usr/local/bin (or ~/.local/bin if you don’t have root):
curl -fsSL https://giant.build/install.sh | shWant a specific version? Pass GIANT_VERSION:
curl -fsSL https://giant.build/install.sh | GIANT_VERSION=0.1.0 shSupported platforms:
| Platform | Triple |
|---|---|
| Linux x86_64 (musl, static) | x86_64-unknown-linux-musl |
| Linux aarch64 (musl, static) | aarch64-unknown-linux-musl |
| macOS x86_64 | x86_64-apple-darwin |
| macOS aarch64 (Apple Silicon) | aarch64-apple-darwin |
Each release ships a SHA256SUMS file and the install script verifies
the tarball against it. To check by hand:
curl -fsSL https://github.com/giantdotbuild/giant/releases/latest/download/SHA256SUMSFrom source
Section titled “From source”The engine alone can’t do much - giant build dispatches to the
giant-build porcelain on PATH - so install at least the engine and the
build porcelain:
git clone https://github.com/giantdotbuild/giantcd giantcargo install --path crates/giant # the enginecargo install --path crates/giant-build # giant build / test / verify
# Add the other porcelains you want (each becomes `giant <name>`):cargo install --path crates/giant-taskcargo install --path crates/giant-gencargo install --path crates/giant-tui
# Engine with the remote-cache feature (Bazel HTTP cache protocol)cargo install --path crates/giant --features remoteRequires Rust 1.95 or newer.
Nix flake
Section titled “Nix flake”The repo ships a flake exposing every first-party binary as its own
package, plus a giant-suite meta-package that bundles all of them.
CI pushes every build to the giant Cachix
cache and the flake advertises it, so when
nix asks whether to trust the substituter, saying yes gets you prebuilt
binaries instead of a compile (Linux and macOS, x86_64 and aarch64 on
Linux, aarch64 on macOS):
# Everything (the giant-suite meta-package: all first-party binaries)nix profile install github:giantdotbuild/giant
# Or pick individual binariesnix profile install github:giantdotbuild/giant#giantnix profile install github:giantdotbuild/giant#giant-tui
# Run without installingnix run github:giantdotbuild/giant -- buildnix run github:giantdotbuild/giant#giant-tui
# Build locally and inspect the resultgit clone https://github.com/giantdotbuild/giantcd giantnix build .#giant-suite./result/bin/giant --versionThe flake doesn’t replace devenv.nix - devenv stays the dev shell
(devenv shell for the full toolchain). The flake’s devShells.default
is a thin fallback for people who don’t run devenv.
The binary cache
Section titled “The binary cache”CI builds every commit on main for x86_64/aarch64 Linux and aarch64
macOS and pushes the results to
giant.cachix.org, so nix installs
substitute prebuilt binaries instead of compiling.
The flake advertises the cache, so plain flake commands just need a yes
at the trust prompt (or --accept-flake-config in scripts):
$ nix profile install github:giantdotbuild/giantdo you want to allow configuration setting 'extra-substituters'to be set to 'https://giant.cachix.org' (y/N)? yTo trust it permanently (no prompts, works for transitive use too):
cachix use giant# or by hand, in nix.conf:# extra-substituters = https://giant.cachix.org# extra-trusted-public-keys = giant.cachix.org-1:v3xudJPm6zp3waq/lTUVqKBwm+BWzbs3aVZopsD4QM4=In a devenv project
Section titled “In a devenv project”Add the flake as an input, put the suite in your packages, and pull the cache - devenv has cachix support built in:
inputs: giant: url: github:giantdotbuild/giant{ inputs, pkgs, ... }:{ packages = [ inputs.giant.packages.${pkgs.stdenv.system}.giant-suite ]; cachix.pull = [ "giant" ];}One caveat, and it applies to any Cachix cache, not just this one:
devenv fetches the cache’s signing key from Cachix automatically, but
the nix daemon only accepts substituters from users in its
trusted-users list. For everyone else it prints a warning and
compiles from source. This is the daemon’s security model - accepting
a cache means accepting its binaries into the shared store - so no
repo-local config can grant it. One-time setup per machine, either:
# NixOS / nix-darwin configuration - all devenv caches then just worknix.settings.trusted-users = [ "root" "@wheel" ];or trust this one cache system-wide without trusting the user:
sudo cachix use giant # appends the substituter + key to /etc/nix/nix.confAfter either, every devenv shell in a project that pulls the cache
has the whole suite on PATH, prebuilt.
The flake also exposes overlays.default for setups that prefer
pkgs.giant / pkgs.giant-suite via an overlay.
Verify the install
Section titled “Verify the install”$ giant --versiongiant 0.1.0
$ giant --helpUninstall
Section titled “Uninstall”Remove the binaries wherever your install method placed them:
(cd "$(dirname "$(which giant)")" && rm giant giant-*)Clear the cache too if you don’t want it lingering:
giant clean -y# orrm -rf ~/.cache/giantShell completions
Section titled “Shell completions”# bashgiant completions bash > /etc/bash_completion.d/giant
# zshgiant completions zsh > "${fpath[1]}/_giant"
# fishgiant completions fish > ~/.config/fish/completions/giant.fish