cachyos-setup/dotfiles/.zshrc
p3ta00 c08daf3f85 Initial commit: CachyOS shell environment setup
Comprehensive shell environment setup for CachyOS/Arch Linux featuring:

- Modern CLI tools: eza, bat, fd, ripgrep, fzf, zoxide, dust, duf, procs, btop, sd, delta
- Development tools: neovim (NvChad), lazygit, starship, yazi, zellij, navi
- Shell: zsh with oh-my-zsh, syntax highlighting, autosuggestions
- Terminal: Ghostty configuration
- Dracula theme: Consistent theming across all tools
- Fonts: JetBrains Mono Nerd Font (all variants)
- Configs: starship, zellij, yazi, fastfetch, ghostty
- Dotfiles: .zshrc, .bashrc, zsh completions

Automated installation script handles all dependencies and configuration.
2025-11-14 01:15:39 -08:00

164 lines
7.6 KiB
Bash

# ═══════════════════════════════════════════════════════════════════
# ZSH CONFIGURATION
# ═══════════════════════════════════════════════════════════════════
# ───────────────────────────────────────────────────────────────────
# OH-MY-ZSH SETTINGS
# ───────────────────────────────────────────────────────────────────
export ZSH="$HOME/.oh-my-zsh"
# Plugins
plugins=(
git
zsh-syntax-highlighting
zsh-autosuggestions
)
source $ZSH/oh-my-zsh.sh
# ───────────────────────────────────────────────────────────────────
# TERMINAL & EDITOR
# ───────────────────────────────────────────────────────────────────
export TERM=xterm-256color
export EDITOR="nvim"
# ───────────────────────────────────────────────────────────────────
# PATH CONFIGURATION
# ───────────────────────────────────────────────────────────────────
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="$HOME/go/bin:$PATH"
# ───────────────────────────────────────────────────────────────────
# PROMPT & THEME
# ───────────────────────────────────────────────────────────────────
export STARSHIP_CONFIG=~/.config/starship.toml
eval "$(starship init zsh)"
# ───────────────────────────────────────────────────────────────────
# MODERN CLI TOOLS
# ───────────────────────────────────────────────────────────────────
# Zoxide (better cd)
eval "$(zoxide init zsh --cmd cd)"
# Bat - use Dracula theme
export BAT_THEME="Dracula"
# FZF - Dracula theme
export FZF_DEFAULT_OPTS="--color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4"
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
# Eza colors
export EZA_COLORS="da=1;34:gm=1;34"
# Delta (git diff)
export DELTA_FEATURES="+side-by-side"
# Atuin
if [ -f "$HOME/.atuin/bin/env" ]; then
. "$HOME/.atuin/bin/env"
fi
export ATUIN_NOBIND="true"
eval "$(atuin init zsh)"
bindkey '^r' _atuin_search_widget
# ───────────────────────────────────────────────────────────────────
# ALIASES - FILE OPERATIONS
# ───────────────────────────────────────────────────────────────────
# Navigation
alias home='cd ~'
alias ..='cd ..'
alias ...='cd ../..'
# File listing (eza)
alias ls='eza --icons --group-directories-first'
alias ll='eza --icons --group-directories-first -l'
alias la='eza --icons --group-directories-first -la'
alias lt='eza --icons --group-directories-first --tree'
alias l='eza --icons --group-directories-first -F'
# File viewing
alias cat='bat --style=plain --paging=never'
alias catp='bat --style=full'
# Better replacements
alias du='dust'
alias df='duf'
alias ps='procs'
alias top='btop'
# ───────────────────────────────────────────────────────────────────
# ALIASES - GIT
# ───────────────────────────────────────────────────────────────────
alias lg='lazygit'
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git pull'
alias gd='git diff'
# ───────────────────────────────────────────────────────────────────
# ALIASES - UTILITIES
# ───────────────────────────────────────────────────────────────────
# Configuration
alias zsource='source ~/.zshrc'
alias zconfig='nvim ~/.zshrc'
alias nconfig='nvim ~/.config/nvim'
alias sconfig='nvim ~/.config/starship.toml'
# Zellij
alias zj='zellij options --theme dracula'
alias zellij-clean='zellij list-sessions --no-formatting | cut -d" " -f1 | xargs -I {} zellij delete-session {} --force'
# Quick commands
alias h='history'
alias help='tldr'
alias ports='netstat -tulanp'
# ───────────────────────────────────────────────────────────────────
# FUNCTIONS
# ───────────────────────────────────────────────────────────────────
# Quick directory navigation
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Extract any archive
extract() {
if [ -f $1 ]; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar e $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# ───────────────────────────────────────────────────────────────────
# COMPLETIONS
# ───────────────────────────────────────────────────────────────────
fpath=(~/.zsh/completions $fpath)
autoload -Uz compinit
compinit
# Exegol alias
alias exegol='sudo -E /home/p3ta/.local/bin/exegol'
xhost +si:localuser:root >/dev/null 2>&1