- Add bat config: ansi theme, line numbers, header, italic text - Add ripgrep config: smart-case, hidden files, exclude .git - Add fzf env vars: fd backend, reverse layout, border - Add RIPGREP_CONFIG_PATH export - Fedora sysup: add chezmoi update as parallel task
163 lines
5.5 KiB
Cheetah
163 lines
5.5 KiB
Cheetah
# Path (consolidated - no need for .deno/env and .local/bin/env)
|
|
export PATH="$HOME/.local/bin:$HOME/.deno/bin:$HOME/.juliaup/bin:$PATH"
|
|
export FPATH="$HOME/completions:$FPATH"
|
|
|
|
# Oh My Zsh
|
|
export ZSH="$HOME/.oh-my-zsh"
|
|
ZSH_THEME="robbyrussell"
|
|
HYPHEN_INSENSITIVE="true"
|
|
zstyle ':omz:update' mode auto
|
|
zstyle ':omz:update' frequency 13
|
|
ENABLE_CORRECTION="true"
|
|
COMPLETION_WAITING_DOTS="true"
|
|
HIST_STAMPS="dd.mm.yyyy"
|
|
plugins=(git)
|
|
|
|
# Cache compinit - only regenerate once per day
|
|
zstyle ':omz:alpha:lib:completion' caching yes
|
|
source $ZSH/oh-my-zsh.sh
|
|
{{- if eq .distro "fedora" }}
|
|
|
|
sysup() {
|
|
command sudo -v || return 1
|
|
setopt LOCAL_OPTIONS NO_NOTIFY NO_MONITOR
|
|
local -a names=(dnf flatpak rustup deno npm dotfiles)
|
|
local -a logs pids
|
|
for n in $names; do logs+=($(mktemp)); done
|
|
local start=$SECONDS
|
|
command sudo dnf up -y &>"${logs[1]}" &
|
|
pids+=($!)
|
|
setsid flatpak upgrade -y &>"${logs[2]}" &
|
|
pids+=($!)
|
|
rustup update &>"${logs[3]}" &
|
|
pids+=($!)
|
|
deno upgrade &>"${logs[4]}" &
|
|
pids+=($!)
|
|
command sudo npm update -g --fund=false --loglevel=error &>"${logs[5]}" &
|
|
pids+=($!)
|
|
chezmoi update --no-tty &>"${logs[6]}" &
|
|
pids+=($!)
|
|
local lines=$(( ${#names} + 2 ))
|
|
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' i=0 drawn=0
|
|
tput civis 2>/dev/null
|
|
trap 'tput cnorm 2>/dev/null' INT TERM
|
|
while true; do
|
|
local all_done=1
|
|
for j in {1..${#pids}}; do
|
|
kill -0 ${pids[$j]} 2>/dev/null && all_done=0 && break
|
|
done
|
|
(( all_done )) && break
|
|
(( drawn )) && printf "\033[${lines}A"
|
|
local elapsed=$((SECONDS - start))
|
|
local maxw=$(( COLUMNS - 16 ))
|
|
local s=${spin:$((i%${#spin})):1}
|
|
printf "\033[K\n"
|
|
printf "\033[K \033[1;33m%s\033[0m \033[1msysup\033[0m \033[2m%dm%02ds\033[0m\n" \
|
|
"$s" $((elapsed/60)) $((elapsed%60))
|
|
for j in {1..${#pids}}; do
|
|
local last=$(tail -1 "${logs[$j]}" 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g' | tr -d '\r')
|
|
if kill -0 ${pids[$j]} 2>/dev/null; then
|
|
printf "\033[K \033[33m●\033[0m %-8s \033[2m%s\033[0m\n" "${names[$j]}" "${${last:-(starting...)}:0:$maxw}"
|
|
else
|
|
printf "\033[K \033[32m✓\033[0m %-8s \033[2mdone\033[0m\n" "${names[$j]}"
|
|
fi
|
|
done
|
|
printf "\033[K"
|
|
drawn=1; ((i++)); sleep 0.5
|
|
done
|
|
tput cnorm 2>/dev/null
|
|
trap - INT TERM
|
|
if (( drawn )); then
|
|
printf "\033[${lines}A"
|
|
for _ in {1..$lines}; do printf "\033[K\n"; done
|
|
printf "\033[${lines}A"
|
|
fi
|
|
wait
|
|
for j in {1..${#names}}; do
|
|
printf "\n\033[1;36m--- %s ---\033[0m\n" "${names[$j]}"; cat "${logs[$j]}"
|
|
done
|
|
rm -f "${logs[@]}"
|
|
printf "\n\033[1;32m✓ Done in %ds\033[0m\n" "$((SECONDS - start))"
|
|
}
|
|
{{- end }}
|
|
{{- if eq .distro "gentoo" }}
|
|
|
|
sysup() {
|
|
command sudo -v || return 1
|
|
setopt LOCAL_OPTIONS NO_NOTIFY NO_MONITOR
|
|
local -a names=(emerge flatpak dotfiles)
|
|
local -a logs pids
|
|
for n in $names; do logs+=($(mktemp)); done
|
|
local start=$SECONDS
|
|
{ command sudo emerge --sync && command sudo emerge -uDN --with-bdeps=y --changed-deps=y @world && command sudo emerge --depclean; } &>"${logs[1]}" &
|
|
pids+=($!)
|
|
setsid flatpak upgrade -y &>"${logs[2]}" &
|
|
pids+=($!)
|
|
chezmoi update --no-tty &>"${logs[3]}" &
|
|
pids+=($!)
|
|
local lines=$(( ${#names} + 2 ))
|
|
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' i=0 drawn=0
|
|
tput civis 2>/dev/null
|
|
trap 'tput cnorm 2>/dev/null' INT TERM
|
|
while true; do
|
|
local all_done=1
|
|
for j in {1..${#pids}}; do
|
|
kill -0 ${pids[$j]} 2>/dev/null && all_done=0 && break
|
|
done
|
|
(( all_done )) && break
|
|
(( drawn )) && printf "\033[${lines}A"
|
|
local elapsed=$((SECONDS - start))
|
|
local maxw=$(( COLUMNS - 16 ))
|
|
local s=${spin:$((i%${#spin})):1}
|
|
printf "\033[K\n"
|
|
printf "\033[K \033[1;33m%s\033[0m \033[1msysup\033[0m \033[2m%dm%02ds\033[0m\n" \
|
|
"$s" $((elapsed/60)) $((elapsed%60))
|
|
for j in {1..${#pids}}; do
|
|
local last=$(tail -1 "${logs[$j]}" 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g' | tr -d '\r')
|
|
if kill -0 ${pids[$j]} 2>/dev/null; then
|
|
printf "\033[K \033[33m●\033[0m %-9s \033[2m%s\033[0m\n" "${names[$j]}" "${${last:-(starting...)}:0:$maxw}"
|
|
else
|
|
printf "\033[K \033[32m✓\033[0m %-9s \033[2mdone\033[0m\n" "${names[$j]}"
|
|
fi
|
|
done
|
|
printf "\033[K"
|
|
drawn=1; ((i++)); sleep 0.5
|
|
done
|
|
tput cnorm 2>/dev/null
|
|
trap - INT TERM
|
|
if (( drawn )); then
|
|
printf "\033[${lines}A"
|
|
for _ in {1..$lines}; do printf "\033[K\n"; done
|
|
printf "\033[${lines}A"
|
|
fi
|
|
wait
|
|
for j in {1..${#names}}; do
|
|
printf "\n\033[1;36m--- %s ---\033[0m\n" "${names[$j]}"; cat "${logs[$j]}"
|
|
done
|
|
rm -f "${logs[@]}"
|
|
printf "\n\033[1;32m✓ Done in %ds\033[0m\n" "$((SECONDS - start))"
|
|
}
|
|
{{- end }}
|
|
|
|
# Tools (cached init for faster startup)
|
|
if [[ ! -f ~/.cache/zsh/zoxide.zsh ]] || (( $(date +%s) - $(stat -c %Y ~/.cache/zsh/zoxide.zsh 2>/dev/null || echo 0) > 86400 )); then
|
|
mkdir -p ~/.cache/zsh
|
|
zoxide init zsh > ~/.cache/zsh/zoxide.zsh
|
|
starship init zsh > ~/.cache/zsh/starship.zsh
|
|
fi
|
|
source ~/.cache/zsh/zoxide.zsh
|
|
source ~/.cache/zsh/starship.zsh
|
|
|
|
# Bitwarden CLI
|
|
alias bwu='export BW_SESSION=$(bw unlock --raw)'
|
|
|
|
# fzf: use fd as backend, follow symlinks, respect .gitignore
|
|
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
|
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
|
|
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
|
|
|
# ripgrep config
|
|
export RIPGREP_CONFIG_PATH="$HOME/.config/ripgrep/config"
|
|
|
|
# CHROME_BIN (resolved on demand, not every shell start)
|
|
export CHROME_BIN="${CHROME_BIN:-$(command -v chromium-browser 2>/dev/null || command -v chromium 2>/dev/null || command -v google-chrome 2>/dev/null)}"
|