Skip to content

pedropombeiro/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,975 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pedro's Dotfiles πŸ› οΈ

A comprehensive dotfiles configuration managed with YADM for macOS and Linux systems, featuring a carefully curated development environment with powerful CLI tools and integrations.

Overview

This repository contains my personal dotfiles configuration, providing a consistent and productive development environment across different machines. It uses YADM (Yet Another Dotfiles Manager) for seamless synchronization and supports both macOS and Linux platforms with platform-specific configurations.

Screenshots

Tool Preview
Zsh Zsh
Yazi Yazi
Neovim Neovim

Features

This dotfiles setup includes:

  • 🐚 Shell Configuration

    • zinit plugin manager with Oh-my-zsh plugins
    • Custom aliases and functions for productivity
    • fzf integration - fuzzy file finder (use **<TAB> for fuzzy completion, e.g., vim **<TAB>)
    • zoxide - smarter directory navigation
    • mise - polyglot runtime manager and environment switcher
  • πŸ“ Editor Configuration

    • Neovim with comprehensive plugin setup
    • Neovide - Neovim GUI client
    • Vim configuration with fzf integration
    • VS Code settings sync
  • πŸ€– Automation & Quality

    • Pre-commit hooks for shell, markdown, Ruby, Lua, and formatting checks
    • CI validations (pre-commit, Neovim config load, luacheck, bootstrap lint, gitleaks)
    • Update scripts for brew, mise, zinit, and Neovim plugin health
  • πŸ”§ Development Tools

  • 🎨 Terminal Enhancements

    • iTerm2 with shell integration
    • Custom color schemes
    • Yazi - blazing fast terminal file manager
    • bat - cat clone with syntax highlighting
    • eza - modern replacement for ls
    • btop - resource monitor
    • grc - generic colouriser
  • πŸ“¦ Package Management

    • Homebrew bundle configuration
    • mise - polyglot runtime manager (modern alternative to asdf)
    • Language-specific package managers
  • πŸ” Security & Privacy

    • 1Password with CLI integration
    • SSH configuration
    • GPG setup
    • Secure credential management

Quick Start

macOS

Prerequisites:

  1. Log in to the App Store
  2. Install Xcode and accept the license agreement

Installation:

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)"

# Install YADM
brew install yadm

# Clone dotfiles repository
yadm clone --no-bootstrap https://github.com/pedropombeiro/dotfiles.git

# Set class configuration (Personal or Work)
yadm config local.class Personal

# Run bootstrap script to set up environment
yadm bootstrap

# Reload shell configuration
source ~/.zshrc.shared

Linux (Debian/Ubuntu)

# Install YADM
sudo apt update && sudo apt install -y yadm

# Clone dotfiles and bootstrap
yadm clone --no-bootstrap https://github.com/pedropombeiro/dotfiles.git
yadm config local.class Personal
yadm bootstrap
source ~/.zshrc.shared

Post-Installation

After installing the dotfiles, ensure the Syncthing-managed config files are linked:

~/.config/yadm/scripts/relink-dotfiles.sh

Fresh Installation - macOS

After Factory Reset:

  1. Install any available OS upgrades

  2. Install Xcode from the App Store and accept the T&C

  3. Run the quick start installation steps above

  4. Verify SSH connectivity:

    ssh -T git@github.com
    ssh -T git@gitlab.com
  5. After first Syncthing sync, restore Mackup backup:

    mackup restore

Fresh Installation - Linux

Verify SSH connectivity to Git services:

ssh -T git@github.com
ssh -T git@gitlab.com

Configuration

macOS Settings

Manual configuration steps:

  • Change the computer name in System Preferences
  • Set default terminal font to 'MesloLGS NF'
  • Disable notifications when screen is off
  • Disable Location Services (if desired)
  • Configure keyboard shortcuts:
    • Set input source switching shortcuts

Package Sources

The definitive list of packages lives in the Homebrew bundle file and App Store list:

  • Homebrew brews and casks: .Brewfile
  • Mac App Store apps: .Brewfile (mas entries)

The README highlights key tooling, but the Brewfile is the source of truth.

Development Tools

Key tools included in this setup:

  • Version Manager: mise for runtime installs and CLI tooling (node, ruby, go, redis, plus linters and helpers)
  • Languages: Ruby, Go, Node.js (plus tooling like ruby-lsp, neovim-remote, renovate, markdownlint)
  • Databases: PostgreSQL (via pgcli, pspg, and libpq)
  • Containerization: Docker, plus lightweight tooling for container ops
  • CLI Essentials: ripgrep, fd, bat, eza, yazi, jq/yq, hyperfine, tealdeer
  • Git Tooling: gh, git-delta, git-extras, git-peek, lazygit

Maintenance

Profiling ZSH

To identify slow startup times, use zprof:

# Add at the beginning of your .zshrc
zmodload zsh/zprof

# ... your configuration ...

# Add at the end
zprof

Checklist Before Reinstall

  • Create Time Machine or SuperDuper! backup
  • Verify application-specific backups
  • Backup hidden files in repository
  • Push all Git branches
  • Search for "what folders to backup"
  • Verify iCloud sync is complete (check Finder status bar)
  • Confirm all critical data is backed up

Checklist After Install

  • Add Terminal, iTerm, VS Code, and IDEs to System Preferences β†’ Security & Privacy β†’ Privacy β†’ Developer Tools to avoid Apple notarization slowdowns
  • Configure $HOME/.git-peek for repository peeking
  • Restore relevant folders from backup under ~/Library/Application Support and ~/Library/Preferences

Useful Commands

Use Vim in YADM Git context:

Running vim from inside YADM ensures proper fzf.vim integration and Git worktree configuration:

yadm enter vim

Update all packages:

brew update && brew upgrade && brew cleanup

Update dotfiles tooling:

~/.config/yadm/scripts/update.sh

Check YADM status:

yadm status
yadm diff

Acknowledgments

This dotfiles configuration was inspired by and builds upon ideas from:


License: See LICENSE file for details

About

My personal dotfiles

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •