A comprehensive dotfiles management system using PyInfra for automated setup and configuration of macOS development environment.
This repository contains dotfiles and configuration management for a complete development environment setup. It automates the installation and configuration of development tools, shell environments, and applications using PyInfra deployment automation.
./bin/update.shThis single command will:
- Install Homebrew (if not present)
- Install rustup (if not present)
- Install uv Python package manager (if not present)
- Run the PyInfra deployment to configure your system
-
/bin/update.sh- Bootstrap script that:- Installs Homebrew package manager
- Installs rustup (Rust toolchain manager)
- Installs uv (fast Python package manager)
- Calls the install script
-
/bin/install.sh- Runs the PyInfra deployment:uv run pyinfra @local configure.py
-
configure.py- PyInfra deployment script that:- Links
.config/directory to~/.config/ - Links
home/directory contents to~/ - Installs and configures all development tools
- Links
.config/- Configuration files that get linked to~/.config/home/- Files that get linked to your home directory (~)bin/- Installation and update scriptsconfigure.py- PyInfra deployment configuration
- Go - Programming language
- Bun - JavaScript runtime
- Rust (via rustup) - Systems programming language
- Fish - Modern shell with autocompletion
- Starship - Cross-shell prompt
- Fisher - Fish plugin manager
- Tmux - Terminal multiplexer
- TPM (Tmux Plugin Manager) - Auto-installed for plugin management
- tmux-fzf - Fuzzy finder for sessions, windows, panes (prefix + Ctrl-f)
- Neovim - Modern Vim-based editor with full configuration
- ripgrep - Fast text search
- fd - Fast file finder
- fzf - Fuzzy finder
- gum - Glamorous shell scripts
- K9s - Kubernetes TUI
- Pulumi - Infrastructure as Code
- GitHub CLI - GitHub command line
- Lazygit - Git TUI
- Lazydocker - Docker TUI
- GnuPG - Encryption and signing
- pinentry-mac - macOS GPG passphrase entry
- Alacritty - GPU-accelerated terminal
- Slack - Team communication
- Spotify - Music streaming
- Obsidian - Note-taking and knowledge management
- LinearMouse - Mouse customization
- Bitwarden - Password manager
All tools come pre-configured through the linked configuration directories:
- Neovim: Full IDE setup with LSP, plugins, and keybindings
- Fish: Shell configuration with aliases and functions
- Tmux: Terminal multiplexer configuration
- Git: Version control settings
- And more: All configurations are automatically linked and ready to use
This dotfiles system includes several custom utilities for configuration and environment management:
adopt-dot- Interactive tool to adopt existing config files from~or~/.configinto your dotfiles repositoryedit-env- Create and edit encrypted environment variable groups using GPG encryption
env-load- Fish function to load encrypted environment variables into your shell session- Includes aliases:
envl,envs,envls - Provides tab completion for environment group names
- Calls
env-selectinternally to decrypt and load variables
- Includes aliases:
env-select- Decrypt and select environment variable groups from encrypted storage
These tools work together to provide secure, encrypted storage of sensitive environment variables with easy loading into shell sessions.
TPM (Tmux Plugin Manager) is automatically installed by the dotfiles. On first setup, you'll need to install the configured plugins:
- Start tmux:
tmux - Press
prefix + I(capital i) to install plugins - Use
prefix + Ctrl-fto launch the tmux-fzf fuzzy finder for sessions/windows/panes
Press prefix + Ctrl-f to access:
- Session switching - Fuzzy find across all tmux sessions
- Window switching - Jump to any window in any session
- Pane switching - Navigate to any pane
- Additional tools - Commands, keybindings, clipboard, and process management
Run ./bin/update.sh anytime to:
- Update all package managers (Homebrew, rustup, uv)
- Re-run the deployment to catch any new configurations
- Upgrade all installed Homebrew packages
- Update TPM and tmux plugins (run
prefix + Uin tmux)
- macOS (tested on recent versions)
- Internet connection for downloading tools
- Admin privileges for some installations