-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathsetup_ubuntu2204.sh
executable file
·150 lines (124 loc) · 5.31 KB
/
setup_ubuntu2204.sh
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
#!/bin/bash
set -x
USE_CACHE=false
USE_CACHE=true
#######################################################################
# pre install
#######################################################################
sudo apt install -y gcc make g++ tmux bison bash-completion subversion \
tig unzip cmake luarocks
#######################################################################
# install python3
#######################################################################
if [[ ! -d "$HOME/.local/packages/" ]]; then
mkdir -p "$HOME/.local/packages/"
fi
if [[ ! -d "$HOME/.local/tools/" ]]; then
mkdir -p "$HOME/.local/tools/"
fi
CONDA_DIR=$HOME/.local/tools/miniconda
CONDA_NAME=Miniconda.sh
CONDA_LINK="https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh"
echo "Installing Python in user HOME"
echo "Downloading and installing miniconda"
if [[ "$USE_CACHE" = false || ! -f "$HOME/.local/packages/$CONDA_NAME" ]]; then
curl -Lo "$HOME/.local/packages/$CONDA_NAME" $CONDA_LINK
fi
# Install conda silently
if [[ -d $CONDA_DIR ]]; then
rm -rf "$CONDA_DIR"
fi
bash "$HOME/.local/packages/$CONDA_NAME" -b -p "$CONDA_DIR"
# Setting up environment variables
sed -i "\:"$CONDA_DIR/bin":d" "$HOME/.bashrc"
echo "export PATH=\"$CONDA_DIR/bin:\$PATH\"" >> "$HOME/.bashrc"
echo "Installing Python packages"
declare -a py_packages=("pynvim" 'python-lsp-server[all]' "black" "vim-vint" "pyls-isort" "pylsp-mypy" "requests")
for p in "${py_packages[@]}"; do
"$CONDA_DIR/bin/pip" install "$p"
done
#######################################################################
# Ripgrep part
#######################################################################
RIPGREP_DIR=$HOME/.local/tools/ripgrep
RIPGREP_SRC_NAME=$HOME/.local/packages/ripgrep.tar.gz
RIPGREP_LINK="https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep-13.0.0-x86_64-unknown-linux-musl.tar.gz"
if [[ -z "$(command -v rg)" ]] && [[ ! -f "$RIPGREP_DIR/rg" ]]; then
echo "Install ripgrep"
if [[ "$USE_CACHE" = false || ! -f $RIPGREP_SRC_NAME ]]; then
echo "Downloading ripgrep and renaming"
wget $RIPGREP_LINK -O "$RIPGREP_SRC_NAME"
fi
if [[ ! -d "$RIPGREP_DIR" ]]; then
echo "Creating ripgrep directory under tools directory"
mkdir -p "$RIPGREP_DIR"
echo "Extracting to $HOME/.local/tools/ripgrep directory"
tar zxvf "$RIPGREP_SRC_NAME" -C "$RIPGREP_DIR" --strip-components 1
fi
sed -i "\:"$RIPGREP_DIR":d" "$HOME/.bashrc"
echo "export PATH=\"$RIPGREP_DIR:\$PATH\"" >> "$HOME/.bashrc"
else
echo "ripgrep is already installed. Skip installing it."
fi
#######################################################################
# Ctags install
#######################################################################
CTAGS_SRC_DIR=$HOME/.local/packages/ctags
CTAGS_DIR=$HOME/.local/tools/ctags
CTAGS_LINK="https://github.com/universal-ctags/ctags.git"
if [[ "$USE_CACHE" = false || ! -f "$CTAGS_DIR/bin/ctags" ]]; then
echo "Install ctags"
if [[ ! -d $CTAGS_SRC_DIR ]]; then
mkdir -p "$CTAGS_SRC_DIR"
else
# Prevent an incomplete download.
rm -rf "$CTAGS_SRC_DIR"
fi
git clone --depth=1 "$CTAGS_LINK" "$CTAGS_SRC_DIR" && cd "$CTAGS_SRC_DIR"
./autogen.sh && ./configure --prefix="$CTAGS_DIR"
make -j && make install
sed -i "\:"$CTAGS_DIR/bin":d" "$HOME/.bashrc"
echo "export PATH=\"$CTAGS_DIR/bin:\$PATH\"" >> "$HOME/.bashrc"
else
echo "ctags is already installed. Skip installing it."
fi
#######################################################################
# Nvim install
#######################################################################
NVIM_DIR=$HOME/.local/tools/nvim
NVIM_SRC_NAME=$HOME/.local/packages/nvim-linux64.tar.gz
NVIM_CONFIG_DIR=$HOME/.config/nvim
NVIM_LINK="https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz"
if [[ "$USE_CACHE" = false || ! -f "$NVIM_DIR/bin/nvim" ]]; then
echo "Installing Nvim"
echo "Creating nvim directory under tools directory"
if [[ ! -d "$NVIM_DIR" ]]; then
mkdir -p "$NVIM_DIR"
fi
if [[ "$USE_CACHE" = false || ! -f $NVIM_SRC_NAME ]]; then
echo "Downloading Nvim"
wget "$NVIM_LINK" -O "$NVIM_SRC_NAME"
fi
echo "Extracting neovim"
tar zxvf "$NVIM_SRC_NAME" --strip-components 1 -C "$NVIM_DIR"
sed -i "\:"$NVIM_DIR/bin":d" "$HOME/.bashrc"
echo "export PATH=\"$NVIM_DIR/bin:\$PATH\"" >> "$HOME/.bashrc"
else
echo "Nvim is already installed. Skip installing it."
fi
# install delta
musl=$([[ $(lsb_release -r | cut -f2) == "20.04" ]] && echo "" || echo "-musl") # https://github.com/dandavison/delta/issues/504
arch=$([[ $(uname -m) == "x86_64" ]] && echo "amd64" || echo "armhf")
curl -fsSL https://github.com/dandavison/delta/releases/download/0.14.0/git-delta${musl}_0.14.0_$arch.deb -o /tmp/git-delta_$arch.deb && sudo dpkg -i /tmp/git-delta_$arch.deb
#######################################################################
# setup nvim config
#######################################################################
echo "Setting up config and installing plugins"
if [[ -d "$NVIM_CONFIG_DIR" ]]; then
cd "$NVIM_CONFIG_DIR"
git pull
else
git clone --depth=1 https://github.com/hanxi/nvim-config.git "$NVIM_CONFIG_DIR"
cd "$NVIM_CONFIG_DIR"
fi
echo "Finished installing Nvim and its dependencies!"