/
/
/
1#!/bin/bash
2
3# home_dir=/home/$(who am i | awk '{print $1}')
4home_dir=/home/yannick
5temp_dir=${home_dir}/tmp
6code_dir=${home_dir}/personal/misc_code
7local_bin_dir=${home_dir}/.local/bin
8local_app_dir=${home_dir}/.local/share/applications
9local_icon_dir=${home_dir}/.local/share/icons/hicolor/apps
10local_lib_dir=${home_dir}/.local/lib
11font_dir=${home_dir}/.fonts
12
13
14mkdir -p ${code_dir}
15mkdir -p ${local_bin_dir}
16mkdir -p ${local_app_dir}
17mkdir -p ${local_icon_dir}
18mkdir -p ${local_lib_dir}
19mkdir -p ${temp_dir}
20mkdir -p ${font_dir}
21mkdir -p ${home_dir}/.local/opt/
22
23
24wget -nc -O ${temp_dir}/nerdfont.zip 'https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/FiraCode.zip'
25# wget -nc -O ${temp_dir}/fatpack.deb 'http://archive.ubuntu.com/ubuntu/pool/universe/liba/libapp-fatpacker-perl/libapp-fatpacker-perl_0.010008-1_all.deb'
26
27wget -nc -O ${temp_dir}/nvim-linux64.tar.gz 'https://github.com/neovim/neovim/releases/download/v0.10.2/nvim-linux64.tar.gz'
28tar xzvf ${temp_dir}/nvim-linux64.tar.gz -C ${home_dir}/.local/opt/
29# sudo dpkg -i ${temp_dir}/fatpack.deb
30
31unzip -nq ${temp_dir}/nerdfont.zip -d ${font_dir}
32fc-cache -f -v
33
34git clone --depth=1 -b 0.50.0 https://github.com/junegunn/fzf.git ${code_dir}/fzf
35git clone --depth=1 -b v1.20.0 https://github.com/romkatv/powerlevel10k.git ${code_dir}/powerlevel10k
36git clone --depth=1 https://github.com/xuyuan/fri.git ${code_dir}/fri
37git clone --depth=1 -b v1.4.4 https://github.com/so-fancy/diff-so-fancy.git ${code_dir}/diff-so-fancy
38git clone --depth=1 -b v0.9.4 https://github.com/ajeetdsouza/zoxide.git ${code_dir}/zoxide
39git clone --depth=1 https://github.com/tmux-plugins/tpm ${home_dir}/.tmux/plugins/tpm
40git clone --depth=1 https://github.com/ogham/exa.git ${code_dir}/exa
41git clone --depth=1 https://github.com/sharkdp/bat.git ${code_dir}/bat
42git clone --depth=1 https://github.com/BurntSushi/ripgrep.git ${code_dir}/ripgrep
43git clone --depth=1 https://github.com/sharkdp/fd.git ${code_dir}/fd
44
45if ! command -v cargo >/dev/null 2>&1; then
46 echo "[setup] Installing Rust toolchain (userspace) ..."
47 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
48 # Load cargo for this script run
49 . "${home_dir}/.cargo/env"
50fi
51
52cargo install --locked --root "${home_dir}/.local" eza
53cargo install --locked --root "${home_dir}/.local" bat
54cargo install --locked --root "${home_dir}/.local" ripgrep
55cargo install --locked --root "${home_dir}/.local" fd-find
56
57ln -sf "${local_bin_dir}/eza" "${local_bin_dir}/ls"
58ln -sf "${local_bin_dir}/bat" "${local_bin_dir}/cat"
59ln -sf "${local_bin_dir}/rg" "${local_bin_dir}/grep"
60
61NODE_VERSION="${NODE_VERSION:-v20.17.0}"
62
63arch="$(uname -m)"
64case "$arch" in
65 x86_64) node_arch="x64" ;;
66 aarch64) node_arch="arm64" ;;
67 *)
68 echo "[node] Unsupported architecture: $arch"; exit 1 ;;
69esac
70
71node_base="node-${NODE_VERSION}-linux-${node_arch}"
72node_tar="${node_base}.tar.xz"
73node_url="https://nodejs.org/dist/${NODE_VERSION}/${node_tar}"
74
75if [ ! -x "${home_dir}/.local/opt/${node_base}/bin/node" ]; then
76 echo "[node] downloading ${node_url}"
77 curl -fsSL -o "${temp_dir}/${node_tar}" "${node_url}"
78 echo "[node] installing to ~/.local/opt/${node_base}"
79 tar -xJf "${temp_dir}/${node_tar}" -C "${home_dir}/.local/opt/"
80fi
81
82ln -sf "${home_dir}/.local/opt/${node_base}/bin/node" "${local_bin_dir}/node"
83ln -sf "${home_dir}/.local/opt/${node_base}/bin/npm" "${local_bin_dir}/npm"
84ln -sf "${home_dir}/.local/opt/${node_base}/bin/npx" "${local_bin_dir}/npx"
85
86rm -f ${home_dir}/.claude && ln -s ${code_dir}/dotfiles/.claude ${home_dir}/.claude
87
88npm install -g ${home_dir}/.claude/claude @anthropic-ai/claude
89
90yes | . ${code_dir}/fzf/install
91. ${code_dir}/zoxide/install.sh
92
93rm -f ${local_bin_dir}/fri && ln -s ${code_dir}/fri/fri ${local_bin_dir}/fri
94rm -f ${home_dir}/.dircolors && ln -s ${code_dir}/dotfiles/.dircolors ${home_dir}/.dircolors
95
96cd ${code_dir}/diff-so-fancy/third_party/build_fatpack
97perl build.pl --output ${local_bin_dir}/diff-so-fancy
98cd ${home_dir}
99
100rm -f ${home_dir}/.zshrc && ln -s ${code_dir}/dotfiles/.zshrc ${home_dir}/.zshrc
101rm -f ${home_dir}/.p10k.zsh && ln -s ${code_dir}/dotfiles/.p10k.zsh ${home_dir}/.p10k.zsh
102rm -f ${home_dir}/.aliases && ln -s ${code_dir}/dotfiles/.aliases ${home_dir}/.aliases
103rm -rf ${home_dir}/.config/git && mkdir -p ${home_dir}/.config/git && ln -s ${code_dir}/dotfiles/.config/git/config ${home_dir}/.config/git/config
104rm -rf ${home_dir}/.config/tmux && ln -s ${code_dir}/dotfiles/.config/tmux ${home_dir}/.config/
105rm -rf ${home_dir}/.config/nvim && ln -s ${code_dir}/dotfiles/.config/nvim ${home_dir}/.config/nvim
106
107
108. ${home_dir}/.tmux/plugins/tpm/bin/install_plugins
109
110tmux source-file ${home_dir}/.config/tmux/tmux.conf
111