# ~/.profile: executed by Bourne-compatible login shells # Engine (Hetzner) - goku # Last updated: 2026-07-18 # ── PATH ────────────────────────────────────────────────────────── if [ -d "$HOME/bin" ]; then PATH="$HOME/bin:$PATH" fi if [ -d "$HOME/.local/bin" ]; then PATH="$HOME/.local/bin:$PATH" fi if [ -d "$HOME/.cargo/bin" ]; then PATH="$HOME/.cargo/bin:$PATH" fi if [ -d "$HOME/.npm-global/bin" ]; then PATH="$HOME/.npm-global/bin:$PATH" fi if [ -d "$HOME/.bun/bin" ]; then PATH="$HOME/.bun/bin:$PATH" fi if [ -d "$HOME/.opencode/bin" ]; then PATH="$HOME/.opencode/bin:$PATH" fi if [ -d "$HOME/go/bin" ]; then PATH="$HOME/go/bin:$PATH" fi if [ -d "$HOME/.local/go/bin" ]; then PATH="$HOME/.local/go/bin:$PATH" fi # ── Editor ─────────────────────────────────────────────────────── EDITOR=vim VISUAL=vim export EDITOR VISUAL # ── Locale ─────────────────────────────────────────────────────── export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # ── Shell options ──────────────────────────────────────────────── HISTSIZE=10000 HISTFILESIZE=20000 HISTTIMEFORMAT="%F %T " HISTCONTROL=ignoredups:ignorespace shopt -s histappend checkwinsize cdspell dirspell autocd # ── Cargo ──────────────────────────────────────────────────────── . "$HOME/.cargo/env" # ── Library path ───────────────────────────────────────────────── export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/bin # ── Source bashrc (aliases, functions, prompt) ─────────────────── if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi # ── Docker shortcuts ───────────────────────────────────────────── alias d='docker' alias dc='docker compose' alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"' alias dsa='docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"' alias dlog='docker logs -f' alias di='docker images' alias dexec='docker exec -it' alias dprune='docker system prune -af --volumes' alias dup='docker compose up -d' alias ddown='docker compose down' alias dtop='docker stats --no-stream' alias dstop-all='docker stop $(docker ps -q)' alias dip="docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}'" alias dwatch='watch -n2 "docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\""' # ── System ─────────────────────────────────────────────────────── alias df='df -h' alias du='du -sh' alias free='free -h' alias psg='ps aux | grep' alias cpu='ps aux --sort=-%cpu | head -10' alias mem='ps aux --sort=-%mem | head -10' alias ports='ss -tlnp' alias top='htop' alias myip='curl -s ifconfig.me 2>/dev/null || curl -s https://api.ipify.org' alias disk-usage='du -sh /* 2>/dev/null | sort -rh | head -10' # ── Network ────────────────────────────────────────────────────── alias ping='ping -c 4' alias wg-show='wg show' alias wg-stats='wg show wg0 | grep -E "transfer|latest handshake|endpoint"' # ── Navigation ─────────────────────────────────────────────────── alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias ll='ls -alF' alias la='ls -A' alias lt='ls -ltr' alias l='ls -CF' # ── Git ────────────────────────────────────────────────────────── alias gs='git status' alias gl='git log --oneline --graph -20' alias gc='git commit -m' alias gp='git push' alias gpl='git pull' alias gd='git diff' alias gco='git checkout' alias gb='git branch' # ── Tmux ───────────────────────────────────────────────────────── alias tm='tmux new -s' alias tma='tmux attach -t' alias tml='tmux ls' alias tmk='tmux kill-session -t' # ── Forge shortcuts (from original bashrc) ─────────────────────── alias ops="mprocs -c ~/forge/forge-mprocs.yaml" alias threads="bash ~/forge/nexus/bin/forge-worker.sh" # ── WireGuard / network ────────────────────────────────────────── alias wgo='wg show wg0' alias wg-peers='wg show wg0 peers' alias wg-latest='wg show wg0 | grep -A3 "latest handshake"' alias wg-transfer='wg show wg0 | grep transfer' # ── Functions ──────────────────────────────────────────────────── # Full docker inspect dipall() { docker inspect "$1" --format "\ Name: {{.Name}} Status: {{.State.Status}} IP: {{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}} Image: {{.Config.Image}} Ports: {{range $p, $c := .NetworkSettings.Ports}}{{$p}} {{end}}" } # Docker shell dsh() { docker exec -it "$1" sh -c 'if command -v bash >/dev/null 2>&1; then bash; else sh; fi' 2>/dev/null || \ docker exec -it "$1" sh } # SSH with keys sshw() { ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -i ~/.ssh/id_ed25519 "$@" } sshw-root() { ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -i ~/.ssh/id_ed25519 "root@$1" "$2" } # Quick wireguard ping all peers wg-ping() { for ip in 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4 10.0.0.5; do ping -c 1 -W 1 $ip 2>/dev/null | grep -q "1 received" && echo " $ip OK" || echo " $ip DEAD" done } # ── Login banner ───────────────────────────────────────────────── echo "" echo "========================================" echo " engine (Hetzner) - goku" echo " Uptime: $(uptime -p 2>/dev/null || echo "?")" echo " Load: $(cat /proc/loadavg | cut -d' ' -f1-3)" echo " Disk: $(df -h / | tail -1 | awk '{print $3 " / " $2 " (" $5 ")"}')" echo " RAM: $(free -h | grep Mem | awk '{print $3 " / " $2}')" echo " Docker: $(docker ps -q 2>/dev/null | wc -l) running / $(docker ps -aq 2>/dev/null | wc -l) total" if command -v wg >/dev/null 2>&1 && wg show wg0 >/dev/null 2>&1; then echo " WG: $(wg show wg0 2>/dev/null | grep -c "peer:" 2>/dev/null) peers, $(wg show wg0 2>/dev/null | grep "latest handshake" | wc -l) connected" fi echo "========================================" echo ""