↓ Skip to main content
  1. Documentation/

Install

The fastest path is the install script, but Homie is a single static binary — there’s nothing stopping you from grabbing it any way you like.


Install script (recommended)#

Detects your OS (Linux or macOS) and arch, downloads the matching release, verifies its SHA256, and drops homie into /usr/local/bin (or ~/.local/bin if you’re not root):

curl -fsSL https://homie.sh/install.sh | bash

The same one-liner works on Linux and macOS (Apple Silicon and Intel) — the script picks homie-linux-* or homie-darwin-* for you.

The script honours two environment overrides:

  • HOMIE_RELEASE — release tag to install (default: latest).
  • HOMIE_BINDIR — install location (default: /usr/local/bin when root, $HOME/.local/bin otherwise).

Pin to a specific release
#

curl -fsSL https://homie.sh/install.sh | HOMIE_RELEASE=v0.1.0 bash

Install to a custom location
#

curl -fsSL https://homie.sh/install.sh | HOMIE_BINDIR=$HOME/bin bash

Manual download
#

If you’d rather not pipe a script into your shell, grab the binary directly. Each release publishes a binary per OS/arch (homie-linux-<arch>, homie-darwin-<arch>) plus a SHA256SUMS file that covers them all.

OS=$(uname -s | tr '[:upper:]' '[:lower:]')   # linux or darwin
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
BASE=https://github.com/kurowski/homie/releases/latest/download
BIN="homie-${OS}-${ARCH}"

cd "$(mktemp -d)"
curl -fsSL -o "$BIN"      "$BASE/$BIN"
curl -fsSL -o SHA256SUMS  "$BASE/SHA256SUMS"

# Download under the real name so the checklist matches. macOS has no
# sha256sum, so filter to our line and fall back to shasum.
grep " ${BIN}\$" SHA256SUMS > homie.sum
if command -v sha256sum >/dev/null; then sha256sum -c homie.sum; else shasum -a 256 -c homie.sum; fi

chmod +x "$BIN"
sudo mv "$BIN" /usr/local/bin/homie
homie --version

Swap latest for a tag (e.g. https://github.com/kurowski/homie/releases/download/v0.1.0) to pin a specific version.


Build from source
#

Homie has no cgo requirement and no runtime dependencies — a recent Go toolchain is enough.

git clone https://github.com/kurowski/homie.git
cd homie
make build              # CGO_ENABLED=0 go build -ldflags=... -o homie ./cmd/homie
sudo install -m 0755 homie /usr/local/bin/homie
homie --version

Or skip the clone with go install:

go install github.com/kurowski/homie/cmd/homie@latest

That drops homie into $(go env GOBIN) (or $(go env GOPATH)/bin if GOBIN is unset). Make sure that directory is on your PATH.

The version string baked into the binary will say (devel) with go install; the make build path uses git describe so homie --version prints the tag.


Verifying the install
#

homie --version
homie doctor

homie doctor runs a no-op health check — useful even right after install to confirm the binary is wired up correctly.


Updating
#

homie updates itself:

homie selfupdate          # replace the binary with the latest release
homie selfupdate --check  # just see whether a newer release exists

It downloads the right binary for your OS and architecture, verifies it against the release’s SHA256SUMS, and replaces the binary in place — the same checks the install script performs. A binary in /usr/local/bin usually needs sudo homie selfupdate; the default user install in ~/.local/bin doesn’t.

Re-running the install script does the same job, and is the way to pin or downgrade:

curl -fsSL https://homie.sh/install.sh | bash                         # latest
curl -fsSL https://homie.sh/install.sh | HOMIE_RELEASE=v0.2.0 bash    # pin / downgrade
homie --version                                                       # confirm

Builds from source update the way they were installed — re-run go install …@latest, or git pull and make build from the checkout. homie selfupdate refuses to overwrite a from-source build, so a dev binary can’t be clobbered by accident.

If homie --version doesn’t show the version you just installed, a copy left on PATH by a different install method is probably shadowing it — which homie to find which one wins.

Re-running your environment repo’s bootstrap.sh also pulls the latest homie before applying, but that’s a full reapply of your environment, not just a binary bump — homie selfupdate when you only want the binary.

After upgrading, refresh the generated files in your environment repo:

cd ~/dotfiles && homie init --update

bootstrap.sh is versioned against homie — it encodes which release URL to fetch and how to hand your terminal to sudo — so a repo scaffolded against an older release keeps launching the old way until you refresh it. --update is a no-op when there’s nothing to do, and stops with a diff rather than clobbering anything you’ve edited. See Commands.