aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/zsh/.zprofile
blob: 76c7fbe68b8f011e3902ddb355f8a521dc23923b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Login shell configuration — sourced once per session by zsh.
# Sets environment variables, XDG paths, tool config, and host-specific overrides.

# Guard against double-sourcing (e.g. nested login shells)
[[ -n $__ZPROFILE_SOURCED ]] && return
__ZPROFILE_SOURCED=1

# ── PATH ──────────────────────────────────────────────────────────────────────
typeset -U path  # deduplicate PATH entries
path=("$HOME/.local/bin" "$HOME/.local/share/nvim/mason/bin" $path)

# ── XDG Base Directories ─────────────────────────────────────────────────────
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.cache"

# ── Locale ────────────────────────────────────────────────────────────────────
export LANG=en_US.UTF-8

# ── Terminal ──────────────────────────────────────────────────────────────────
case $TERM in
    *256color|*truecolor) export COLORTERM=24bit ;;
esac

export TERMINAL='alacritty'
export BROWSER='linkhandler'
export OPENER='xdg-open'

# ── Editors ───────────────────────────────────────────────────────────────────
export EDITOR='nvim'
export VISUAL='nvim'
export DIFFPROG='nvim -d'
export MANPAGER='nvim +Man!'
export MANWIDTH=999

# ── less ──────────────────────────────────────────────────────────────────────
export LESS="-F --RAW-CONTROL-CHARS"
[[ -r /usr/bin/source-highlight-esc.sh ]] && export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"

# ── GPG / SSH ─────────────────────────────────────────────────────────────────
export GPG_TTY=$TTY
unset SSH_AGENT_PID
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"

# ── FZF ───────────────────────────────────────────────────────────────────────
export FZF_DEFAULT_COMMAND="fd --type file --follow --hidden --exclude .git --color=always"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_DIRS_COMMAND="fd --type d --follow --hidden --exclude .git --color=always"
export FZF_DEFAULT_OPTS="--ansi --layout=reverse --inline-info --cycle --color=dark --color=fg:-1,bg:-1,hl:#5fff87,fg+:-1,bg+:-1,hl+:#ffaf5f --color=info:#af87ff,prompt:#5fff87,pointer:#ff87d7,marker:#ff87d7,spinner:#ff87d7"
export FZF_CTRL_T_OPTS="--preview 'bat --color=always --style=numbers --line-range=:500 {}' --select-1 --exit-0"
export FZF_CTRL_R_OPTS="--preview 'echo {}' --preview-window down:3:hidden:wrap --bind '?:toggle-preview' --sort --exact"
export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'"
[[ -n $TMUX ]] && export FZF_TMUX=1

# ── Git prompt ────────────────────────────────────────────────────────────────
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
unset GIT_PS1_SHOWUNTRACKEDFILES
export GIT_PS1_SHOWUPSTREAM="verbose"
export GIT_PS1_SHOWCONFLICTSTATE="yes"
export GIT_PS1_DESCRIBE_STYLE="branch"
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_HIDE_IF_PWD_IGNORED=1

# ── GCC ───────────────────────────────────────────────────────────────────────
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# ── Java ──────────────────────────────────────────────────────────────────────
# System AA fonts, GTK L&F, XDG prefs dir, GTK2 for compatibility
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java -Djdk.gtk.version=2"
# Fix for non-reparenting WMs (bspwm, dwm, etc.)
export _JAVA_AWT_WM_NONREPARENTING=1

# ── Miscellaneous ─────────────────────────────────────────────────────────────
export QT_QPA_PLATFORMTHEME=qt5ct
export NO_AT_BRIDGE=1          # suppress GTK accessibility bus warnings
export vblank_mode=0           # disable vsync
export SXHKD_SHELL="sh"       # faster sxhkd response times
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
export GDK_DISPLAY=1           # https://github.com/sparrowwallet/sparrow/issues/170
export INPUTRC="$XDG_CONFIG_HOME/sh/inputrc"

# ── XDG cleanup: keep $HOME tidy ─────────────────────────────────────────────
# https://wiki.archlinux.org/title/XDG_Base_Directory#Partial
export ALTUSERXSESSION="$XDG_CACHE_HOME/x11/Xsession"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
export ERRFILE="$XDG_CACHE_HOME/x11/xsession-errors"
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
export GOPATH="$XDG_DATA_HOME/go"
export GRADLE_USER_HOME="$XDG_DATA_HOME/gradle"
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history"
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
export RUFF_CACHE_DIR="$XDG_CACHE_HOME/ruff"
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export USERXSESSION="$XDG_CACHE_HOME/x11/xsession"
export USERXSESSIONRC="$XDG_CACHE_HOME/x11/xsessionrc"
export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
export XCOMPOSECACHE="$XDG_CACHE_HOME/X11/xcompose"
export XCOMPOSEFILE="$XDG_CONFIG_HOME/X11/xcompose"
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
export XSERVERRC="$XDG_CONFIG_HOME/X11/xserverrc"
export ZELLIJ_CONFIG_FILE="$XDG_CONFIG_HOME/zellij/config.kdl"

# XAUTHORITY breaks xauth over SSH, only set locally
[[ -n $XDG_RUNTIME_DIR && -z $SSH_TTY ]] && export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority"

# ── Host-specific ─────────────────────────────────────────────────────────────
case $(uname -n) in
    halley2)
        export LIBVA_DRIVER_NAME="iHD"
        export MESA_LOADER_DRIVER_OVERRIDE="iris"
        export VAAPI_MPEG4_ENABLED=true
        ;;
    hercules)
        export OCL_ICD_VENDORS=nvidia
        [[ -r "$XDG_CONFIG_HOME/sh/work-envrc" ]] && source "$XDG_CONFIG_HOME/sh/work-envrc"
        ;;
esac

# ── Secrets (from pass) ──────────────────────────────────────────────────────
(( $+commands[pass] )) && export FIRECRAWL_API_KEY="$(pass show copilot/firecrawl-api-key)"

# ── Auto-start X session on VT1 ──────────────────────────────────────────────
if [[ -z $DISPLAY && $XDG_VTNR == 1 ]]; then
    (( $+commands[sx] )) && sx
fi