install · gutocarvalho.net

install.gutocarvalho.net

Small, focused, self-contained scripts to bootstrap a fresh machine — Linux servers and macOS workstations. Each script does one thing, checks its own requirements, and runs on its own. The code is kept simple on purpose: it should be friendly to people starting out with shell.

Heads-up: these are curl … | bash installers. Read a script before running it — that is good hygiene for anything you pipe into a shell, ours included. You can always open https://install.gutocarvalho.net/<name>.sh first.

Quick start

The friendly front door is active.sh, a thin dispatcher. With no argument (or list) it prints the catalog; with one or more targets it installs them in order and stops on the first failure:

# see everything available
curl -fsSL https://install.gutocarvalho.net/active.sh | bash -s -- list

# install one thing
curl -fsSL https://install.gutocarvalho.net/active.sh | bash -s -- docker

# chain several (runs in order)
curl -fsSL https://install.gutocarvalho.net/active.sh | bash -s -- docker vimrc ctop

Every script is also self-contained, so you can always skip the dispatcher and run one directly:

curl -fsSL https://install.gutocarvalho.net/docker.sh | bash

Catalog

Linux servers (Debian-like, amd64, run as root)

Target What it installs
docker docker (get.docker.com) + a minimal daemon.json + bash-completion + docker-compose + ctop + the humaniza log filter
compose the standalone docker-compose binary
ctop ctop, a top-like interface for containers
lsd lsd, a modern ls with icons, plus ls/ll/la/lt aliases in root's .bashrc
vimrc a minimal /root/.vimrc for servers
kubectl kubectl, the kubernetes CLI
kubetail kubetail — tail multiple pods/containers at once
helm helm 3 (via the official get-helm-3)
velero the velero client (backup/restore for kubernetes)
k9s k9s, a terminal UI for kubernetes
k8s-tools all of the above at once: kubectl, kubetail, helm, velero, k9s
rke2 RKE2 (get.rke2.io) + the k8s-tools client tools

macOS workstations (run as your normal user)

Target What it installs
brew Homebrew, and wires brew shellenv into ~/.zprofile
panels two SketchyBar panels (top + bottom) with config, fonts and the Wi-Fi helper

Both

Target What it installs
tmux tmux + my config (Dracula theme, no plugins); macOS via brew, Linux via apt
starship starship prompt + my config (gruvbox_dark); macOS via brew, Linux via the official installer; wires starship init into your .bashrc/.zshrc

Usage per target

Any of these also works through active.sh (… | bash -s -- <target>).

# Linux (as root)
curl -fsSL https://install.gutocarvalho.net/docker.sh    | bash
curl -fsSL https://install.gutocarvalho.net/compose.sh   | bash
curl -fsSL https://install.gutocarvalho.net/ctop.sh      | bash
curl -fsSL https://install.gutocarvalho.net/lsd.sh       | bash
curl -fsSL https://install.gutocarvalho.net/vimrc.sh     | bash
curl -fsSL https://install.gutocarvalho.net/kubectl.sh   | bash
curl -fsSL https://install.gutocarvalho.net/kubetail.sh  | bash
curl -fsSL https://install.gutocarvalho.net/helm.sh      | bash
curl -fsSL https://install.gutocarvalho.net/velero.sh    | bash
curl -fsSL https://install.gutocarvalho.net/k9s.sh       | bash
curl -fsSL https://install.gutocarvalho.net/k8s-tools.sh | bash   # all five at once
curl -fsSL https://install.gutocarvalho.net/rke2.sh      | bash

# macOS (as your user)
curl -fsSL https://install.gutocarvalho.net/brew.sh   | bash
curl -fsSL https://install.gutocarvalho.net/panels.sh | bash

# both
curl -fsSL https://install.gutocarvalho.net/tmux.sh     | bash
curl -fsSL https://install.gutocarvalho.net/starship.sh | bash

docker (daemon.json)

docker installs Docker via get.docker.com, plus bash-completion, the docker-compose plugin and ctop, and drops a small opinionated /etc/docker/daemon.json:

It also drops humaniza in /usr/local/bin — a tiny, dependency-free (bash+awk) stdin filter that humanizes RFC3339 timestamps (2026-08-15T10:23:45.123Z2026-08-15 10:23:45) and colorizes log levels (FATAL/ERROR/WARN/INFO/DEBUG). Colors auto-disable when the output is not a TTY. Pipe any log stream through it:

docker logs -f --tail=10 <container> | humaniza
journalctl -u some.service -f      | humaniza
humaniza < /path/to/file.log

rke2

rke2 installs RKE2 from get.rke2.io and the k8s-tools client tools (kubectl, kubetail, helm, velero, k9s) as a dependency. It installs the rke2 binary and its systemd units only — it does not start a cluster for you. Bring the node up yourself with systemctl enable --now rke2-server (or rke2-agent). Override defaults with RKE2_TYPE (server/agent) and RKE2_CHANNEL.

brew (macOS)

Installs Homebrew non-interactively and adds brew shellenv to ~/.zprofile. Idempotent — if brew is already there it just ensures the shellenv line. Homebrew installs the Xcode Command Line Tools for you if they are missing.

panels (macOS)

Sets up two SketchyBar panels:

It installs the fonts, deploys the config to ~/.config/{sketchybar,bottom_bar} (backing up anything already there), and builds the Objective-C wifiname helper that reads the real Wi-Fi SSID (macOS hides it otherwise). Approve the Location prompt once, then sketchybar --reload. Needs brew and the Xcode Command Line Tools. The config is not vendored here — it is pulled from the open/mysketchybar repo, the single source of truth for the panels.

tmux (macOS / Linux)

Installs tmux and deploys the config to ~/.config/tmux (tmux.conf + dracula.conf, no TPM/plugins). On macOS it uses homebrew and installs a Nerd Font; on Debian-like Linux it uses apt and swaps the clipboard command from pbcopy to xclip/wl-copy. Run it as your normal user. The config is vendored in tmux/.

starship (macOS / Linux)

Installs the starship prompt and deploys my gruvbox_dark config to ~/.config/starship.toml (backing up anything already there). On macOS it uses homebrew (and installs a Nerd Font); on Linux it uses the official installer script (starship is not reliably packaged in apt), dropping the binary in /usr/local/bin. It then wires eval "$(starship init …)" into whichever of ~/.bashrc / ~/.zshrc exist, idempotently (a marker block, so re-running never duplicates). Run it as your normal user. The prompt needs a Nerd Font in your terminal. The config is vendored in starship/.

How it works

Requirements

Configuration

Override the download source with environment variables when needed: INSTALL_BASE_URL (active.sh), PANELS_SRC / PANELS_ARCHIVE (panels.sh), TMUX_SRC / TMUX_ARCHIVE (tmux.sh), STARSHIP_SRC / STARSHIP_ARCHIVE (starship.sh).

Contributing

Source, issues and merge requests: https://gitlab.gutocarvalho.net/open/install

Found a bug, a broken download, or want to add an installer? Open an issue or send a merge request — contributions are welcome.

The scripts are deliberately beginner-friendly — plain, linear shell with commented steps and no clever tricks. New installers should keep that style, stay self-contained, and get one line added to active.sh's catalog.

Author

Guto Carvalhoguto@bolha.iohttps://gutocarvalho.net

On the fediverse:

Mattermost: https://mattermost.bolha.chat

Come say hi and learn about our collective at https://bolha.io ;)