Install
One binary, no runtime. The Typst compiler is inside it, so there is nothing else to install.
curl -fsSL https://baudelaire.cstef.dev/install.sh -o install.sh
less install.sh # read it first
sh install.sh
That picks the right prebuilt binary for your machine, verifies its checksum, and drops it in ~/.local/bin.
On Windows, install.ps1 is the same script with the same knobs under the same names. It installs to %LOCALAPPDATA%\Programs\baudelaire.
irm https://baudelaire.cstef.dev/install.ps1 -OutFile install.ps1
notepad install.ps1 # read it first
.\install.ps1
Then:
baudelaire --version
Neither installer touches your PATH. If the install directory isn’t on it, both print the line that adds it.
Installer options
Set them as environment variables. In PowerShell they’re $env:PREFIX and so on, or named parameters on a downloaded copy.
| Variable | Default | Does |
|---|---|---|
PREFIX |
~/.local/bin |
Where the binary lands. |
VERSION |
latest | Pin a release, e.g. v0.0.11. |
FLAVOR |
full |
slim for the stripped build (below). |
LIBC |
auto | gnu or musl. Linux only; PowerShell has no equivalent. |
PREFIX=/usr/local/bin VERSION=v0.0.11 sh install.sh
Prebuilt binaries exist for Linux (x86_64 and aarch64, each gnu and musl), macOS on Apple Silicon and Intel, and Windows on x86_64. Windows on ARM has none: it would run the x86_64 build under emulation, so the installer refuses rather than quietly handing you a slow binary. Build a native one with cargo install baudelaire.
NOTE
The checksum comes from the same origin as the tarball. It catches a truncated or corrupted download. It is not a signature.The macOS builds are unsigned, so Gatekeeper blocks the first run. Clear the quarantine flag once:
xattr -d com.apple.quarantine ~/.local/bin/baudelaire
With cargo
cargo binstall baudelaire # same prebuilt tarballs, no compile
cargo install baudelaire # build from crates.io
cargo install --git https://github.com/cestef/baudelaire # build from git
cargo install works on any platform Rust targets, which is the way in when no prebuilt binary fits.
Slim builds
Every release ships in two flavors. full is the default. slim drops the optional capabilities and most of the binary size with them: the bundled fonts, the CSS and JavaScript toolchains, the card renderer.
FLAVOR=slim sh install.sh
$env:FLAVOR = "slim"; .\install.ps1
From source that’s cargo install baudelaire --no-default-features, and you can add any single capability back with --features css.
What slim leaves out:
| Feature | Off means |
|---|---|
embedded-fonts |
Only the host’s fonts and whatever typst { fonts { paths } } names are available, so keep this one for containers and CI images that ship neither. |
js |
assets { bundle } warns and .js files are copied verbatim. |
css |
assets { minify } and assets { targets } warn, and .css files are copied verbatim. |
sass |
A .scss or .sass file under the asset tree warns and is left where it lies, so nothing is published from it. |
tailwind |
assets { tailwind } warns and no utility stylesheet is generated. |
images |
assets { images { optimize } } and { responsive } warn, and PNG/JPEG assets are copied unchanged. |
cards |
artifacts { cards } warns and renders no card. |
pdf |
artifacts { pdf } and a bundle asking for pdf warn, and no PDF is written. |
epub |
A bundle asking for epub warns and no EPUB is written. |
ssh |
deploy { ssh } warns and that destination is skipped. deploy { s3 } is unaffected. |
announce |
announce { standard } warns, the announce command is gone, and the verification artifacts are not emitted. |
themes |
The theme command is gone, and the four shipped themes are not carried; a theme there is a directory you put in the project yourself. |
markdown |
A .md file under content/ is not a page at all, and @baudelaire/markdown is not served, so md cannot be imported either. |
Turning one off never changes what a site that doesn’t ask for it produces. A site that does ask gets a baudelaire::feature::missing warning naming the setting, the feature to rebuild with, and what was emitted instead.
WARN
assets { fingerprint } needs css. A verbatim stylesheet still names its images by their pre-hash filenames, so a slim build turns fingerprinting off for the whole build rather than shipping stylesheets that 404.
From a checkout
Working on baudelaire itself:
just install
Next: the quickstart.