X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/cbfa782ecacafe28885f3b65a0dec533ab7c3ddd..3c83c67b47ed2bd5d55a573938f990a46f71ee55:/base/.zprofile diff --git a/base/.zprofile b/base/.zprofile index aa57163..f028728 100644 --- a/base/.zprofile +++ b/base/.zprofile @@ -1,15 +1,68 @@ -#XXX: ensure we override /etc/profile, gets loaded after .zshenv -source ~/.zshenv - -t="${TMPDIR:-/tmp}/home-$LOGNAME" -h="$HOME/tmp" -if [[ ! -e "$t" ]] { - mkdir -m 700 "$t" > /dev/null 2>&1 - #TODO: check if dir exists after mkdir +### exports +## reset PATH to prevent /etc/zprofile from changing it +# some distros put non-interactive PATH in env and interactive PATH in profile; +# we want to make sure to always use ours regardless +if [[ -v _sev_backup_path ]] { + path=("${_backup_path[@]}" "${path[@]}") + export PATH + unset _sev_backup_path } -#allow opaque entries to override -if [[ ! -e "$h" ]] { - ln -sf "$t" "$h" > /dev/null 2>&1 +## common +export EDITOR=vim +export PAGER=less +## grep +# XXX: deprecated in GNU +export GREP_OPTIONS=--color=auto +## histfile +export HISTFILE=~/.histfile +export HISTSIZE=1000 +export SAVEHIST=1000 +## python +export PYTHONSTARTUP=~/.pythonrc +## perl +[[ -v commands[perl] ]] && eval $(perl -I $XDG_DATA_HOME/perl5/lib/perl5 -Mlocal::lib=$XDG_DATA_HOME/perl5 2>/dev/null) + +### ssh agents +# NOTE: preferred order of agents to check: okcagent, gnupg, openssh +# first block takes care of okcagent and openssh, second handles gnupg +if [[ ! -v SSH_AUTH_SOCK && ( -v commands[okc-ssh-agent] || + ( -v commands[ssh-agent] && ! -v commands[gpg] ) ) ]] { + okc=${commands[okc-ssh-agent]:+okc-} + agentfile=~/tmp/${okc}ssh-agent-exports + typeset sock= + typeset -i pid= + if [[ -f "$agentfile" ]] { + IFS=$'\0' read -r sock pid <"$agentfile" + } + if [[ -S "$sock" && $pid > 0 ]] && kill -0 $pid; then + echo "Reusing agent pid $pid" + export SSH_AUTH_SOCK="$sock" + export SSH_AGENT_PID=$pid + else + # TODO: ensure ssh-agent path looks legit + # to avoid unsafe eval? + eval `${okc}ssh-agent` + echo -n "$SSH_AUTH_SOCK"$'\0'$SSH_AGENT_PID >!$agentfile + fi + unset okc agentfile sock pid +} elif [[ -v commands[gpg] && ! -S $_GNUPG_SOCK_DEST && \ + ( ! -v SSH_AUTH_SOCK || -v DISPLAY ) ]] { + export GPG_TTY=$(tty) + export PINENTRY_USER_DATA=USE_TTY=$((!${+DISPLAY})) + gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null 2>&1 + gpg-connect-agent /subst /serverpid \ + '/echo GPG agent pid ${get serverpid}' /bye + [[ ! -v SSH_AUTH_SOCK ]] && \ + export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +} + +### gpg socket +if [[ -v _GNUPG_SOCK_SRC && -v _GNUPG_SOCK_DEST && -S $_GNUPG_SOCK_DEST ]] { + unlink $_GNUPG_SOCK_SRC >/dev/null 2>&1 + mv $_GNUPG_SOCK_DEST $_GNUPG_SOCK_SRC >/dev/null } -unset t -unset h + +### load site-specific +if [[ -f ~/.zprofile.local ]] { source ~/.zprofile.local } + +# vim: set et sts=4 sw=4 ts=8 tw=79 :