Skip to content

🐚 πŸ› οΈ My personal .dotfiles for macOS β€” shell, editor, themes, apps, configs… and more

Notifications You must be signed in to change notification settings

sergio-santiago/.dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈ Sergio’s .dotfiles β€” macOS Fish Shell Environment

This repository contains my personal macOS development environment configuration, with a focus on:

  • 🐟 Fish shell
    • Clean setup with modular functions, aliases, color configuration, and a Starship prompt theme aligned to the terminal palette.
    • Modular configuration with 15 numbered conf.d files (00-99) for controlled load order.
    • Custom functions: fish_greeting, banner_sergio, fish_user_key_bindings.
  • 🎨 Custom banner
    • Multi-line ASCII welcome with compact fallback and optional rainbow effect (lolcat).
    • Banner mode is configurable via the BANNER_MODE env var: full | compact | auto.
  • 🧾 Aliases
    • Well-structured and documented with practical usage examples, autoloaded from conf.d/08-aliases.fish.
    • Includes smart aliases for modern tools: l/ll (eza), v (bat), z (zoxide), tree (eza --tree)...
  • 🎯 FZF (Fuzzy Finder)
    • Comprehensive configuration with fd integration for fast file/directory search.
    • Responsive preview windows with bat (files) and eza (directories).
    • Colors synchronized with the linked_data_dark_rainbow palette.
    • Custom keybindings and 80% height layout with rounded borders.
  • πŸ” SSH
    • Public/private split config, managed from .dotfiles/ssh and using 1Password SSH agent for secure key management.
  • 🧠 Git
    • SSH-based commit signing (1Password agent) with micro as commit editor.
  • ✏️ Micro editor
    • Lightweight terminal-based editor with custom settings and a matching linked-data-dark-rainbow color scheme for a consistent look with Fish and Starship.
    • Custom theme with true color, icon-based statusline, consistent syntax highlighting, 4-space indentation... and more.
  • 🌈 Color theme
    • Custom linked_data_dark_rainbow theme for consistent syntax highlighting, pager, and selection colors. Implemented across:
      • Starship (palettes.linked_data_dark_rainbow palette, three-line prompt with powerline segments)
      • Fish (09-theme.fish)
      • Bat (linked-data-dark-rainbow.tmTheme)
      • Micro editor (linked-data-dark-rainbow.micro)
      • FZF (05-fzf.fish with synchronized color palette)
      • iTerm2 (ANSI colors + UI elements)
    • Includes a custom rainbow separator (98-rainbow_separator.fish) to visually divide command output from the next prompt.
    • All colors are optimized for pure black backgrounds as well as setups with subtle transparency and blurred effects, ensuring high contrast.
    • πŸ“‹ Full color palette documentation: See COLORS.md for the complete 27-color palette with hex/RGB values and semantic usage across all tools.
  • πŸ”— Finicky
    • Smart browser profile routing. Sets Chrome as the default browser and opens Google Meet links automatically in the Secture (work) profile.
  • πŸ’Ύ iTerm2 backup
    • Full export of preferences (profiles, colors, fonts), easily restorable.
  • πŸ€– Claude Code
    • Custom statusline configuration with comprehensive git, system, and environment info.
    • Settings tracked in .dotfiles/claude/ with custom statusline.sh script.
  • πŸ“Š btop
    • Modern system resource monitor with custom configuration.
    • Truecolor support, braille graphs, rounded corners, and transparent background.
    • Fast 100ms refresh rate for real-time monitoring.
  • πŸ™ GitHub CLI (gh)
    • GitHub command-line tool configured with SSH protocol.

These files are meant for personal use and backup. Feel free to explore or adapt.


πŸ”§ Setup & Usage Guide (Restore on a new machine)

🧬 Clone repository

git clone [email protected]:sergio-santiago/.dotfiles.git ~/.dotfiles

πŸ“¦ Install dependencies with Brewfile

Development environment is reproducible with Homebrew and a Brewfile.
Run the following command to install CLI tools and apps:

brew bundle --file ~/.dotfiles/Brewfile

This will install:

πŸ”– Taps

  • domt4/autoupdate β€” keep Homebrew itself and formulae up to date
  • sst/tap β€” custom tap (provides opencode CLI)

πŸ› οΈ CLI tools

  • bat β€” cat clone with syntax highlighting
  • btop β€” modern system resource monitor
  • codex β€” agentic coding CLI
  • eza β€” improved ls with colors and icons
  • fd β€” fast and user-friendly alternative to find
  • fish β€” friendly interactive shell
  • fnm β€” fast Node.js version manager
  • fzf β€” fuzzy finder for the terminal
  • gemini-cli β€” Google Gemini AI CLI
  • gh β€” GitHub CLI tool
  • jq β€” JSON processor for command line
  • lolcat β€” rainbow coloring for terminal output
  • micro β€” lightweight terminal text editor
  • node β€” JavaScript runtime
  • opencode β€” lightweight open-source Claude-compatible CLI
  • pyenv β€” manage multiple Python versions
  • starship β€” fast and customizable prompt
  • zoxide β€” smarter cd command with jump history

πŸ’» Apps (casks)

  • Docker Desktop β€” container engine and UI
  • Finicky β€” control which browser/profile opens links
  • Fira Code Nerd Font β€” a developer-friendly font with ligatures and Nerd Font icons
  • Hammerspoon β€” macOS automation tool with Lua scripting
  • IINA β€” modern video player for macOS
  • iTerm2 β€” terminal emulator for macOS
  • Ice (jordanbaird-ice) β€” menu bar manager for macOS

