Aaron D. Lee 9a6a6bdaa4 -s
2025-12-22 01:02:35 -05:00
2025-12-22 00:52:32 -05:00
2025-12-21 23:44:55 -05:00
2025-12-22 00:22:08 -05:00
-s
2025-12-22 01:02:35 -05:00
2025-12-15 16:17:06 -05:00
2025-12-20 22:28:43 -05:00
2025-12-21 23:44:28 -05:00
2025-12-21 23:44:28 -05:00
2025-12-22 00:39:04 -05:00
2025-12-14 00:13:08 -05:00
2025-12-21 23:44:28 -05:00

ADLee's Dotfiles (Arch/CachyOS)

Personal configuration files for a fast, productive dev environment on Arch Linux and CachyOS.

License: MIT Shell OS

┌[alee@battlestation]─[~/.dotfiles ⎇ main]
└%

Features

Feature Description
Setup Wizard Beautiful TUI installer with feature selection
Dynamic MOTD System info on shell start (uptime, CPU, memory, updates)
Zsh Theme Two-line prompt with git status, command timer, root detection
Command Palette Raycast-style fuzzy launcher (Ctrl+Space)
Smart Suggestions Typo correction + alias recommendations
Shell Analytics Track command usage and get insights
Secrets Vault Encrypted storage for API keys and sensitive data
LastPass CLI Unified password manager integration
Dotfiles Sync Keep configuration in sync across machines
Snapper Integration Btrfs snapshot management with limine-snapper-sync
Tmux Workspaces Project templates with pre-configured layouts
SSH Manager Save and manage SSH connections with tmux integration

🚀 Quick Start

One-liner Install

git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install.sh
git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh --wizard

Standard Install

git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh

📋 System Requirements

  • OS: Arch Linux or CachyOS
  • Editors: Vim (required), Neovim (optional)
  • Password Manager: LastPass
  • Shell: Zsh (installed by script)
  • Package Manager: Pacman (built-in)

📁 Repository Layout

dotfiles/
├── install.sh                 # Main installer script
├── dotfiles.conf              # Central configuration
├── zsh/
│   ├── .zshrc                 # Shell configuration
│   ├── aliases.zsh            # Command aliases
│   ├── themes/adlee.zsh-theme # Prompt theme
│   └── functions/
│       ├── command-palette.zsh    # Ctrl+Space launcher
│       ├── motd.zsh               # System info display
│       ├── smart-suggest.zsh      # Typo correction
│       ├── password-manager.zsh   # LastPass integration
│       ├── snapper.zsh            # Btrfs snapshots
│       ├── ssh-manager.zsh        # SSH profiles
│       ├── tmux-workspaces.zsh    # Workspace templates
│       └── python-templates.zsh   # Python project scaffolding
├── vim/.vimrc                 # Vim configuration
├── nvim/                      # Neovim configuration
├── tmux/.tmux.conf           # Tmux configuration
├── git/.gitconfig.template   # Git configuration template
└── bin/                       # Scripts (symlinked to ~/.local/bin)
    ├── dotfiles-doctor.sh     # Health checker
    ├── dotfiles-sync.sh       # Multi-machine sync
    ├── dotfiles-stats.sh      # Shell analytics
    ├── dotfiles-update.sh     # Update dotfiles
    ├── dotfiles-vault.sh      # Encrypted secrets manager
    └── dotfiles-version.sh    # Version info

🎮 Command Palette

Press Ctrl+Space or Ctrl+P to open the fuzzy command launcher:

╭──────────────────────────────────────────╮
│  git                                    │
├──────────────────────────────────────────┤
│ ⎇  git status                            │
│ ⎇  git pull main                         │
│ ⚡ gs (alias → git status)               │
│ ↺  git commit -m "..."                   │
│ ★  Edit .zshrc                           │
╰──────────────────────────────────────────╯

Searches: aliases, functions, recent commands, bookmarks, git commands, quick actions

Keybindings:

  • Enter - Execute command
  • Ctrl+E - Edit before running
  • Ctrl+Y - Copy to clipboard

Directory Bookmarks

