Files
dotfiles/script/install
Andrejus Kostarevas 50193eca51 feat: structure work
- split files/ into separate dirs
- rename scripts/ to script/, remove .sh extensions
- remove publish scripts, tf module, use github host
- remove unused install files
2023-02-24 00:34:31 +00:00

73 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
#
# Script that installs system dependencies specified in a config,
# and runs all post-install scripts contained in a subdirectory.
#
TIME=${TIME:-$(date)}
UUID=${UUID:-$(uuidgen)}
HOST=${HOST:-$(hostname)}
NAME=$(basename "$0")
REL_DIR=$(dirname "$0")
ABS_DIR=$(readlink -f $REL_DIR/../) # Scripts are nested inside of /script
UTILS="${REL_DIR}/_utils.sh"
CONFIG="${REL_DIR}/install_config.json"
INSTALL_DIR="${REL_DIR}/install.d"
LOG_DIR="${ABS_DIR}/logs"
mkdir -p "$LOG_DIR"
LOG_TARGET=${LOG_TARGET:-"${LOG_DIR}/${UUID}.log"}
install() {
echo "Running $NAME at $TIME"
echo "Running as $USER on $HOST"
# Prevent running as root
if [[ $EUID -eq 0 ]]; then
echo "Failed: Running as sudo. Please run as user"
exit 1
fi
# Load installer dependencies
source "$UTILS"
update
install jq
for dep in $(jq -r ".apt_core_dependencies[]" "$CONFIG"); do
install "$dep"
done
# Add apt repositories
for i in $(jq ".apt_repositories | keys | .[]" "$CONFIG"); do
value=$(jq -r ".apt_repositories[$i]" "$CONFIG")
add_repository "$value"
done
update
# Install apt dependencies
for dep in $(jq -r ".apt_dependencies[]" "$CONFIG"); do
install "$dep"
done
# Install dotfiles on system and load them
figlet -c "Stowing..."
for i in $(jq ".stow_packages | keys | .[]" "$CONFIG"); do
value=$(jq -r ".stow_packages[$i]" "$CONFIG")
stow_package "$value"
done
source "$HOME/.profile"
# Run custom installer scripts
figlet -c "Installing..."
for script in $INSTALL_DIR/*.sh; do
figlet -c "$(basename $script)"
source $script
done
}
echo "install: Logging to $LOG_TARGET"
install 2>&1 | tee "$LOG_TARGET"