πŸ”„οΈ You can enable automatic updates for Homebrew itself, formulas, and casks with:
brew autoupdate start 86400 --upgrade --cleanup --immediate --ac-only
(runs daily, cleans old versions, starts at every system login, only on AC power)


πŸ”— Symlink configs

# SSH
mkdir -p ~/.ssh
ln -sfh ~/.dotfiles/ssh/config ~/.ssh/config

# Fish
mkdir -p ~/.config/fish
ln -sfh ~/.dotfiles/fish/conf.d ~/.config/fish/conf.d
ln -sfh ~/.dotfiles/fish/functions ~/.config/fish/functions
ln -sfh ~/.dotfiles/fish/config.fish ~/.config/fish/config.fish

# Starship
ln -sfh ~/.dotfiles/starship/starship.toml ~/.config/starship.toml

# Git
mkdir -p ~/.config/git
ln -sfh ~/.dotfiles/git/config ~/.config/git/config

# Micro
mkdir -p ~/.config/micro/colorschemes
ln -sfh ~/.dotfiles/micro/settings.json ~/.config/micro/settings.json
ln -sfh ~/.dotfiles/micro/colorschemes/linked-data-dark-rainbow.micro ~/.config/micro/colorschemes/linked-data-dark-rainbow.micro

# Bat
mkdir -p ~/.config/bat
ln -sfh ~/.dotfiles/bat/themes ~/.config/bat/themes
bat cache --build

# Finicky
mkdir -p ~/.config/finicky
ln -sfh ~/.dotfiles/finicky/finicky.ts ~/.config/finicky/finicky.ts

# Claude Code
mkdir -p ~/.claude
ln -sfh ~/.dotfiles/claude/settings.json ~/.claude/settings.json
ln -sfh ~/.dotfiles/claude/statusline.sh ~/.claude/statusline.sh

# btop
mkdir -p ~/.config/btop
ln -sfh ~/.dotfiles/btop/btop.conf ~/.config/btop/btop.conf

# GitHub CLI (gh)
mkdir -p ~/.config/gh
ln -sfh ~/.dotfiles/gh/config.yml ~/.config/gh/config.yml

⚠️ Note: Symlinks overwrite existing files β€” backup before linking.


🐟 Fish Shell Configuration Structure

The Fish shell configuration is fully modular and follows a numbered loading order:

conf.d/ files (autoloaded in order):

  • 00-xdg_redirects.fish β€” XDG base directories
  • 01-local-bin.fish β€” Local user binaries PATH
  • 02-homebrew.fish β€” Homebrew environment
  • 03-pyenv.fish β€” Python version management
  • 04-fnm.fish β€” Node.js version management
  • 05-fzf.fish β€” Fuzzy finder with fd, bat, eza integration
  • 06-bat.fish β€” Bat (cat replacement) configuration
  • 07-zoxide.fish β€” Smart directory jumper
  • 08-aliases.fish β€” Command aliases and helper functions
  • 09-theme.fish β€” linked_data_dark_rainbow color theme
  • 10-starship.fish β€” Starship prompt initialization
  • 98-rainbow_separator.fish β€” Rainbow command separator
  • 99-banner.fish β€” Custom welcome banner (last)

functions/ directory:

  • fish_greeting.fish β€” Custom greeting message
  • banner_sergio.fish β€” ASCII art banner generator
  • fish_user_key_bindings.fish β€” Custom key bindings

🧩 Disable Starship in JetBrains IDEs Terminal

If custom Starship config renders incorrectly in the integrated terminal of JetBrains IDEs, you can disable it by overriding the config path:

  1. Go to Preferences > Tools > Terminal

  2. Set the shell path to:

    env STARSHIP_CONFIG=/dev/null /opt/homebrew/bin/fish

This launches fish with an empty Starship config, disabling the prompt in JetBrains IDE without affecting your normal terminal.


πŸ” SSH Configuration (Public/Private Split)

To keep personal hosts out of version control:

  1. The tracked ssh/config contains:

    Include ~/.dotfiles/ssh/config.public
    Include ~/.ssh/config.private
    
  2. You must create ~/.ssh/config.private manually:

    touch ~/.ssh/config.private
    chmod 600 ~/.ssh/config.private
  3. Put your private or machine-specific SSH hosts there (e.g., staging, personal VPS, etc.)


πŸ’» iTerm2 Configuration (Theme, Colors & Profiles)

To preserve the full appearance and behavior of iTerm2 environment (profiles, color schemes, font, etc.), the app preferences are exported and tracked here:

~/.dotfiles/iterm/com.googlecode.iterm2.plist

βœ… To load this config on a new Mac:

  1. Open iTerm2 > Settings > General > Preferences

  2. Enable: βœ”οΈ Load preferences from a custom folder or URL

  3. Set the folder path to:

    /Users/sergiosantiago/.dotfiles/iterm
  4. For saving changes, set "Save changes" to: When Quitting (or optionally Manually)

  5. Restart iTerm2 to apply all changes

About

🐚 πŸ› οΈ My personal .dotfiles for macOS β€” shell, editor, themes, apps, configs… and more

Topics

Resources

Stars

Watchers

Forks