aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/%HOME%/.profile
blob: f4575c21379dea09a297b5b35d81a6a8ca757b14 (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
# Copyright (c) 2018 Egor Tensin <egor@tensin.name>
# 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"

# -----------------------------------------------------------------------------
# Homebrew
# -----------------------------------------------------------------------------

brew_setup() {
    [ -x /opt/homebrew/bin/brew ] && \
        eval "$( /opt/homebrew/bin/brew shellenv )" && \
        prefix="$( brew --prefix )" && \
        path_export \
            "$prefix/opt/coreutils/libexec/gnubin" \
            "$prefix/opt/findutils/libexec/gnubin" \
            "$prefix/opt/gnu-sed/libexec/gnubin" \
            "$prefix/opt/grep/libexec/gnubin" \
            "$prefix/opt/python/libexec/bin"
}

brew_setup

# -----------------------------------------------------------------------------
# Ruby
# -----------------------------------------------------------------------------

# 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 rbenv for Ruby management.
#ruby_setup

rbenv_setup() {
    local rbenv_init

    command -v rbenv > /dev/null && \
        rbenv_init="$( rbenv init - )" && \
        eval "$rbenv_init"
}

rbenv_setup

# -----------------------------------------------------------------------------
# Python
# -----------------------------------------------------------------------------

# 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

# -----------------------------------------------------------------------------
# Rust
# -----------------------------------------------------------------------------

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'
export NNN_BMS="d:$HOME/Downloads;w:$HOME/workspace/personal"