blob: 3c92d3befcf116603043548cfbde02e2123743e7 (
plain)
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
|
# ~nebula/.zshrc, 2023 edition
# table of contents:
# per-device configuration (pre) <dev-pre>
# zsh configuration <zsh-conf>
# third party configuration <3rd-conf>
# aliases & non-script functions <alias-fns>
# per-device configuration (post) <dev-post>
# //// per-device configuration //////////////////////////////// <dev-pre> // #
# Per-device configuration is kept here in dotfiles.git too, but it won't be
# activated just by linking .zshrc. You also need to link ~/.device_pre and
# ~/.device_post to the relevant per-device files under `device`.
# All exports in pre-config are prefixed with `DEVICE_`, and are used to toggle
# features or identify installations in .zshrc or other scripts which are part
# of dotfiles.git.
device_preconfig() {
source ~/.device_pre
}
# The post-config file is intended to run commands that are so specialized to
# the relevant device that it wouldn't make sense to include as a toggleable
# feature in the main .zshrc.
device_postconfig() {
source ~/.device_post
}
device_preconfig
# //// zsh configuration ////////////////////////////////////// <zsh-conf> // #
export HISTFILE="$HOME/.zsh_history"
export SAVEHIST=1000
export HISTSIZE=2000
autoload -Uz select-word-style
select-word-style bash
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
autoload -U colors && colors
PS1=$'\e[0;32;1m%n\e[0;32m@\e[32;1m%m \e[34m%1~ \e[0m%# '
PROMPT="%F{green}%B%n%b@%B%m %F{blue}%1~%b%f %# "
else
PS1=$'%n@%m %1~ %# '
fi
path+=("$HOME/bin")
# //// third party configuration ////////////////////////////// <3rd-conf> // #
# -- Go --
if [[ -v DEVICE_HAS_GO ]]; then
export GOPATH=$DEVICE_GO_INSTALLATION
fi
# -- GPG --
if [[ -v DEVICE_HAS_GPG ]]; then
export GPG_TTY=$(tty)
fi
# -- Homebrew --
if [[ -v DEVICE_HAS_HOMEBREW ]]; then
eval "$("$DEVICE_HOMEBREW_INSTALLATION"/bin/brew shellenv)"
if [[ -z DEVICE_HAS_PYENV ]]; then
# https://github.com/pyenv/pyenv#homebrew-in-macos
alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
fi
if [[ -s "$DEVICE_HOMEBREW_INSTALLATION/opt/util-linux" ]]; then
path=("$DEVICE_HOMEBREW_INSTALLATION/opt/util-linux/bin" ${(@)path})
path=("$DEVICE_HOMEBREW_INSTALLATION/opt/util-linux/sbin" ${(@)path})
fi
fi
# -- Node Version Manager --
if [[ -v DEVICE_HAS_NVM ]]; then
export NVM_DIR="$DEVICE_NVM_INSTALLATION"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
fi
# -- Python --
if [[ -v DEVICE_HAS_PYTHON_3 ]]; then
path+=("$DEVICE_PYTHON_3_INSTALLATION/bin")
fi
# -- Python (pyenv) --
if [[ -z DEVICE_HAS_PYENV ]]; then
eval "$(pyenv init -)"
fi
# -- Sublime Text --
if [[ -v DEVICE_HAS_SUBLIME_TEXT ]]; then
path+=("$DEVICE_SUBLIME_TEXT_INSTALLATION)/Contents/SharedSupport/bin")
fi
export PATH
# //// aliases & non-script functions //////////////////////// <alias-fns> // #
# -- hooks into third-party stuff --
if [[ -v DEVICE_HAS_VIM ]]; then
vimhelp() {
vim -c ":h $1 | only"
}
fi
# //// per-device configuration /////////////////////////////// <dev-post> // #
device_postconfig
|