Skip to content

Installation

This guide covers the installation process for both macOS and Debian-based systems.

Prerequisites

macOS

  • macOS 10.15 (Catalina) or later
  • Command Line Tools for Xcode (will be installed automatically)
  • Internet connection

Debian/Ubuntu

  • Debian 11+ or Ubuntu 20.04+
  • sudo privileges
  • Internet connection

Installation Methods

The quickest way to get started is using the one-line installer:

macOS:

sh
curl -fsSL https://raw.githubusercontent.com/this-is-tobi/dotfiles/main/setup/setup-osx.sh | bash

Debian/Ubuntu:

sh
curl -fsSL https://raw.githubusercontent.com/this-is-tobi/dotfiles/main/setup/setup-debian.sh | bash

Manual Installation

If you prefer to review the scripts before running them:

  1. Clone the repository:
sh
git clone https://github.com/this-is-tobi/dotfiles.git
cd dotfiles
  1. Run the setup script:

For macOS:

sh
./setup/setup-osx.sh

For Debian/Ubuntu:

sh
./setup/setup-debian.sh

Installation Options

Profiles

Install additional profiles based on your needs using the -p flag:

sh
# Single profile
./setup/setup-osx.sh -p devops

# Multiple profiles (comma-separated)
./setup/setup-osx.sh -p 'devops,secops,js'

# All profiles
./setup/setup-osx.sh -p 'base,ai,devops,go,js,secops'

Available profiles:

  • base - Base packages and utilities
  • ai - AI and machine learning tools
  • devops - DevOps tools (Docker, Kubernetes, Terraform, etc.)
  • go - Go development environment
  • js - JavaScript/Node.js development environment
  • secops - Security tools (scanners, secret management, etc.)
  • extras - Extra personal packages (macOS only)

An unknown profile name (e.g. a typo) is rejected immediately with an error listing the valid profiles, rather than being silently ignored.

Lite Mode

For minimal installations with only essential tools, use the -l flag:

sh
./setup/setup-osx.sh -l
./setup/setup-osx.sh -l -p devops  # Lite mode with devops profile

Lite mode installs only packages marked with an "x" in the "Lite mode" column of the package tables.

Dry Run

To preview which profiles and options would be applied without installing anything, use the -n flag:

sh
./setup/setup-osx.sh -n -p 'devops,secops,js'
./setup/setup-debian.sh -n -p 'devops,secops,js'

This prints the resolved settings and exits before any package installation, dotfile copying, or interactive prompts.

Help

Display all available options:

sh
./setup/setup-osx.sh -h
./setup/setup-debian.sh -h

Non-Interactive Mode

The setup scripts are designed to run non-interactively by default, making them safe for automation and CI/CD pipelines.

Teleport Version (DevOps Profile)

Teleport is a Debian/Ubuntu-only, full-mode-only install (it's part of the misc category within the DevOps profile, installed by install_additional_setup, which -l/lite mode skips entirely). It defaults to v18 if not specified:

sh
# Uses default v18
./setup/setup-debian.sh -p devops

# Override with specific version
TELEPORT_VERSION=v17 ./setup/setup-debian.sh -p devops

-l (lite mode) or DEVOPS_CATEGORIES set to anything excluding misc (e.g. DEVOPS_CATEGORIES=k8s) will skip Teleport entirely — in either case, TELEPORT_VERSION has no effect since the install step never runs.

Use Cases

Non-interactive mode is particularly useful for:

  • CI/CD pipelines - Automated environment setup
  • Docker builds - Installing dotfiles in containers
  • Configuration management - Ansible, Terraform provisioning
  • Scripted deployments - Batch server setup

Example: Docker

dockerfile
FROM debian:bookworm

# Optional: override default Teleport version (only takes effect in full
# mode, i.e. without -l — see the note above)
ENV TELEPORT_VERSION=v17

RUN apt update && apt install -y curl git sudo && \
    git clone https://github.com/this-is-tobi/dotfiles.git /root/dotfiles && \
    cd /root/dotfiles && \
    ./setup/setup-debian.sh -p devops

For a leaner image that only needs Kubernetes tooling (skipping Teleport, Terraform, Ansible, cloud CLIs, etc. entirely), combine -l with DEVOPS_CATEGORIES instead — see DevOps Profile:

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

What Gets Installed

Core Components

Both platforms install:

  • oh-my-zsh - Zsh configuration framework with plugins
  • CLI tools - Essential command-line utilities (curl, wget, jq, etc.)
  • Git configuration - Custom .gitconfig template
  • Shell functions - Custom utility functions
  • Completions - Auto-completion for various tools
  • GitHub Copilot instructions - AI-assisted development guidelines

Platform-Specific

macOS:

  • Homebrew package manager
  • Homebrew Cask applications
  • macOS-specific configurations

Debian/Ubuntu:

  • WakeMeOps repository for modern packages
  • apt package management
  • Debian-specific system configurations

Post-Installation

1. Restart Your Shell

After installation, restart your shell or source the configuration:

sh
exec zsh
# or
source ~/.zshrc

2. Configure Environment Variables

Edit the environment file to add your API keys and custom settings:

sh
vim ~/.config/dotfiles/env.sh

Example configuration:

sh
# Context7 API key for documentation access
export CONTEXT7_API_KEY="your_api_key_here"

# Add other custom environment variables
# export MY_VAR="value"

3. Review Installed Tools

List all custom functions:

sh
lsfn

Check installed packages:

sh
# macOS
brew list

# Debian
apt list --installed

4. Customize Dotfiles

The dotfiles are installed as templates. Customize them to your needs:

sh
# Edit zsh configuration
vim ~/.zshrc

# Edit git configuration
vim ~/.gitconfig

# Edit VS Code settings
vim ~/.config/Code/User/settings.json

Troubleshooting

Permission Denied

If you encounter permission errors:

sh
chmod +x setup/setup-*.sh

Homebrew Issues (macOS)

If Homebrew installation fails:

sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

WakeMeOps Repository Issues (Debian)

If package installation fails, verify the repository:

sh
curl https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository | bash

oh-my-zsh Already Installed

If oh-my-zsh is already installed, the script will skip it. To reinstall:

sh
rm -rf ~/.oh-my-zsh
# Run setup script again

Uninstallation

To remove installed configurations:

sh
# Backup first!
./backup/backup-osx.sh  # or backup-debian.sh

# Remove dotfiles
rm -rf ~/.zshrc ~/.gitconfig ~/.config/dotfiles

# Remove oh-my-zsh
rm -rf ~/.oh-my-zsh