Skip to content

Installation Profiles ​

This document provides detailed information about each installation profile and the packages they include.

Profile Overview ​

Profiles allow you to install groups of related tools based on your workflow. Each profile can be installed independently or combined with others.

sh
# Install multiple profiles
./setup/setup-osx.sh -p 'devops,secops,js'

Core Profile ​

The Core profile is always installed and provides essential system utilities.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
build-essentialEssential packages for building debian packages✓-apt
ca-certificatesCommon CA certificates✓homebrewapt
curlCommand line tool for transferring data with URLs✓homebrewapt
gitDistributed version control system✓-apt
gnupgEncryption tool (GPG)✓homebrewapt
gsedGNU sed, installed under the name gsed✓homebrew-
gzipData compression program✓homebrewapt
jqJSON processor tool✓homebrewapt
localesTools to generate locale definitions✓-apt
oh-my-zshZsh configuration manager✓shellshell
sedNon-interactive command-line text editor✓-apt
tarCreate and manipulate tar archives✓-apt
unzipDe-archiver for zip files✓homebrewapt
wgetRetrieve files using HTTP, HTTPS, FTP and FTPS✓homebrewapt
xz-utilsXZ format compression utilities✓homebrewapt
zshZ shell, made the default login shell✓-apt

On macOS the system tools stay in place: git comes with the Command Line Tools, zsh ships with macOS and the BSD sed is not replaced. GNU sed is installed as gsed, and .zshrc aliases sed to it when gsed is present. On Debian, coreutils is installed by the Base profile (see below).


Base Profile ​

The Base profile provides enhanced CLI tools and common applications for daily development work.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
batCat command with syntax highlighting✓homebrewmise
bat-extrasBat combo with other commands (batgrep, batman, etc.)✓homebrewshell
chafaImage viewer in terminal-homebrewapt
cheatCreate and view interactive cheat sheets✓homebrewmise
coreutilsBasic file, shell and text manipulation utilities (Debian)✓-apt
dockerContainer runtime (Debian: CLI/engine via apt; macOS: bundled with Docker Desktop, see Applications below)✓-apt
exiftoolMetadata writer and reader tool-homebrewapt
ezaModern ls replacement with colors and icons✓homebrewmise
fdSimple, fast alternative to 'find'✓homebrewmise
ffmpegAudio video manipulation tool-homebrewapt
fontconfigFont configuration library, provides fc-cache (Debian)--apt
fzfCommand-line fuzzy finder✓homebrewmise
ghGitHub official CLI-homebrewmise
glabGitLab official CLI-homebrewmise
glowRender markdown in the CLI with pizzazz✓homebrewmise
lazydockerSimple terminal UI for docker commands-homebrewmise
lazygitSimple terminal UI for git commands-homebrewmise
manManual page viewer (Debian)✓-apt
man-dbManual page database and tools (Debian)✓-apt
manpages-devManual pages about using GNU/Linux for development✓-apt
miseVersion manager: language runtimes on both platforms, plus CLI binaries on Debian✓homebrewapt
nerd-fontsHack and Symbols Only fonts for neovim (copied to ~/.fonts, on macOS also ~/Library/Fonts)-shellshell
nmapNetwork port scanning utility-homebrewapt
nvimHyperextensible Vim-based text editor-homebrewmise
pandocUniversal markup converter-homebrewapt
rcloneSwiss army knife of cloud storage✓homebrewmise
ripgrepRecursively search directories for regex patterns✓homebrewmise
sshsInteractive SSH client✓homebrewmise
tlrctldr client (official), simplified man pages-homebrewmise
treeDisplay filesystem as tree✓homebrewapt
ttydShare terminal over the web-homebrewmise
vhsCLI home video recorder (terminal recordings)-homebrewmise
vimUbiquitous text editor✓homebrewapt
watchExecute a program periodically✓homebrewapt
yqYAML processor (like jq for YAML)✓homebrewmise

