-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprivate_dot_bashrc.tmpl
459 lines (361 loc) · 15.9 KB
/
private_dot_bashrc.tmpl
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
#!/usr/bin/env bash
# WARNING: rights to this file should be 600, by default most Linux distributions use 644 instead which is not ideal.
#
# see https://steflan-security.com/linux-privilege-escalation-exploiting-bashrc/
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
########################################################################################################################
# PATH
########################################################################################################################
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] && ! echo "$PATH" | grep "$HOME/bin" >/dev/null ; then
export PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] && ! echo "$PATH" | grep "$HOME/.local/bin" >/dev/null ; then
export PATH="$HOME/.local/bin:$PATH"
fi
if [ -d /usr/sbin ] && ! echo "$PATH" | grep "/usr/sbin" >/dev/null ; then
export PATH="$PATH:/usr/sbin"
fi
if [ -d /usr/local/sbin ] && ! echo "$PATH" | grep "/usr/local/sbin" >/dev/null ; then
export PATH="$PATH:/usr/local/sbin"
fi
########################################################################################################################
# EDITOR
########################################################################################################################
EDITOR="vi"
if [ -f "$HOME/.local/bin/nvim-linux64/bin/nvim" ] ; then
EDITOR="$HOME/.local/bin/nvim-linux64/bin/nvim"
export PATH="$PATH:$HOME/.local/bin/nvim-linux64/bin"
elif which nvim.appimage >/dev/null ; then
EDITOR=nvim.appimage
elif which vim >/dev/null ; then
EDITOR=vim
fi
export EDITOR=${EDITOR}
########################################################################################################################
# MAN
########################################################################################################################
if [ -f "$HOME/.local/bin/nvim-linux64/bin/nvim" ] ; then
export MANPAGER="$HOME/.local/bin/nvim-linux64/bin/nvim +Man!"
elif which nvim.appimage >/dev/null ; then
export MANPAGER="nvim.appimage +Man!"
elif which vim >/dev/null ; then
export MANPAGER="vim +Man!"
elif which vi >/dev/null ; then
export MANPAGER="vi +Man!"
fi
########################################################################################################################
# DEBIAN
#
# see https://www.debian.org/doc/manuals/maint-guide/first.en.html#dh-make
########################################################################################################################
export DEBEMAIL="{{ (bitwardenFields "item" "40322edd-657a-49f2-b509-adbb0135e41d").email.value }}"
export DEBFULLNAME="{{ (bitwardenFields "item" "40322edd-657a-49f2-b509-adbb0135e41d").firstName.value }} {{(bitwardenFields "item" "40322edd-657a-49f2-b509-adbb0135e41d").lastName.value }}"
########################################################################################################################
# HISTORY
########################################################################################################################
# Don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth:erasedups
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
########################################################################################################################
# Bash-it
########################################################################################################################
# Path to the bash it configuration
export BASH_IT="${HOME}/.bash_it"
# Lock and Load a custom theme file.
# Leave empty to disable theming.
# location /.bash_it/themes/
#
# see https://github.com/Bash-it/bash-it/wiki/Themes
# - bakke
# - bobby
# - brunton
# - candy
# - clean
# - demula
# - dos
# - doubletime
# - doubletime_multiline
# - doubletime_multiline_pyonly
# - dulcie
# - duru
# - elixr
# - emperor
# - envy
# - essential
# - font
# - gallifrey
# - githelpers.theme.bash
# - gitline
# - hawaii50
# - iterate
# - kitsune
# - liquidprompt
# - luan
# - mairan
# - mbriggs
# - metal
# - minimal
# - modern
# - modern-t
# - modern-time
# - morris
# - n0qorg
# - newin
# - norbu
# - nwinkler
# - nwinkler_random_colors
# - p4helpers.theme.bash
# - parrot
# - pete
# - powerline
# - powerline-multiline
# - powerline-naked
# - powerline-plain
# - powerturk
# - primer
# - pro
# - pure
# - purity
# - rainbowbrite
# - ramses
# - rana
# - redline
# - rjorgenson
# - roderik
# - sexy
# - simple
# - sirup
# - slick
# - standard
# - tonka
# - tonotdo
# - tylenol
# - wanelo
# - zitron
# - zork
export BASH_IT_THEME="${HOME}/bash_it.theme.bash"
# (Advanced): Change this to the name of your remote repo if you
# cloned bash-it with a remote other than origin such as `bash-it`.
# export BASH_IT_REMOTE='bash-it'
# (Advanced): Change this to the name of the main development branch if
# you renamed it or if it was changed for some reason
# export BASH_IT_DEVELOPMENT_BRANCH='master'
# Your place for hosting Git repos. I use this for private repos.
export GIT_HOSTING='[email protected]'
# Don't check mail when opening terminal.
unset MAILCHECK
# Change this to your console based IRC client of choice.
# TODO: Use weechat instead
export IRC_CLIENT='irssi'
# Set this to the command you use for todo.txt-cli
export TODO="t"
# Set this to false to turn off version control status checking within the prompt for all themes
export SCM_CHECK=true
# Set to actual location of gitstatus directory if installed
#export SCM_GIT_GITSTATUS_DIR="$HOME/gitstatus"
# per default gitstatus uses 2 times as many threads as CPU cores, you can change this here if you must
#export GITSTATUS_NUM_THREADS=8
# Set Xterm/screen/Tmux title with only a short hostname.
# Uncomment this (or set SHORT_HOSTNAME to something else),
# Will otherwise fall back on $HOSTNAME.
#export SHORT_HOSTNAME=$(hostname -s)
# Set Xterm/screen/Tmux title with only a short username.
# Uncomment this (or set SHORT_USER to something else),
# Will otherwise fall back on $USER.
#export SHORT_USER=${USER:0:8}
# If your theme use command duration, uncomment this to
# enable display of last command duration.
#export BASH_IT_COMMAND_DURATION=true
# You can choose the minimum time in seconds before
# command duration is displayed.
#export COMMAND_DURATION_MIN_SECONDS=1
# Set Xterm/screen/Tmux title with shortened command and directory.
# Uncomment this to set.
#export SHORT_TERM_LINE=true
# Set vcprompt executable path for scm advance info in prompt (demula theme)
# https://github.com/djl/vcprompt
#export VCPROMPT_EXECUTABLE=~/.vcprompt/bin/vcprompt
# (Advanced): Uncomment this to make Bash-it reload itself automatically
# after enabling or disabling aliases, plugins, and completions.
# export BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE=1
# Uncomment this to make Bash-it create alias reload.
# export BASH_IT_RELOAD_LEGACY=1
# Load Bash It
source "${BASH_IT}/bash_it.sh"
########################################################################################################################
# Aliases
########################################################################################################################
# WARNING: This must be placed after sourcing bash-it to work!
#
# You may want to put all your additions into a separate file like ~/.bash_aliases, instead of adding them here
# directly. See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. "${HOME}/.bash_aliases"
fi
# Specific computer aliases
if [ -f /home/vagrant/workspace/baptiste.gaillard/.bash_aliases ] ; then
. /home/vagrant/workspace/baptiste.gaillard/.bash_aliases
fi
########################################################################################################################
# Google Cloud
########################################################################################################################
if [ -d "${HOME}/google-cloud-sdk" ] ; then
# The next line updates PATH for the Google Cloud SDK.
if [ -f "${HOME}/google-cloud-sdk/path.bash.inc" ]; then . "${HOME}/google-cloud-sdk/path.bash.inc"; fi
# The next line enables shell command completion for gcloud.
if [ -f "${HOME}/google-cloud-sdk/completion.bash.inc" ]; then . "${HOME}/google-cloud-sdk/completion.bash.inc"; fi
fi
{{ if eq .chezmoi.username "baptiste" -}}
########################################################################################################################
# Dropbox
########################################################################################################################
# The 'dropbox' script is created by fresh install in '~/.local/bin"
if ! pgrep dropbox >/dev/null ; then
if [ ! -d ~/.dropbox-dist ] ; then
echo "Dropbox install not found!"
echo "see https://www.dropbox.com/install-linux"
# TODO: Find a clean way to notify and log
# see https://wiki.archlinux.org/title/Desktop_notifications
else
~/.dropbox-dist/dropboxd > /tmp/dropboxd.log 2>&1 &
fi
fi
{{- end }}
########################################################################################################################
# fzf
########################################################################################################################
[ -f ~/.fzf.bash ] && source "${HOME}/.fzf.bash"
########################################################################################################################
# zoxide
########################################################################################################################
eval "$(zoxide init bash)"
########################################################################################################################
# Go
########################################################################################################################
if [ -d "/usr/local/go/bin" ] ; then
export PATH=$PATH:/usr/local/go/bin
fi
if [ -d "${HOME}/go/bin" ] ; then
export PATH=$PATH:"${HOME}/go/bin"
fi
########################################################################################################################
# Node
########################################################################################################################
export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin" # Added by n-install (see http://git.io/n-install-repo).
if [ -d "${HOME}/.npm-packages/bin" ] ; then
export PATH=$PATH:$HOME/.npm-packages/bin
fi
########################################################################################################################
# Ruby
########################################################################################################################
export PATH=$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH
########################################################################################################################
# Rust
########################################################################################################################
. "$HOME/.cargo/env"
########################################################################################################################
# Krew
########################################################################################################################
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
########################################################################################################################
# Kubernetes
#
# - kube-ps1.sh is configured in ~/bash_it.theme.bash
########################################################################################################################
if which kubectl >/dev/null ; then
source <(kubectl completion bash)
complete -F __start_kubectl k
fi
if [ -f "${HOME}/scripts/kube-ps1.sh" ] ; then
source "${HOME}/scripts/kube-ps1.sh"
fi
########################################################################################################################
# Terraform
########################################################################################################################
complete -C ~/.local/bin/terraform terraform
########################################################################################################################
# Serverless framework
########################################################################################################################
export PATH="$HOME/.serverless/bin:$PATH"
########################################################################################################################
# Texlive
########################################################################################################################
export PATH="$PATH:/usr/local/texlive/2022/bin/x86_64-linux"
########################################################################################################################
# Airflow
########################################################################################################################
if [ -d "${HOME}/airflow" ] ; then
export AIRFLOW_HOME="$HOME/airflow"
fi
########################################################################################################################
# Utility functions
########################################################################################################################
# Generate a random password
gpw() {
openssl rand -base64 48 | cut -c1-"${1}";
}
########################################################################################################################
# Various tricks
########################################################################################################################
# Allow Ctrl+Z to work for 'bg' too.
#
# see https://serverfault.com/questions/283678/whats-the-short-cut-for-fg-in-linux#answer-705440
stty susp undef
bind '"\C-z":"fg\015"'
########################################################################################################################
# Specific computer bashrc files
########################################################################################################################
if [ -f /home/vagrant/workspace/baptiste.gaillard/.bashrc ] ; then
. /home/vagrant/workspace/baptiste.gaillard/.bashrc
fi
########################################################################################################################
# Terminal Multiplexer
########################################################################################################################
{{ if eq .chezmoi.username "vagrant" -}}
if ~/.cargo/bin/zellij list-sessions -n | grep "(current)" >/dev/null 2>&1 ; then
true # Open shell inside Zellij so do nothing
elif ~/.cargo/bin/zellij list-sessions -n | grep -E "^d " >/dev/null 2>&1 ; then
~/.cargo/bin/zellij attach d
else
~/.cargo/bin/zellij --layout dcp --session d
fi
{{- else }}
if [[ -z "$ZELLIJ" ]]; then
# @see https://zellij.dev/documentation/integration
ZELLIJ_AUTO_ATTACH=true
ZELLIJ_AUTO_EXIT=true
if [[ "$ZELLIJ_AUTO_ATTACH" == "true" ]]; then
if ! zellij list-sessions -n >> /dev/null; then
zellij --new-session-with-layout baptiste --session d
elif zellij list-sessions -n | grep -E "^d "; then
zellij attach d
else
zellij --new-session-with-layout baptiste --session d
fi
else
zellij --layout baptiste --session d
fi
if [[ "$ZELLIJ_AUTO_EXIT" == "true" ]]; then
exit
fi
fi
{{- end }}