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_MODEenv var:full|compact|auto. 
 - Multi-line ASCII welcome with compact fallback and optional rainbow effect (
 - π§Ύ 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)... 
 - Well-structured and documented with practical usage examples, autoloaded from 
 - π― FZF (Fuzzy Finder)
- Comprehensive configuration with 
fdintegration for fast file/directory search. - Responsive preview windows with 
bat(files) andeza(directories). - Colors synchronized with the 
linked_data_dark_rainbowpalette. - Custom keybindings and 80% height layout with rounded borders.
 
 - Comprehensive configuration with 
 - π SSH
- Public/private split config, managed from 
.dotfiles/sshand using 1Password SSH agent for secure key management. 
 - Public/private split config, managed from 
 - π§  Git
- SSH-based commit signing (1Password agent) with 
microas commit editor. 
 - SSH-based commit signing (1Password agent) with 
 - βοΈ Micro editor
- Lightweight terminal-based editor with custom settings and a matching 
linked-data-dark-rainbowcolor 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.
 
 - Lightweight terminal-based editor with custom settings and a matching 
 - π Color theme
- Custom 
linked_data_dark_rainbowtheme for consistent syntax highlighting, pager, and selection colors. Implemented across:- Starship (
palettes.linked_data_dark_rainbowpalette, 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.fishwith synchronized color palette) - iTerm2 (ANSI colors + UI elements)
 
 - Starship (
 - 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.
 
 - Custom 
 - π 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 customstatusline.shscript. 
 - π 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.
git clone [email protected]:sergio-santiago/.dotfiles.git ~/.dotfilesDevelopment environment is reproducible with Homebrew and a Brewfile.
Run the following command to install CLI tools and apps:
brew bundle --file ~/.dotfiles/BrewfileThis will install:
- domt4/autoupdate β keep Homebrew itself and formulae up to date
 - sst/tap β custom tap (provides 
opencodeCLI) 
- bat β 
catclone with syntax highlighting - btop β modern system resource monitor
 - codex β agentic coding CLI
 - eza β improved 
lswith 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 
cdcommand with jump history 
- 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)
# 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.
The Fish shell configuration is fully modular and follows a numbered loading order:
00-xdg_redirects.fishβ XDG base directories01-local-bin.fishβ Local user binaries PATH02-homebrew.fishβ Homebrew environment03-pyenv.fishβ Python version management04-fnm.fishβ Node.js version management05-fzf.fishβ Fuzzy finder with fd, bat, eza integration06-bat.fishβ Bat (cat replacement) configuration07-zoxide.fishβ Smart directory jumper08-aliases.fishβ Command aliases and helper functions09-theme.fishβ linked_data_dark_rainbow color theme10-starship.fishβ Starship prompt initialization98-rainbow_separator.fishβ Rainbow command separator99-banner.fishβ Custom welcome banner (last)
fish_greeting.fishβ Custom greeting messagebanner_sergio.fishβ ASCII art banner generatorfish_user_key_bindings.fishβ Custom key bindings
If custom Starship config renders incorrectly in the integrated terminal of JetBrains IDEs, you can disable it by overriding the config path:
- 
Go to Preferences > Tools > Terminal
 - 
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.
To keep personal hosts out of version control:
- 
The tracked
ssh/configcontains:Include ~/.dotfiles/ssh/config.public Include ~/.ssh/config.private - 
You must create
~/.ssh/config.privatemanually:touch ~/.ssh/config.private chmod 600 ~/.ssh/config.private
 - 
Put your private or machine-specific SSH hosts there (e.g., staging, personal VPS, etc.)
 
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:
- 
Open iTerm2 > Settings > General > Preferences
 - 
Enable: βοΈ
Load preferences from a custom folder or URL - 
Set the folder path to:
/Users/sergiosantiago/.dotfiles/iterm
 - 
For saving changes, set "Save changes" to:
When Quitting(or optionallyManually) - 
Restart iTerm2 to apply all changes