X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/32bdde5fa442d01349120dd4c3ab1b6c07537631..43016843cfea7f857797fdc1d6e8a2b59557aaf1:/base/.zprofile diff --git a/base/.zprofile b/base/.zprofile index 39abb7d..f028728 100644 --- a/base/.zprofile +++ b/base/.zprofile @@ -1,5 +1,68 @@ -case "`uname`" in *BSD*) - mkdir -m 700 "/tmp/home-$LOGNAME" > /dev/null 2>&1 - unlink "$HOME/tmp" > /dev/null 2>&1 - ln -sFh "/tmp/home-$LOGNAME" "$HOME/tmp";; -esac +### 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 +} +## 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 +} + +### load site-specific +if [[ -f ~/.zprofile.local ]] { source ~/.zprofile.local } + +# vim: set et sts=4 sw=4 ts=8 tw=79 :