bookmark projects ~/projects    # Save bookmark
bookmark list                   # List all
jump projects                   # Go to bookmark
j                               # Fuzzy select

🔧 Smart Suggestions

Automatic typo correction for 100+ common mistakes:

$ gti status
✗ Command not found: gti
→ Did you mean: git?

$ dokcer ps
✗ Command not found: dokcer
→ Did you mean: docker?

Alias recommendations for frequently typed commands:

💡 Tip: You've typed 'git status' 50 times
   Consider adding: alias gs='git status'

📊 Shell Analytics

dotfiles-stats.sh              # Full dashboard
# or use aliases:
dfstats
stats
╔═══════════════════════════════════════════════════════════════════╗
║  Shell Analytics Dashboard                                        ║
╠═══════════════════════════════════════════════════════════════════╣
║  Total commands:  4,832                                           ║
║  Unique commands: 847                                             ║
║                                                                   ║
║  Top Commands                                                     ║
║  git          847  ████████████████████████░░░░░░                 ║
║  cd           412  ████████████░░░░░░░░░░░░░░░░░░                 ║
║  ls           398  ███████████░░░░░░░░░░░░░░░░░░░                 ║
╚═══════════════════════════════════════════════════════════════════╝

🔐 Secrets Vault

Encrypted storage for API keys and tokens:

vault set GITHUB_TOKEN ghp_xxxxxxxxxxxx
vault set AWS_SECRET_KEY              # Prompts for hidden input
vault get GITHUB_TOKEN
vault list                            # Shows keys only
vault delete OLD_KEY
# Full command: dotfiles-vault.sh

Export to environment:

eval $(vault shell)                   # Load all secrets

Uses age or gpg encryption. Secrets auto-load on shell start.

🔑 Password Manager Integration

LastPass CLI for unified password management:

pw list                    # List all items
pw get github              # Get password
pw get github username     # Get specific field
pw otp github              # Get TOTP code
pw copy aws                # Copy password to clipboard
pw search mail             # Search items
pwf                        # Fuzzy search + copy (requires fzf)

Install LastPass CLI

# Via AUR with paru (recommended)
paru -S lastpass-cli

# Or with yay
yay -S lastpass-cli

🖥️ Dynamic MOTD

System info displayed on shell startup:

┌──────────────────────────────────────────────────────────────┐
│ ✦ alee@battlestation                     Mon Dec 15 14:30   │
├──────────────────────────────────────────────────────────────┤
│ ▲ up:4d 7h   ◆ load:0.45     ◇ mem:8.2/32G   ⊡ 234G free  │
└──────────────────────────────────────────────────────────────┘

Shows: uptime, load average, memory usage, disk space

Configuration:

ENABLE_MOTD="true"         # Enable MOTD
MOTD_STYLE="compact"       # compact (box), mini (single line), or off

🎨 Zsh Theme

┌[user@hostname]─[~/projects ⎇ main *]
└%

Features:

  • Two-line prompt for clarity
  • Git integration (branch name with dirty indicator *)
  • Command timer (shows elapsed time for commands >10s)
  • Smart path truncation
  • Root detection (red for root, blue for users)

🔄 Dotfiles Sync

Keep configuration synchronized across machines:

dotfiles-sync.sh              # Interactive sync
dotfiles-sync.sh --status     # Show sync status
dotfiles-sync.sh --push       # Push changes
dotfiles-sync.sh --pull       # Pull changes
dotfiles-sync.sh --watch 300  # Auto-sync every 5 min

On shell start, you'll see notifications of available updates.

📸 Snapper Integration

Btrfs snapshot management for Arch with limine bootloader:

snap-create "Before system update"    # Create snapshot
snap-list 20                           # List recent snapshots
snap-check-limine                      # Verify boot menu sync
snap-delete 42                         # Delete snapshot
snap-validate-service                  # Check service status

Auto-syncs with limine-snapper-sync for boot menu entries.

Install on CachyOS/Arch:

paru -S limine-snapper-sync
sudo systemctl enable limine-snapper-sync.service

🎯 Tmux Workspace Manager

