Initial commit: Complete macOS dotfiles system

🖖 Features:
- Master 'engage' script for one-command setup
- 120+ CLI tools via Homebrew
- 40+ Applications (casks + MAS apps)
- Complete macOS system configuration
- Security hardening and privacy settings
- Obsidian knowledge vault setup
- Comprehensive backup strategies
- Automated symlink management

Live long and prosper\! 🚀

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
David F Glidden
2025-07-27 13:17:01 +02:00
co-authored by Claude
commit 0838f1cf8c
26 changed files with 2747 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
# Custom Scripts
This directory contains custom scripts that will be symlinked to `~/bin`.
## Setup
1. The symlink script will link all scripts from this directory to `~/bin`
2. Make sure `~/bin` is in your PATH (add to `.zshrc`):
```bash
export PATH="$HOME/bin:$PATH"
```
## Adding New Scripts
1. Create your script in `~/dotfiles/bin/`
2. Make it executable: `chmod +x script_name`
3. Run the symlink script to link it to `~/bin`
## Script Guidelines
- Start with proper shebang: `#!/usr/bin/env bash` or `#!/usr/bin/env zsh`
- Add help/usage information
- Use meaningful names
- Document what the script does
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
# Quick backup of important dotfiles
set -euo pipefail
DOTFILES_DIR="$HOME/dotfiles"
BACKUP_DIR="$DOTFILES_DIR/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${GREEN}Backing up dotfiles...${NC}"
# Create backup directory
mkdir -p "$BACKUP_DIR"
# Files to backup
files=(
"$HOME/.zshrc"
"$HOME/.gitconfig"
"$HOME/.vimrc"
"$HOME/.ssh/config"
"$HOME/.config/karabiner/karabiner.json"
)
# Create tarball
tar_file="$BACKUP_DIR/dotfiles_backup_${TIMESTAMP}.tar.gz"
for file in "${files[@]}"; do
if [ -f "$file" ]; then
echo -e "${YELLOW}Adding: $file${NC}"
fi
done
tar -czf "$tar_file" \
--exclude="*.log" \
--exclude=".git" \
"${files[@]}" 2>/dev/null || true
echo -e "${GREEN}Backup created: $tar_file${NC}"
# Keep only last 10 backups
cd "$BACKUP_DIR"
ls -t dotfiles_backup_*.tar.gz | tail -n +11 | xargs -r rm
echo -e "${GREEN}Done!${NC}"
+71
View File
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
# Check for changes in application configurations
set -euo pipefail
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${GREEN}Checking application configuration changes...${NC}\n"
# Function to check if file has changed
check_config() {
local app_name="$1"
local source_path="$2"
local backup_path="$3"
if [ ! -e "$source_path" ]; then
echo -e "${RED}✗ $app_name: Source not found${NC}"
return
fi
if [ ! -e "$backup_path" ]; then
echo -e "${YELLOW}⚠ $app_name: No backup exists${NC}"
return
fi
if diff -q "$source_path" "$backup_path" >/dev/null 2>&1; then
echo -e "${GREEN}✓ $app_name: Up to date${NC}"
else
echo -e "${YELLOW}⚠ $app_name: Has changes${NC}"
fi
}
# Check each application
echo "Checking configurations..."
# NPM
if [ -f ~/.npmrc ] && [ -f ~/dotfiles/.npmrc ]; then
check_config "NPM config" ~/.npmrc ~/dotfiles/.npmrc
fi
# SSH
if [ -f ~/.ssh/config ]; then
echo -e "${YELLOW}! SSH config: Manual check required (contains sensitive data)${NC}"
fi
# LaunchBar
if [ -d "$HOME/Library/Application Support/LaunchBar" ]; then
# Check if backup exists
if [ -d "$HOME/dotfiles/macos-apps/LaunchBar" ]; then
echo -e "${YELLOW}! LaunchBar: Run backup script to check for changes${NC}"
else
echo -e "${YELLOW}⚠ LaunchBar: No backup exists${NC}"
fi
fi
# Hazel
if [ -f "$HOME/Library/Application Support/Hazel/hazelrules.db" ]; then
check_config "Hazel rules" \
"$HOME/Library/Application Support/Hazel/hazelrules.db" \
"$HOME/dotfiles/macos-apps/Hazel/hazelrules.db"
fi
# Git config
check_config "Git config" ~/.gitconfig ~/dotfiles/git/.gitconfig
echo -e "\n${GREEN}Check complete!${NC}"
echo -e "To backup changed configs, run: ${YELLOW}~/dotfiles/macos-apps/backup-app-configs.sh${NC}"