#!/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. # uuid=${UUID:-$(cat /proc/sys/kernel/random/uuid)} dir=$(dirname "$0") utils="${dir}/_utils.sh" config="${dir}/install_config.json" install_dir="${dir}/install.d" log_dir="${dir}/logs" # Create log directory if it doesn't exist # and the log path hasn't been overridden if [[ -z "$LOG_TARGET" ]]; then mkdir -p "$log_dir" fi log_target=${LOG_TARGET:-"${log_dir}/${uuid}.log"} install() { echo "Running \"$(basename "$0")\" at \"$(date)\"" echo "Running as \"$(whoami)\" on \"$(hostname)\"" # 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"