A clean, modular configuration for macOS and Linux development environments featuring:
- Zsh as primary shell (macOS) with bash compatibility
- Emacs with Magit and Claude CLI integration
- Git with useful aliases and ediff integration
- Modular shell configuration for easy customization
- 🚀 Fast shell startup with optimized configurations
- 📦 Modular design - mix and match components
- 🔧 Smart installer with backup and OS detection
- 🎨 Clean separation of shell-agnostic and shell-specific configs
- 💻 Developer-focused with support for Rust, Go, Python, Node.js
- 🤖 AI-powered development with Claude CLI integration
# Clone the repository
git clone git@github.com:danome/dot-files.git ~/Development/repositories/dot-files
# Run installer
cd ~/Development/repositories/dot-files
chmod +x install.sh
./install.sh.
├── .config/
│ └── shell/ # Shared shell configurations
│ ├── aliases.sh # Common aliases
│ ├── exports.sh # Environment variables
│ └── functions.sh # Utility functions
├── .emacs.d/ # Emacs configuration
│ ├── init.el # Main config
│ ├── early-init.el # Performance optimizations
│ └── lisp/ # Custom elisp
├── .zshrc # Zsh configuration
├── .zprofile # Zsh login shell
├── .zshenv # Zsh environment
├── .bashrc_modern # Modern bash config
├── .bash_profile # Bash login shell
├── .gitconfig # Git configuration
├── .gitignore_global # Global git ignores
└── install.sh # Installation script
Create ~/.config/shell/local.sh for machine-specific configurations:
# Example local.sh
export WORK_DIR="$HOME/work"
alias myproject="cd $WORK_DIR/myproject"Create ~/.config/shell/development.sh for project-specific paths:
# Example development.sh
export PATH="$HOME/Development/tools:$PATH"
export GOPATH="$HOME/go"Create ~/.gitconfig.local for machine-specific git settings:
[user]
email = work@company.com
[core]
sshCommand = /usr/bin/ssh -i ~/.ssh/work_keye- Open in emacsclientgs- Git statusll- Detailed file listingmkd- Make directory and cd into it- And many more (see
.config/shell/aliases.sh)
extract- Extract any archivebackup- Quick file backup with timestampgit-cleanup- Remove merged branchesemacs-daemon-*- Manage Emacs daemon
The configuration includes:
- Magit for Git integration
- Claude CLI helpers for AI-powered development
- Company for auto-completion
- Projectile for project management
- Language support for Python, Go, Rust, TypeScript
C-c m m- Claude menuC-c m a- AI commit messageC-c m d- Generate documentationC-c m r- Refactor region
- Zsh 5.0+ (included)
- Homebrew (recommended)
- Emacs 27+ with
emacsclient - Git 2.20+
- Bash 4.0+ or Zsh 5.0+
- Emacs 27+ with
emacsclient - Git 2.20+
The installer will:
- Detect your OS and shell
- Create timestamped backups of existing files
- Create symlinks to the repository files
- Check for required tools
- Provide next-step instructions
To uninstall, restore your original files from the backup directory shown during installation:
# The installer shows the backup location, typically:
# ~/.dotfiles-backup-YYYYMMDD-HHMMSS/Feel free to fork and submit pull requests. Keep changes modular and well-documented.
MIT License - see LICENSE file for details
This repository underwent a major modernization in January 2025. Here's what was changed:
| Area | Proposed Changes | Actual Implementation |
|---|---|---|
| 1. Core Shell Configuration | Create modular system with .config/shell/ directory for shared configs |
✅ Created .config/shell/ with:• exports.sh - PATH management, environment variables, XDG settings• aliases.sh - 80+ aliases for git, emacs, system commands• functions.sh - Helper functions (extract, backup, emacs-daemon management) |
| 2. Emacs Configuration | Modernize with use-package, include boon-claude, add early-init, remove duplicates | ✅ Created: • early-init.el - Startup optimizations, GC tuning• init_modern.el - Clean use-package based config• lisp/boon-claude.el - Claude CLI integration• Kept old init.el (not replaced yet) |
| 3. Git Configuration | Add user-specific includes, global ignores, local settings support | ✅ Replaced .gitconfig with:• Modern aliases (30+ shortcuts) • Ediff integration for merge/diff • Include for ~/.gitconfig.local• Created .gitignore_global with 99 lines of common ignores |
| 4. Development Tools | Add configs for starship, tmux, SSH template | ❌ Not implemented - focused on core shell/editor configs instead |
| 5. Installation System | Rewrite with OS detection, backups, conflict detection, idempotent | ✅ Completely rewrote install.sh:• OS detection (macOS/Linux) • Timestamped backups • Color-coded output • Tool checking (git, emacs, cargo, claude) • Symlink management |
| 6. Files to Remove/Archive | Remove legacy conda, vagrant, nvm configs | ✅ Removed from new configs: • No conda initialization • No vagrant checks • No nvm references • Created .gitconfig.old, README.md.old as backups |
| 7. Documentation | Update README, add CHANGELOG, structure docs | ✅ Created: • New README.md - Complete rewrite with features, structure, customization• CHANGELOG.md - Version 2.0.0 documentation• Clear installation/uninstallation instructions |
- Zsh Configuration: Created
.zshrc,.zprofile,.zshenv(not in original bash-centric repo) - Bash Modernization: Created
.bashrc_modernand.bash_profilefor Linux compatibility - Backup Strategy: Old files renamed with
.oldextension rather than deleted
The implementation closely followed the plan with the exception of development tool configs (starship, tmux) which can be added in a future update if needed.