On Debian, mise comes from its own apt repository (https://mise.jdx.dev/deb), added with signed-by and a key that is only trusted when its fingerprint is the one mise publishes (24853EC9F655CE80B48E6C3A8B81C9D17413A06D); apt upgrade then keeps it current. A mise installed earlier with the mise.run script (in ~/.local/bin) is kept as it is.

On Debian, bat-extras is installed from its release zip, pinned to one version and checked against its sha256, into ~/.local/bin (man pages in ~/.local/share/man), without root and without running its build script. A copy that an older version of the setup built into /usr/local/bin stays there unused, since ~/.local/bin comes first in PATH; remove it with sudo rm /usr/local/bin/{batdiff,batgrep,batman,batpipe,batwatch,bat-modules,prettybat}.

GitHub CLI Extensions ​

ExtensionDescriptionLitemacOSDebian
gh-dashGitHub dashboard in terminal-ghgh
gh-notifyGitHub notifications in terminal-ghgh

Applications (macOS only) ​

ApplicationDescriptionLiteInstallation
BravePrivacy-focused web browser-homebrew cask
Docker DesktopContainer management GUI + CLI✓homebrew cask
FirefoxPrivacy-focused web browser-homebrew cask
InsomniaHTTP and GraphQL client-homebrew cask
MattermostTeam collaboration platform-homebrew cask
OpenVPN ConnectVPN client-homebrew cask
VS CodeCode editor and IDE-homebrew cask

DevOps Profile ​

The DevOps profile provides container orchestration, infrastructure as code, and cloud platform tools.

Within this profile, tools are further grouped into categories (k8s, iac, cloud, misc). By default all categories are installed; set DEVOPS_CATEGORIES to a comma-separated subset to install only what you need, e.g. for a container image that's only used for Kubernetes debugging:

sh
DEVOPS_CATEGORIES=k8s ./setup/setup-debian.sh -p devops -l

Command Line Interfaces ​

The Category column corresponds to the DEVOPS_CATEGORIES values described above.

PackageDescriptionCategoryLitemacOSDebian
actRun GitHub Actions locallymisc-homebrewmise
actionlintStatic checker for GitHub Actions workflowsmisc-homebrewmise
ansibleIT automation tooliac✓homebrewuv
ansible-lintLinter for Ansible playbooks (via ansible-dev-tools)iac-homebrewuv
argoArgo Workflows CLIk8s-homebrewmise
argocdArgo CD CLI for GitOpsk8s-homebrewmise
chart-testingHelm chart linting and testingk8s-homebrewmise
coderCoder remote development CLImisc-homebrewmise
helmKubernetes package managerk8s✓homebrewmise
helm-docsAuto-generate Helm chart documentationk8s✓homebrewmise
k6Modern load testing toolmisc-homebrewmise
k9sKubernetes TUIk8s-homebrewmise
kindKubernetes in Dockerk8s-homebrewmise
krewkubectl plugin managerk8s✓homebrewmise
kubectlKubernetes command-line toolk8s✓homebrewmise
kubectxKubernetes context switcherk8s✓homebrewmise
kubensKubernetes namespace switcher (shipped with the kubectx formula on macOS; its own mise tool on Debian)k8s✓homebrewmise
libonig-devOniguruma regex library, development files (installed before ansible-dev-tools)iac--apt
mkcertMake locally trusted certificates (macOS only, not installed on Debian)misc-homebrew-
ocOpenShift CLIk8s✓homebrewmise
orasOCI Registry As Storage CLImisc-homebrewmise
python3-devPython development files (installed before ansible-dev-tools)iac--apt
scwScaleway CLIcloud-homebrewmise
sshpassNon-interactive SSH password authmisc✓homebrewapt
teleportModern SSH server for clustersmisc-homebrewapt
terraformInfrastructure as code tooliac✓homebrewmise
uvPython package installer (installs ansible on Debian)iac✓-mise
veleroKubernetes backup and migrationk8s-homebrewmise
yamllintLinter for YAML filesmisc-homebrewmise

On macOS, terraform comes from HashiCorp's tap (hashicorp/tap/terraform): homebrew/core stopped at 1.5.7, the last release before the license change. A terraform installed earlier from homebrew/core is uninstalled first, because Homebrew cannot install the tap formula next to it.

kubectl Plugins (via Krew) ​

PluginDescriptionLiteInstallation
cmctlcert-manager CLI (homebrew/mise, the krew plugin is stuck on 2.1.0)✓homebrew/mise
cnpgCloudNativePG operator CLI✓krew
df-pvShow disk usage of PersistentVolumes✓krew
ktopTop-like tool for Kubernetes✓krew
neatClean up Kubernetes YAML output (macOS only)✓krew
sternMulti-pod log tailing✓krew
view-secretDecode Kubernetes secrets easily✓krew

SecOps Profile ​

The SecOps profile provides security scanning, secret management, and compliance tools.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
ageSimple, modern file encryption-homebrewmise
cosignContainer signing and verification✓homebrewmise
diveDocker image layer explorer-homebrewmise
gitleaksSecret scanner for git repos✓homebrewmise
kubescapeKubernetes security scanner-homebrewmise
kyvernoKubernetes policy engine CLI-homebrewmise
sopsEncrypted file editor-homebrewmise
trivyVulnerability scanner✓homebrewmise
vaultHashiCorp Vault CLI-homebrewmise

On macOS, vault comes from HashiCorp's tap (hashicorp/tap/vault) for the same reason as terraform: homebrew/core stopped at 1.14.4. A vault from homebrew/core is uninstalled first.


JavaScript Profile ​

The JavaScript profile provides Node.js runtime and package managers.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
@antfu/niPackage manager wrapper-npmnpm
bunFast JavaScript runtime-misemise
nodeJavaScript runtime✓misemise
npmNode package manager (ships with node)✓nodenode
pnpmFast, disk-efficient package manager-misemise
yarnPackage manager and project manager-misemise

Go Profile ​

The Go profile provides Go language development tools and Kubernetes operator SDKs.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
cobra-cliCLI application builder-gogo
goGo programming language✓misemise
kubebuilderSDK for building Kubernetes APIs-homebrewmise
kustomizeKubernetes YAML customization-homebrewmise
operator-sdkKubernetes operator SDK-homebrewmise

AI Profile ​

The AI profile provides tools for running AI coding agents and large language models locally.

Command Line Interfaces ​

PackageDescriptionLitemacOSDebian
claude-codeClaude Code CLI-homebrew caskshell
copilot-cliGitHub Copilot CLI-homebrew caskshell
direnvPer-directory env loader (scoped agent secrets)✓homebrewmise
rtkCLI proxy that reduces LLM token usage-homebrewshell

Applications ​

ApplicationDescriptionLitemacOSDebian
OllamaRun LLMs locally-homebrew caskshell

Extras Profile (macOS Only) ​

The Extras profile provides personal productivity and media applications.

Applications ​

ApplicationDescriptionLiteInstallation
AudacityAudio editing software-homebrew cask
DiscordVoice and chat platform-homebrew cask
Raspberry Pi ImagerOS image flasher-homebrew cask
SoulseekP2P file sharing-homebrew cask
TransmissionBitTorrent client-homebrew cask
VLCMedia player✓homebrew cask

Installation Tips ​

Combining Profiles ​

Profiles can be mixed and matched:

sh
# Minimal full-stack developer
./setup/setup-osx.sh -l -p 'base,js'

# DevOps with security tools
./setup/setup-osx.sh -p 'devops,secops'

# Everything except extras
./setup/setup-osx.sh -p 'base,ai,devops,go,js,secops'

Lite Mode Strategy ​

Use lite mode (-l) to install only essential tools, then add specific tools manually:

sh
./setup/setup-osx.sh -l -p 'devops,js'
brew install <additional-tool>

Running One Profile on Its Own ​

A profile script can also be run directly, without the commons and oh-my-zsh steps of the setup script. It installs mise first when the profile needs it, and runs in full mode unless FULL_MODE_SETUP=false asks for lite mode:

sh
./setup/profiles/osx/setup-devops.sh
FULL_MODE_SETUP=false DEVOPS_CATEGORIES=k8s ./setup/profiles/debian/setup-devops.sh

Adding a Profile ​

The setup scripts find the profiles in setup/profiles/<os>/: every setup-<name>.sh there is a profile, listed by -h, accepted by -p <name> and run in its turn. Two header lines describe it:

sh
#!/bin/bash
# Profile: One-line description shown by -h
# Order: 45

Profiles run by increasing Order (base is 10, ai 70). Nothing else needs to be edited. On macOS, the Homebrew packages of a profile live in setup/profiles/osx/<name>.Brewfile, installed by the profile script with brew bundle --file (only what is missing or outdated is installed). A Brewfile reads HOMEBREW_DOTFILES_LITE (1 with -l) to leave its unless lite block out, the devops one also HOMEBREW_DOTFILES_DEVOPS_CATEGORIES, and formulae from third-party taps are written tap/formula with trusted: true. What is not a Homebrew package (mise tools, krew plugins, fonts, gh extensions) stays in the profile script, and goes through run so that -n prints it.

Package Sources ​

  • homebrew - macOS package manager (CLI tools, via formulae)
  • homebrew cask - Homebrew casks: macOS GUI apps, plus the CLIs that Homebrew only ships as casks (claude-code, copilot-cli)
  • apt - Debian package manager (system packages)
  • mise - Language runtimes on both platforms; portable CLI binaries on Debian
  • shell - Shell script installation
  • npm - Node package manager (npm install --global)
  • uv - Python tool installer (uv tool install; ansible and ansible-lint on Debian)
  • go - Go package manager (go install)
  • gh - GitHub CLI extension
  • krew - kubectl plugin manager