A comprehensive dotfiles management system using PyInfra for automated setup and configuration of macOS and Arch Linux development environments.
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 (built from pinned upstream source on macOS because the Homebrew cask is disabled)
- 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 environment variable groups in OpenBao KV
envl- Fish function to load OpenBao environment variables into your shell session- Includes related commands:
envsandenvls - Provides tab completion for environment group names
- Calls
env-selectinternally to fetch and load variables
- Includes related commands:
env-select- Fetch and select environment variable groups from OpenBao KV
These tools use OpenBao OIDC authentication and load secrets from the kv/env namespace.
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) or Arch Linux
- Internet connection for downloading tools
- Admin privileges for some installations