Skip to content

Repository files navigation

dotfiles

Personal terminal environment for macOS — Ghostty, tmux, and modern CLI tools, all themed with Catppuccin Mocha.

What You Get

Tool Replaces What it does
Ghostty Terminal.app GPU-accelerated terminal emulator
tmux Terminal multiplexer with session persistence
Starship default prompt Minimal prompt showing directory, git, command duration
eza ls File listing with icons and colors
bat cat Syntax highlighting and line numbers
delta git diff Beautiful side-by-side diffs
fzf Ctrl+T Fuzzy finder for files and more (Ctrl+R taken by atuin)
atuin Ctrl+R Encrypted shell history sync across all machines (self-hosted or Atuin Cloud)
Bitwarden Desktop / rbw ssh-agent / secret store SSH keys + passwords synced from self-hosted Vaultwarden. Built-in SSH agent on both macOS (Desktop app) and Linux (rbw).
zoxide cd Smart directory jumping that learns your habits
glow Render markdown beautifully in the terminal
nano macOS nano Modern nano with syntax highlighting
gh GitHub CLI

All visual tools use the Catppuccin Mocha color scheme.

Install

git clone https://github.com/sebstrgg/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh

The install script:

  1. Installs Homebrew (if missing)
  2. Installs all packages from the Brewfile
  3. Symlinks all config files to their expected locations
  4. Installs Catppuccin themes for bat, delta, and zsh-syntax-highlighting
  5. Sets up TPM (tmux plugin manager)
  6. Optionally authenticates with GitHub CLI

After install, open Ghostty and press Ctrl+a I (capital i) to install tmux plugins, then Ctrl+a r to reload.

Bitwarden + rbw

SSH keys and secrets sync from self-hosted Vaultwarden (or Bitwarden cloud). Full setup + migration runbook: docs/bitwarden-rbw-setup.md.

Atuin — shell history sync

Atuin syncs encrypted shell history across all machines. The installer prompts for your server URL (self-hosted or Atuin Cloud) and handles registration interactively.

First device (create the account):

atuin register -u <username> -e <email>
atuin key      # PRINT AND SAVE — needed on every other device
atuin sync

Additional devices (join the existing account):

atuin login -u <username> -k <key-from-first-device>
atuin import auto   # import local shell history into Atuin
atuin sync

Ctrl+R searches across all machines. Up-arrow stays session-local (configured in atuin/config.toml).

Post-Install: What Changed

These commands now work differently (better):

You type What happens now
cat file.py Syntax-highlighted output with line numbers (bat)
ls Colored listing with file type icons (eza)
ll Detailed listing with icons (eza -la)
lt Tree view, 2 levels deep (eza --tree)
git diff Side-by-side diff with Catppuccin colors (delta)
git log -p Syntax-highlighted patches (delta)
cd projects Jumps to your most-visited matching directory (zoxide)
Ctrl+R Fuzzy search through shell history, synced across machines (atuin)
Ctrl+T Fuzzy search for files (fzf)
glow README.md Rendered markdown in the terminal
nano file.py Syntax-highlighted editing
catp file.py Like cat but with scrollable pager
gs, gl, gd git status, git log, git diff shorthand
.., ..., .... Move up 1/2/3 directory levels
ta, tn, tls, tk tmux attach / new / list / kill-session

Directory Structure

dotfiles/
├── ghostty/config              Ghostty terminal config
├── tmux/
│   ├── tmux.conf               tmux config (prefix: Ctrl+a)
│   └── cheatsheet.sh           Ctrl+a ? cheat sheet popup
├── starship/starship.toml      Starship prompt config
├── zsh/.zshrc                  Shell config (aliases, plugins, tool init)
├── zsh/.zshrc.local.example    Template for machine-local overrides (gitignored)
├── git/
│   ├── .gitconfig              Git config (delta, identity)
│   └── catppuccin.gitconfig    Catppuccin Mocha theme for delta
├── bat/
│   ├── config                  bat config (theme)
│   └── themes/                 Catppuccin Mocha .tmTheme
├── nano/.nanorc                nano config
├── vim/.vimrc                  vim config
├── zsh-syntax-highlighting/    Catppuccin theme for zsh highlighting
├── scripts/doctor.sh           Drift detection & repair tool (run: dots-doctor)
├── Brewfile                    All Homebrew dependencies
└── install.sh                  Bootstrap script

Repair & Drift Check

Configs are symlinked from this repo into your home directory. Apps that rewrite their own config atomically (Claude Code's settings.json) are seeded (copied) instead, since they'd break a symlink. Two commands keep things healthy:

dots-doctor          # check symlinks, PATH, portability — exits non-zero on drift
dots-doctor --fix    # back up + re-link drifted configs, seed missing ones

Aliases dots, dots-doctor, and dots-update are defined in .zshrc.

~/.zshrc.local — machine-local overrides

Installer-managed blocks (bun, shell completions, the claude-auto-retry wrapper, etc.) live in ~/.zshrc.local, not the tracked .zshrc. This keeps installers that append to your rc from corrupting the committed file. The first install seeds it from zsh/.zshrc.local.example; edit it freely.

Updating

dots-update          # git pull ~/dotfiles (alias defined in .zshrc)
dots-doctor --fix    # re-link any changed configs, seed missing ones

./install.sh is still the full re-run path (idempotent, safe any time), but after a routine git pull you usually only need dots-doctor --fix.

Font

Uses JetBrains Mono Nerd Font — installed automatically via the Brewfile. Required for eza icons and Starship symbols.

Tmux Cheat Sheet

Press Ctrl+a ? inside tmux to see the full cheat sheet, or see tmux/cheatsheet.sh.

Credits

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages