168 lines
4.6 KiB
Bash
Executable file
168 lines
4.6 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
|
|
_autoinstall_base () {
|
|
_autoinstall_file "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" \
|
|
"$HOME/.config/vim/autoload/plug.vim" \
|
|
&& [ -x "$(command -v vim)" ] && yes | vim +'PlugInstall --sync' +qa --not-a-term
|
|
|
|
_autoinstall_git "https://github.com/wbthomason/packer.nvim" \
|
|
"$HOME/.local/share/nvim/site/pack/packer/start/packer.nvim" \
|
|
&& [ -x "$(command -v nvim)" ] && nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'
|
|
|
|
[ ! -x "$(command -v starship)" ] \
|
|
&& curl -sS "https://starship.rs/install.sh" | BIN_DIR="$HOME/.local/bin" FORCE=1 sh
|
|
|
|
[ ! -x "$(command -v "git-fire")" ] \
|
|
&& _autoinstall_exe \
|
|
"https://raw.githubusercontent.com/qw3rtman/git-fire/master/git-fire" \
|
|
"$HOME/.local/bin/git-fire"
|
|
|
|
[ ! -x "$(command -v "yadm")" ] \
|
|
&& _autoinstall_exe \
|
|
"https://github.com/TheLocehiliosan/yadm/raw/master/yadm" \
|
|
"$HOME/.local/bin/yadm" \
|
|
|
|
[ ! -x "$(command -v "eza")" ] \
|
|
&& _autoinstall_exe \
|
|
"https://github.com/eza-community/eza/releases/download/v0.17.0/eza_x86_64-unknown-linux-gnu.tar.gz" \
|
|
"$HOME/.local/bin/eza" \
|
|
"tar xzO"
|
|
|
|
return 0
|
|
}
|
|
|
|
_autoinstall_graphical () {
|
|
_autoinstall_file \
|
|
"https://raw.githubusercontent.com/dracula/alacritty/master/dracula.yml" \
|
|
"$HOME/.config/alacritty/dracula.yml"
|
|
|
|
_autoinstall_file \
|
|
"https://raw.githubusercontent.com/dracula/duckduckgo/master/monkeyscript.user.js" \
|
|
"$HOME/.local/share/qutebrowser/greasemonkey/ddg-dracula.user.js"
|
|
|
|
_autoinstall_git \
|
|
"https://github.com/dracula/qutebrowser.git" \
|
|
"$HOME/.config/qutebrowser/dracula"
|
|
|
|
_autoinstall_git \
|
|
"https://github.com/dracula/gtk.git" \
|
|
"$HOME/.themes/Dracula"
|
|
|
|
_autoinstall_archive \
|
|
"https://github.com/dracula/gtk/releases/download/v3.0/Dracula-cursors.tar.xz" \
|
|
"$HOME/.icons/Dracula-cursors.tar.xz"
|
|
|
|
_autoinstall_archive \
|
|
"$(curl -fsSL 'https://data.services.jetbrains.com/products?code=TBA&release.type=release&fields=releases' | jq -r '.[0].releases[0].downloads.linux.link')" \
|
|
"$HOME/.local/bin/jetbrains-toolbox.tar.gz" \
|
|
&& mv -f "$HOME/.local/bin/jetbrains-toolbox-"*"/jetbrains-toolbox" "$HOME/.local/bin/" \
|
|
&& rm -rf "$HOME/.local/bin/jetbrains-toolbox-"*
|
|
|
|
return 0
|
|
}
|
|
|
|
_autoinstall_ssh () {
|
|
_autoinstall_text \
|
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkmWZmum4cVeDy5+9N1HdUzfnjEHSJ900ucD8F0wAy4MV1cdPYnZ4u5PFv5XMfmvA9SJ+VFsr0lhYlr+GQBG9aCCAdMJVVmEz3SccT6dp6ZYywT158RNshzfCe9ylWKK80+W7XnDXhdkec7aK+BQn5wOER3A3mUqRR0JDXWga9jyakH1K6OwXmQOO419bJWs2uCT1ZEgndHxKJEt2pEvoSz7z8p1SS2zyro+R3YtvL9WiDo3+0yPFYficNDr7s39yF5IJE+KTqAlCn5R2+kJ54lRmzB8oNS2jGwK2Q6wtph4AmfnlJTMODG2U2RjUltH2MIDXIYe2epATWL8qhkI4LTr38C7QR3DeJQsel/yTWdYqGakvU6Ge/xkbsaWOrSDTV3bPgKHzlL+dIKaGpV+5usZN4fpOLOb/nmYy3ekLpobzxza7rBRT2CxXS72DoPFaRE1ye7SxhcsLBNwre9YQFE4VvUZwJYkWz2V7eqGrk8VYnmQmT/bnUnMnVwMpeDc7pFKAFndIUxifoOj77c98Tdy3ncdS7SOd7+zRbLG+7k0UU1k89o1+tfREAddUJYR4RvB6g0kCyjpwOf1Pt4zhJR3y/zpsCCc5UnzK9X2kEo/8TSyvTr+GBiFVp5yLYgwCPJSNna33YX7+c3oLRM1QGgtqZk9qnGX9hgP8qpF8Akw== openpgp:0xAB920993" \
|
|
"$HOME/.ssh/authorized_keys"
|
|
|
|
return 0
|
|
}
|
|
|
|
_autoinstall_all () {
|
|
_autoinstall_base
|
|
_autoinstall_graphical
|
|
|
|
return 0
|
|
}
|
|
|
|
# $1: URL
|
|
# $2: path
|
|
_autoinstall_git () {
|
|
if [ ! -d "$2" ]
|
|
then
|
|
echo "Installing repo $1 to $2"
|
|
mkdir -p "$2"
|
|
git clone --depth=1 "$1" "$2" >/dev/null 2>&1
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
# $1: URL
|
|
# $2: path
|
|
# $3: curl pipe
|
|
_autoinstall_file () {
|
|
if [ ! -f "$2" ]
|
|
then
|
|
echo "Installing file $1 to $2"
|
|
file_path=$(dirname "$2")
|
|
mkdir -p "$file_path"
|
|
cd "$file_path" || exit
|
|
curl -fsSL "$1" | eval "${3:-cat}" > "$2"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
# $1: text
|
|
# $2: path
|
|
_autoinstall_text() {
|
|
if [ ! -f "$2" ]
|
|
then
|
|
echo "Installing text to $2"
|
|
file_path=$(dirname "$2")
|
|
mkdir -p "$file_path"
|
|
cd "$file_path" || exit
|
|
echo "$1" > "$2"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
# $1: URL
|
|
# $2: path
|
|
# $3: curl pipe
|
|
_autoinstall_exe () {
|
|
_autoinstall_file "$1" "$2" "$3" && chmod +x "$2"
|
|
}
|
|
|
|
# $1: URL
|
|
# $2: path
|
|
_autoinstall_archive () {
|
|
if [ ! -f "$2" ]
|
|
then
|
|
echo "Installing archive $1 to $2"
|
|
file_path=$(dirname "$2")
|
|
mkdir -p "$file_path"
|
|
cd "$file_path" || exit
|
|
curl -fsSLo "$2" "$1"
|
|
tar xaf "$2"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
# $1: template
|
|
# $2: path
|
|
_autoinstall_env () {
|
|
if [ -x "$(command -v envsubst)" ]
|
|
then
|
|
envsubst < "$1.tpl" > "$1"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
action="${1:-base}"
|
|
case $action in
|
|
all) _autoinstall_all ;;
|
|
base) _autoinstall_base ;;
|
|
ssh) _autoinstall_ssh ;;
|
|
graphical) _autoinstall_graphical ;;
|
|
git) _autoinstall_git "$2" "$3" ;;
|
|
file) _autoinstall_file "$2" "$3" ;;
|
|
archive) _autoinstall_archive "$2" "$3" ;;
|
|
env) _autoinstall_env "$2" ;;
|
|
*) echo "'$action' is not a valid action." ;;
|
|
esac
|