Improve docs and functions.
This commit is contained in:
1 parent
89eac2841a
commit
e225234f68
1 file changed
+45
-8
+45
-8
@@ -1,17 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script is a initialization helper for container
|
||||
# instances on AutoDL based on my flavour. It does:
|
||||
# This script is a initialization helper for container instances
|
||||
# on AutoDL based on my flavour. It does:
|
||||
# - Set up locale to avoid garbled text display.
|
||||
# - Set up APT mirrors to speed up package installaion.
|
||||
# - Install specified packages, then clean up APT caches.
|
||||
# - Set up APT mirrors and install packages, clean cache when done.
|
||||
# - Install `uv`, a powerful replacement for `pip`.
|
||||
# - Clean up bash history.
|
||||
#
|
||||
# Some behavior can be suppressed by set/unset variables in script.
|
||||
#
|
||||
# Also, there are some tips for your customization and simplifying server configuring.
|
||||
# - Add your SSH public keys. (Also can be done in AutoDL portal.)
|
||||
# - Add your custom hook function in this bash, do anything you like.
|
||||
# - Write files to your destination path.
|
||||
# - Install `uv`, a powerful replacement for `pip`
|
||||
#
|
||||
# Usage:
|
||||
# Download the script, then:
|
||||
# 1. Review the custom options below.
|
||||
# 2. Add your function hooks.
|
||||
# 3. Write files to your destinations.
|
||||
# 4. Run the script by `bash autodl-initializer.sh`
|
||||
# 5. Restart/relogin to your shell, and have a rock!
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +39,7 @@ SYSTEM_LOCALE="en_US.UTF-8"
|
||||
# Set the APT mirror URL. Scheme (http/https) is needed.
|
||||
# Example: 'http://mirrors.kernel.org'
|
||||
# Note: AutoDL instances have default fast mirrors.
|
||||
# Disable this function by setting the var to empty.
|
||||
APT_MIRROR=""
|
||||
|
||||
APT_SOURCE_FILE="/etc/apt/sources.list"
|
||||
@@ -35,6 +47,7 @@ APT_SOURCES_LIST_D="/etc/apt/sources.list.d"
|
||||
|
||||
# List of packages to install, with spaces separated names.
|
||||
# Example: "tmux git curl htop"
|
||||
# No package will be installed when this var is empty.
|
||||
PACKAGES_TO_INSTALL="tmux git curl nano htop nvtop"
|
||||
|
||||
# SSH public key for authorization.
|
||||
@@ -42,6 +55,7 @@ PACKAGES_TO_INSTALL="tmux git curl nano htop nvtop"
|
||||
SSH_PUBLIC_KEY=""
|
||||
|
||||
# uv install
|
||||
# uv won't be installed when either of following vars is empty.
|
||||
UV_DOWNLOAD_URL="https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-unknown-linux-gnu.tar.gz"
|
||||
UV_INSTALL_PATH="${HOME}/.local/bin"
|
||||
|
||||
@@ -76,6 +90,10 @@ add_hook_function() {
|
||||
# }
|
||||
# # Add the function to the hook list.
|
||||
# add_hook_function my_custom_setup
|
||||
|
||||
# >>> Example of function hook.
|
||||
# If you don't like this, feel free to delete it.
|
||||
# Prevent conda activate base env automatically.
|
||||
disable_conda_auto_base() {
|
||||
local condarc="${HOME}/.condarc"
|
||||
if ! grep -qF "auto_activate_base" $condarc; then
|
||||
@@ -84,6 +102,7 @@ disable_conda_auto_base() {
|
||||
fi
|
||||
}
|
||||
add_hook_function disable_conda_auto_base
|
||||
# <<< Delete the hook above.
|
||||
|
||||
|
||||
|
||||
@@ -107,18 +126,25 @@ write_file() {
|
||||
cat > "$dest"
|
||||
}
|
||||
|
||||
# Tmux config
|
||||
write_file "${HOME}/.tmux.conf" <<EOF
|
||||
# tmux configuration
|
||||
set -g mouse on
|
||||
set -g default-terminal "screen-256color"
|
||||
EOF
|
||||
|
||||
# uv config
|
||||
write_file "${HOME}/.config/uv/uv.toml" <<EOF
|
||||
[[index]]
|
||||
url = "https://mirrors.bfsu.edu.cn/pypi/web/simple"
|
||||
default = true
|
||||
EOF
|
||||
|
||||
# awesome vimrc from https://github.com/amix/vimrc/blob/master/vimrcs/basic.vim
|
||||
# licensed under MIT and encoded with gzip-base64
|
||||
_vimrc="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 truncated
|
||||
printf "%s" "$_vimrc" | base64 -d | gzip -cd | write_file "${HOME}/.vimrc"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -382,7 +408,7 @@ update_apt_list() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Install packages.
|
||||
# Install APT packages.
|
||||
install_packages() {
|
||||
if [[ -z "$PACKAGES_TO_INSTALL" ]]; then
|
||||
echo ">>> Skipping APT packages installation."
|
||||
@@ -518,6 +544,13 @@ clean_bash_history() {
|
||||
> ~/.bash_history
|
||||
}
|
||||
|
||||
# Show hints after finishing.
|
||||
hint_after_finish() {
|
||||
echo "--- Initialization finished. ---"
|
||||
echo "Restart the shell to let the changes take effect."
|
||||
echo "The simplest way is re-connect the server by SSH."
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -534,17 +567,21 @@ check_root
|
||||
set_locale
|
||||
replace_apt_mirror
|
||||
install_packages
|
||||
clean_apt_cache
|
||||
add_ssh_key
|
||||
|
||||
# Install uv
|
||||
turbo_autodl_network
|
||||
install_uv
|
||||
|
||||
# Execute the functions in the hook list.
|
||||
execute_hooks
|
||||
|
||||
# Clean the bash history as the final step.
|
||||
# Clean the caches as the final step.
|
||||
clean_apt_cache
|
||||
clean_bash_history
|
||||
|
||||
# Hint
|
||||
hint_after_finish
|
||||
|
||||
# Exit with success status.
|
||||
exit 0
|
||||
Reference in new issue
Block a user