dotfiles

mattryan's dotfiles

View the Project on GitHub

Matt Ryan’s Dotfiles

A grossly opinionated set of system configurations, optimized for Linux while aiming to run on macOS.

🚀 Quick Start

git clone https://github.com/rattlion/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
make

📋 Prerequisites

macOS Requirements

# Install Xcode command line tools
xcode-select --install

# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Linux Requirements

# Arch
sudo pacman -S git make zsh curl

# Ubuntu/Debian
sudo apt update && sudo apt install git make zsh curl

# RHEL/CentOS/Fedora
sudo yum install git make zsh curl
# or on newer versions:
sudo dnf install git make zsh curl

🎯 What’s Included

Shell Configuration

Development Tools

System Utilities

📁 Repository Structure

~/.dotfiles/
├── bin/                   # Custom scripts (added to PATH)
├── topic/                 # E.g. nvim
│   ├── *.zsh              # Loaded into environment
│   ├── path.zsh           # Loaded first (PATH setup)
│   ├── completion.zsh     # Loaded last (autocomplete)
│   ├── *.symlink          # Symlinked to $HOME
│   └── *.template         # Copied to $HOME (for customization)
├── Makefile               # Installation automation
└── README.md              # This file

🔧 Installation Details

The installation process:

  1. Symlinks *.symlink files to your home directory
  2. Copies *.template files to your home directory
  3. Loads all *.zsh files into your shell environment
  4. Adds bin/ directory to your PATH

Example Transformations

🛠️ Customization

Templates

Files ending in .template are copied (not symlinked) so you can customize them:

# Edit your personal git config
vim ~/.gitconfig

# Add untracked or generally device specific configs to ~/.secretrc
vim ~/.secretrc

Adding New Configurations

  1. Create a topic directory: mkdir ~/.dotfiles/newtool/
  2. Add configuration files:
    • newtool/newtoolrc.symlink - will be symlinked as ~/.newtoolrc
    • newtool/config.zsh - any .zsh file will be loaded in your shell
    • newtool/aliases.zsh - it can be helpful to separate them logically
  3. Reinstall: cd ~/.dotfiles && make

🔄 Updating

cd ~/.dotfiles
git pull origin main
make clean    # Remove old symlinks
make install  # Reinstall with updates

🚨 Troubleshooting

Common Issues

Installation fails with “Permission denied”

# Fix script permissions
chmod +x ~/.dotfiles/script/install
chmod +x ~/.dotfiles/script/uninstall

Zsh not loading configurations

# Reload zsh configuration
source ~/.zshrc

# Or restart your terminal

Symlinks pointing to wrong location

# Edit the filenames accordingly
cd ~/.dotfiles
# mv /topic/config.zsh /topic/config.symlink
# Clean and reinstall
make clean
make install

Getting Help

  1. Check existing GitHub Issues
  2. Create a new issue with:
    • Your OS and version
    • Error messages
    • Steps to reproduce

🧹 Uninstallation

cd ~/.dotfiles
make uninstall

This will:

🙏 Acknowledgments

Several years ago this project started out as a fork of Zach Holman’s excellent dotfiles which at the time was a fork of Ryan Bates’. I’ve been updating this set since 2012.