Skip to content

gufranco/dotfiles

Repository files navigation


One-command development environment for macOS and Linux. 33 tool configs, consistent Tokyo Night theme, modern CLI replacements, and ready-to-go Docker services.



CI License Shell Platform


33 tool configs · 141 brew packages · 57 desktop apps · 72 Nerd Fonts · 19 Tokyo Night themed tools · 60 Git aliases · 6 Docker services · 18 Claude Code skills

Tokyo Night Everywhere

One color palette across 19 tools: terminals, editors, file managers, email, music, git diffs, monitoring dashboards, and fuzzy finders.

Modern CLI Replacements

cat becomes bat, ls becomes eza, top becomes btm, du becomes dust. Graceful fallbacks when the modern tool is not installed.

One-Command Install

curl | bash sets up everything: Homebrew packages, symlinks, shell config, GPG keys, SSH, and language runtimes. Works on fresh macOS or Ubuntu.

Docker Services on Demand

PostgreSQL, MongoDB, Redis, Valkey, and Redict as shell functions: postgres-init, mongo-start, redis-stop. Colima as the VM, configured for Apple Silicon with Rosetta 2.

GPG-Signed Everything

Commits and tags are signed by default. GPG keys are imported automatically, SSH keys get proper permissions, and tokens are GPG-encrypted.

Fast Shell Startup

NVM, Chruby, and heavy tooling are lazy-loaded via stub functions. They only initialize when you first call node, ruby, or nvm.

Quick Start

Prerequisites

Tool Install
macOS or Ubuntu/Debian Fresh install works
Git Pre-installed on macOS, apt install git on Linux
curl Pre-installed on both

Install

curl -fsSL https://raw.githubusercontent.com/gufranco/dotfiles/master/install.sh | bash

Verify

source ~/.zshrc
bat --version    # syntax-highlighted cat
eza --version    # modern ls

The installer detects your OS and architecture automatically. On macOS it installs Homebrew and runs the Brewfile. On Linux it uses apt, snap, and direct downloads.

What Gets Installed

Shell

Feature Implementation
Shell Zsh with Oh My Zsh and Spaceship prompt
Fuzzy finder fzf with bat preview and Tokyo Night colors
Tab completion fzf-tab for fuzzy tab completion
Syntax highlighting zsh-syntax-highlighting for fish-like coloring
Per-directory env direnv with automatic .envrc loading
History Deduplication, ignore common commands
GNU tools on macOS coreutils, findutils, grep, sed, tar, make override BSD via PATH

Modern Tool Replacements

Aliases activate only when the modern tool is installed:

Alias Replaces Tool
cat cat bat with syntax highlighting, plain output when piped
ls ls eza with icons, git status, tree view via lt
du du dust with visual tree output
df df duf with color output
ps ps procs with tree and color
top top btm (Bottom) system monitor TUI
ping ping gping with graphical output (macOS)
stats - tokei for code statistics (macOS)

Editor

Vim with 24 plugins managed by vim-plug:

Category Plugins
Language support coc.nvim (LSP), vim-polyglot, vim-matchup, rainbow_csv
Navigation fzf.vim, EasyMotion
Git vim-signify (hunks), vim-fugitive (commands)
Editing vim-surround, vim-visual-multi, vim-pasta, targets.vim, vim-unimpaired, vim-repeat
UI lightline, vim-devicons, undotree, vim-cool, vim-search-pulse, winresizer

CoC extensions: TypeScript, ESLint, Prettier, CSS, JSON, Shell, snippets, import-cost.

Terminal Multiplexer

Tmux with 7 plugins and vim-style keybindings:

Plugin What it does
Yoru Revamped Status bar with system stats, git info, weather, network, and Tokyo Night theme
tmux-resurrect Save and restore sessions across reboots
tmux-yank Copy to system clipboard
extrakto Extract URLs and file paths with fzf
tmux-session-wizard Fuzzy session switcher
tmux-mighty-scroll Better scrolling in fullscreen apps
tmux-menus Popup context menus via F12

Git

60 aliases, performance-tuned config, and Tokyo Night colors for diffs, status, branches, and blame:

Alias Command What it does
st status -sb Short status
lg log --graph --decorate Colored graph log
fork checkout -q -b Create branch
publish push -u origin HEAD Push new branch
force push --force-with-lease Safe force push
cleanup merged branch delete Remove merged branches
today log --since=midnight Today's commits
sw switch Modern branch switching

Delta as the diff pager with line numbers, hyperlinks, and Tokyo Night syntax theme. Histogram diff algorithm, zdiff3 merge conflicts, and automatic rebase on pull.

Infrastructure

Docker development via Colima with auto-configured VM sizing:

Service Command Port
PostgreSQL postgres-init 5432
MongoDB mongo-init 27017
Redis redis-init 6379
Valkey valkey-init 7000
Redict redict-init 6379
Ubuntu ubuntu-init -

Each service has -init, -start, -stop, -purge, and -terminal functions. Colima VM uses Apple's Virtualization.framework on macOS with Rosetta 2 for x86_64 container support on Apple Silicon.

Claude Code

18 custom skills for AI-assisted development:

Skill What it does
/commit Semantic commits with optional --pipeline CI monitoring
/pr PR creation with self-review and pipeline monitoring
/review Code review following project conventions
/readme Marketing-grade README generation
/assessment Architecture completeness audit
/test Test runner with coverage and linting
/checks CI/CD status monitoring
/terraform Terraform workflows with safety gates
/docker Container management with Colima awareness

Plus 17 rule files covering code style, resilience, caching, API design, testing, security, database patterns, distributed systems, observability, debugging, git workflow, verification, LLM documentation references, infrastructure, pre-flight checks, and borrow-restore patterns.

Tokyo Night Theme

All tools use the Tokyo Night "Night" variant:

Tool Method
Ghostty Custom theme file
Kitty Custom theme file
iTerm2 .itermcolors theme file
Tilix Exported color scheme
Bat Theme in bat/themes/
Vim tokyonight-vim plugin
Tmux Yoru Revamped plugin
Bottom [styles] in bottom.toml
K9s Skin file in k9s/skins/
Lazygit gui.theme in config
Lazydocker Theme colors in config
Tealdeer RGB values in config.toml
Yazi Full theme in theme.toml
eza Full theme in theme.yml
Mutt Custom theme in mutt/themes/
cmus Color scheme in rc
fzf FZF_DEFAULT_OPTS --color
nnn NNN_FCOLORS palette
Git [color] sections in .gitconfig

System Update

Run f5 in any terminal to update everything at once:

  1. Pulls latest dotfiles and submodules
  2. Updates Vim plugins and CoC extensions
  3. Updates Oh My Zsh, Zsh plugins, and Tmux plugins
  4. Updates Node.js LTS via NVM
  5. On macOS: runs brew update, brew upgrade, brew bundle, and Mac App Store updates
  6. On Linux: runs apt update and apt dist-upgrade
  7. Reloads Tmux and Zsh configs

Symlink Map

All configs are symlinked by install.sh using safe_link, which is idempotent and creates parent directories automatically.

Full symlink map
Source Target
zsh/.zshrc ~/.zshrc
git/.gitconfig ~/.gitconfig
vim ~/.vim
vim/.vimrc ~/.vimrc
tmux/.tmux.conf ~/.tmux.conf
tmux ~/.tmux
ghostty ~/.config/ghostty
kitty/kitty.conf ~/.config/kitty/kitty.conf
bat/config ~/.config/bat/config
eza ~/.config/eza
yazi ~/.config/yazi
bottom/bottom.toml ~/.config/bottom/bottom.toml
lazygit/config.yml ~/.config/lazygit/config.yml
lazydocker/config.yml ~/.config/lazydocker/config.yml
k9s/config.yml ~/.config/k9s/config.yml
k9s/skins ~/.config/k9s/skins
tealdeer/config.toml ~/.config/tealdeer/config.toml
htop/htoprc ~/.config/htop/htoprc
gh/config.yml ~/.config/gh/config.yml
glab/config.yml ~/.config/glab-cli/config.yml
gnupg ~/.gnupg
ssh ~/.ssh
claude ~/.claude
nodejs/.npmrc ~/.npmrc
nodejs/.yarnrc.yml ~/.yarnrc.yml
nodejs/.pnpmrc ~/.pnpmrc
mutt/.muttrc ~/.muttrc
mutt ~/.mutt
curl/.curlrc ~/.curlrc
wget/.wgetrc ~/.wgetrc
readline/.inputrc ~/.inputrc
ripgrep/.ripgreprc ~/.ripgreprc
fd/.fdrc ~/.fdrc
telnet/.telnetrc ~/.telnetrc
cmus/rc ~/.config/cmus/rc

On macOS, lazygit, lazydocker, k9s, and ghostty also get symlinks into ~/Library/Application Support/.

Project structure
.dotfiles/
├── bat/              # Bat config + Tokyo Night theme
├── bottom/           # Bottom system monitor, Tokyo Night styled
├── claude/           # Claude Code: 17 rules, 18 skills, hooks, MCP
├── cmus/             # cmus music player, Tokyo Night themed
├── conky/            # Conky system monitor (Linux)
├── curl/             # Curl config
├── eza/              # eza (ls replacement) config + Tokyo Night theme
├── fd/               # fd (find replacement) config
├── gh/               # GitHub CLI config
├── ghostty/          # Ghostty terminal + Tokyo Night theme
├── git/              # Git config, hooks, message template, 60 aliases
├── glab/             # GitLab CLI config
├── gnupg/            # GPG config and public keys
├── htop/             # htop config
├── k9s/              # K9s Kubernetes dashboard + Tokyo Night skin
├── kitty/            # Kitty terminal + Tokyo Night theme
├── lazydocker/       # Lazydocker config, Tokyo Night
├── lazygit/          # Lazygit config, Tokyo Night
├── mailcap/          # Mailcap config
├── mutt/             # Neomutt email client + Tokyo Night theme
├── nodejs/           # npm, yarn, pnpm configs + GPG-encrypted tokens
├── readline/         # Readline config
├── ripgrep/          # Ripgrep config
├── ssh/              # SSH config and public keys
├── tealdeer/         # Tealdeer (tldr) config, Tokyo Night
├── telnet/           # Telnet config
├── themes/           # Terminal themes (iTerm2)
├── tilix/            # Tilix terminal config
├── tmux/             # Tmux config + 7 plugins
├── vim/              # Vim config + 24 plugins
├── wget/             # Wget config
├── yazi/             # Yazi file manager + Tokyo Night theme
├── zsh/              # Zsh: aliases, functions, paths, settings, infrastructure
├── Brewfile          # 141 packages, 57 apps, 72 fonts
├── install.sh        # Cross-platform installer
└── LICENSE           # MIT

Adding New Configs

  1. Create a directory: myapp/
  2. Add config files
  3. Add to install.sh:
    safe_link "$HOME/.dotfiles/myapp" "$HOME/.config/myapp"

Security

Private keys and credentials are excluded via .gitignore. Only public GPG keys and SSH public keys are tracked. API tokens are stored as GPG-encrypted files and decrypted at shell startup with caching.

License

MIT since 2014.

About

Cross-platform dotfiles for macOS and Linux. 33 configs, 141 Homebrew packages, Tokyo Night everywhere, modern CLI replacements, Docker services on demand

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors