163 lines
4.5 KiB
Bash
Executable File
163 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
PROJECT_ROOT=$(dirname "$SCRIPT_DIR")
|
|
|
|
source "$SCRIPT_DIR/roles.sh"
|
|
|
|
common::log_step() {
|
|
local message="$1"
|
|
printf -- '\033[33m %s\n\033[37m' "$message"
|
|
}
|
|
|
|
|
|
common::log_section() {
|
|
local message="$1"
|
|
printf -- "\033[32m %s\n\033[37m" "$message"
|
|
}
|
|
|
|
common::is_debug() {
|
|
[[ "${UPDATE_DEBUG:-0}" == "1" ]]
|
|
}
|
|
|
|
common::debug_skip() {
|
|
local message="$1"
|
|
common::log_step "[debug] ${message} (skipped)"
|
|
}
|
|
|
|
common::sudo_systemctl() {
|
|
if common::is_debug; then
|
|
common::debug_skip "sudo systemctl $*"
|
|
else
|
|
sudo systemctl "$@"
|
|
fi
|
|
}
|
|
|
|
common::user_systemctl() {
|
|
if common::is_debug; then
|
|
common::debug_skip "systemctl --user $*"
|
|
else
|
|
systemctl --user "$@"
|
|
fi
|
|
}
|
|
|
|
common::log_success() {
|
|
local message="$1"
|
|
printf -- '\033[32m %s\n\033[37m' "$message"
|
|
}
|
|
|
|
common::uppercase_hostname() {
|
|
hostname | tr '[:lower:]' '[:upper:]'
|
|
}
|
|
|
|
common::ensure_local_bin() {
|
|
mkdir -p "$HOME/.local/bin"
|
|
}
|
|
|
|
common::ensure_config_dir() {
|
|
mkdir -p "$HOME/.config"
|
|
}
|
|
|
|
common::symlink() {
|
|
local target="$1"
|
|
local link_path="$2"
|
|
ln -sf "$target" "$link_path"
|
|
}
|
|
|
|
common::link_update_shortcut() {
|
|
common::ensure_local_bin
|
|
common::symlink "$PROJECT_ROOT/update_wrapper.sh" "$HOME/.local/bin/update"
|
|
}
|
|
|
|
common::link_start_scripts() {
|
|
common::ensure_local_bin
|
|
common::symlink "$PROJECT_ROOT/start_nvim.sh" "$HOME/.local/bin/start_nvim"
|
|
if [[ -f "$PROJECT_ROOT/start_toolbox.sh" ]]; then
|
|
common::symlink "$PROJECT_ROOT/start_toolbox.sh" "$HOME/.local/bin/start_toolbox"
|
|
fi
|
|
}
|
|
|
|
common::link_shell_profiles() {
|
|
local variant="$1" # arch|ubuntu
|
|
case "$variant" in
|
|
arch)
|
|
common::symlink "$PROJECT_ROOT/bashrc_arch" "$HOME/.bashrc"
|
|
common::symlink "$PROJECT_ROOT/gitconfig" "$HOME/.gitconfig"
|
|
;;
|
|
ubuntu)
|
|
common::symlink "$PROJECT_ROOT/bashrc_ubuntu" "$HOME/.bashrc"
|
|
if [[ "${WSL:-no}" == "yes" ]]; then
|
|
common::symlink "$PROJECT_ROOT/gitconfig.work" "$HOME/.gitconfig"
|
|
else
|
|
common::symlink "$PROJECT_ROOT/gitconfig" "$HOME/.gitconfig"
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
common::link_tmux_conf() {
|
|
common::symlink "$PROJECT_ROOT/tmux.conf" "$HOME/.tmux.conf"
|
|
}
|
|
|
|
common::link_lua_check() {
|
|
common::symlink "$PROJECT_ROOT/luacheckrc" "$HOME/.luacheckrc"
|
|
}
|
|
|
|
common::link_starship_config() {
|
|
mkdir -p "$HOME/.config"
|
|
common::symlink "$PROJECT_ROOT/config/starship.toml" "$HOME/.config/starship.toml"
|
|
}
|
|
|
|
common::link_nvim_config() {
|
|
mkdir -p "$HOME/.config/nvim"
|
|
common::symlink "$PROJECT_ROOT/config/nvim/init.lua" "$HOME/.config/nvim/init.lua"
|
|
}
|
|
|
|
common::link_alacritty_config() {
|
|
mkdir -p "$HOME/.config/alacritty"
|
|
common::symlink "$PROJECT_ROOT/config/alacritty/alacritty.toml" "$HOME/.config/alacritty/alacritty.toml"
|
|
}
|
|
|
|
common::link_lazygit_config() {
|
|
mkdir -p "$HOME/.config/lazygit"
|
|
common::symlink "$PROJECT_ROOT/config/lazygit/config.yml" "$HOME/.config/lazygit/config.yml"
|
|
}
|
|
|
|
common::install_fzf() {
|
|
common::log_step "Installing fzf"
|
|
rm -rf "$HOME/.fzf"
|
|
git clone --depth 1 https://github.com/junegunn/fzf.git "$HOME/.fzf"
|
|
"$HOME/.fzf/install" --all
|
|
if [[ -f "$HOME/.fzf.bash" ]]; then
|
|
# shellcheck disable=SC1090
|
|
source "$HOME/.fzf.bash"
|
|
fi
|
|
}
|
|
|
|
common::install_virtualhere_client() {
|
|
local manage_service="$1" # start|skip
|
|
common::log_step "Installing VirtualHere client"
|
|
cd "$HOME"
|
|
wget https://www.virtualhere.com/sites/default/files/usbclient/scripts/virtualhereclient.service
|
|
wget https://www.virtualhere.com/sites/default/files/usbclient/vhclientx86_64
|
|
wget https://www.virtualhere.com/sites/default/files/usbclient/vhuit64
|
|
chmod +x ./vhclientx86_64
|
|
chmod +x ./vhuit64
|
|
sudo mv ./vhclientx86_64 /usr/sbin
|
|
sudo mv ./vhuit64 /usr/sbin
|
|
echo "$USER ALL=(ALL:ALL) NOPASSWD: /usr/sbin/vhclientx86_64" | sudo tee "/etc/sudoers.d/${USER}+vhclientx86_64"
|
|
echo "$USER ALL=(ALL:ALL) NOPASSWD: /usr/sbin/vhuit64" | sudo tee "/etc/sudoers.d/${USER}+vhuit64"
|
|
sudo mv virtualhereclient.service /etc/systemd/system/virtualhereclient.service
|
|
if [[ "$manage_service" == "start" ]]; then
|
|
common::sudo_systemctl daemon-reload
|
|
common::sudo_systemctl enable virtualhereclient.service
|
|
common::sudo_systemctl start virtualhereclient.service
|
|
fi
|
|
}
|
|
|
|
|
|
common::print_completion() {
|
|
local message="$1"
|
|
common::log_success "${message}"
|
|
}
|