blob: 6f01ed4c63630a5c7897e961d03dbc6d5c5fea23 (
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
131
132
133
134
135
136
137
138
139
140
|
# Copyright (c) 2018 Egor Tensin <Egor.Tensin@gmail.com>
# This file is part of the "linux-home" project.
# For details, see https://github.com/egor-tensin/linux-home.
# Distributed under the MIT License.
if command -v vim > /dev/null 2>&1; then
export EDITOR=vim
elif command -v nano > /dev/null 2>&1; then
export EDITOR=nano
fi
path_export() {
local path
for path; do
# Don't add paths with colons in them:
case "$path" in
*:*) continue ;;
esac
case "${PATH-}" in
"$path") continue ;;
*":$path") continue ;;
"$path:"*) continue ;;
*":$path:"*) continue ;;
esac
export PATH="$path:${PATH-}"
done
}
path_export "$HOME/.local/bin"
# Ruby-specific stuff
# This is a half-assed way to automatically add your user's gem binary
# directory to $PATH (also setting GEM_HOME).
ruby_setup() {
local user_dir
local bin_dir
command -v ruby > /dev/null 2>&1 \
&& command -v gem > /dev/null 2>&1 \
&& user_dir="$( ruby -e 'puts Gem.user_dir' )" \
&& export GEM_HOME="$user_dir" \
&& bin_dir="$( ruby -e 'puts Gem.bindir' )" \
&& path_export "$bin_dir"
}
# Deprecated in favour of using chruby/RVM/etc. for Ruby management.
#ruby_setup
chruby_setup() {
local install_prefix="$HOME/.local"
local share_dir="$install_prefix/share/chruby"
[ -r "$share_dir/chruby.sh" ] && . "$share_dir/chruby.sh"
[ -r "$share_dir/auto.sh" ] && . "$share_dir/auto.sh"
}
chruby_setup
rbenv_setup() {
local rbenv_init
command -v rbenv > /dev/null && \
rbenv_init="$( rbenv init - )" && \
eval "$rbenv_init"
}
rbenv_setup
# Python-specific stuff
# This is a half-assed way to automatically add your user's pip binary
# directory to $PATH.
python_setup() {
local python
local user_base
for python; do
command -v "$python" > /dev/null 2>&1 \
&& user_base="$( "$python" -m site --user-base )" \
&& path_export "$user_base/bin"
done
}
python_setup python3 python
[ -r "$HOME/.pythonrc" ] && export PYTHONSTARTUP="$HOME/.pythonrc"
pyenv_setup() {
local pyenv_init
command -v pyenv > /dev/null && \
pyenv_init="$( pyenv init - )" && \
eval "$pyenv_init"
}
pyenv_setup
# ssh-agent
kill_ssh_agent() {
[ -n "${SSH_AGENT_PID:+x}" ] && kill "$SSH_AGENT_PID"
}
spawn_ssh_agent() {
local output
[ -z "${SSH_AUTH_SOCK:+x}" ] \
&& command -v ssh-agent > /dev/null 2>&1 \
&& output="$( ssh-agent -s )" \
&& eval "$output" > /dev/null \
&& [ -n "${SSH_AGENT_PID:+x}" ] \
&& trap kill_ssh_agent EXIT
}
# This is a deprecated way to start ssh-agent; now it's managed by systemd (see
# .config/systemd/user/ssh-agent.service for details).
# Before starting ssh-agent like this, make sure to disable system ssh-agent's
# (like those started by Gnome or X11).
# Also, this file needs to be sourced by both your login shell and your display
# manager.
command -v systemctl > /dev/null 2>&1 || spawn_ssh_agent
# Rust-specific stuff:
path_export "$HOME/.cargo/bin"
# fzf
# Search directories and hidden files by default.
export FZF_DEFAULT_COMMAND='find -L . -\( -fstype dev -o -fstype proc -\) -prune -o -print 2> /dev/null'
command -v fd > /dev/null 2>&1 \
&& export FZF_DEFAULT_COMMAND='fd --follow --show-errors --hidden --no-ignore-vcs 2> /dev/null'
# nnn
# -A Don't auto-enter directories.
# -e Open text files in $EDITOR.
# -o Only open on Enter, not on l.
export NNN_OPTS=Aeo
export NNN_PLUG='f:myfzcd'
|