Pre-configured layouts for different workflows:

tw-create myproject dev        # Create dev workspace
tw myproject                    # Quick attach or create
tw-list                         # List active workspaces
tw-save my-custom-layout       # Save current layout as template
tw-sync                         # Toggle pane sync for multi-server
twf                             # Fuzzy search workspaces

Available Templates:

  • dev - Vim (50%) + terminal (25%) + logs (25%)
  • ops - 4-pane monitoring grid
  • ssh-multi - 4 panes for multi-server management
  • debug - 2 panes: main (70%) + helper (30%)
  • full - Single full-screen pane
  • review - Side-by-side code review panes

🌐 SSH Session Manager

Save and manage SSH connections with automatic tmux integration:

ssh-save prod user@prod.example.com 22 ~/.ssh/prod_key
ssh-connect prod                       # Auto-creates/attaches tmux session
ssh-list                               # List all profiles
sshf                                   # Fuzzy search and connect
ssh-sync-dotfiles prod                 # Deploy dotfiles to remote

🐍 Python Project Templates

Quick project scaffolding with virtual environments:

py-new myproject               # Basic Python project
py-django myblog               # Django web app
py-flask myapp                 # Flask web app
py-fastapi myapi               # FastAPI REST API
py-data analysis                # Data science project
py-cli mytool                  # CLI tool with Click

All include virtual environment setup, git initialization, and project structure.

⌨️ Command Aliases

All dotfiles commands have convenient aliases:

Alias Command Description
dfd dotfiles-doctor.sh Health check
dffix dotfiles-doctor.sh --fix Auto-fix issues
dfs dotfiles-sync.sh Sync dotfiles
dfpush dotfiles-sync.sh --push Push changes
dfpull dotfiles-sync.sh --pull Pull changes
dfu dotfiles-update.sh Update dotfiles
dfv dotfiles-version.sh Version info
dfstats dotfiles-stats.sh Shell analytics
vault dotfiles-vault.sh Secrets manager
pw LastPass password manager Get/list passwords
tw Tmux workspace manager Quick workspace access
reload source ~/.zshrc Reload shell config

🩺 Health Check

dotfiles-doctor.sh             # Run diagnostics
dotfiles-doctor.sh --fix       # Auto-fix issues
# Aliases: dfd, doctor, dffix

Checks: symlinks, zsh plugins, git config, optional tools, and more

⚙️ Configuration

Edit ~/.dotfiles/dotfiles.conf to customize:

# Identity
USER_FULLNAME="Your Name"
USER_EMAIL="you@example.com"
USER_GITHUB="yourusername"

# Features
INSTALL_ZSH_PLUGINS="true"
INSTALL_FZF="ask"
INSTALL_NEOVIM="ask"
SET_ZSH_DEFAULT="ask"

# Advanced
ENABLE_SMART_SUGGESTIONS="true"
ENABLE_COMMAND_PALETTE="true"
ENABLE_VAULT="true"
DOTFILES_AUTO_SYNC_CHECK="true"

🔄 Updating

dotfiles-update.sh
# or aliases:
dfu
dfupdate

Check version:

dotfiles-version.sh
# or: dfv

🗑️ Uninstalling

./install.sh --uninstall            # Remove symlinks
./install.sh --uninstall --purge    # Also delete ~/.dotfiles

📚 Documentation

🛠️ Install Options

./install.sh                    # Standard install
./install.sh --wizard           # Interactive TUI wizard
./install.sh --skip-deps        # Re-run without checking deps
./install.sh --uninstall        # Remove symlinks
./install.sh --help             # Show all options

🤝 Forking

  1. Fork the repo
  2. Edit dotfiles.conf with your settings
  3. Customize files as needed
  4. The installer will use your fork's URLs

📄 License

MIT See LICENSE


Author: Aaron D. Lee
Repository: https://github.com/adlee-was-taken/dotfiles
Arch/CachyOS Only Edition

Description
My janky zsh/oh-my-zsh customization, theme, custom aliases and tools.
Readme 1.1 MiB
Languages
Shell 100%