#!/bin/env fish begin set -l dir (status dirname) source "$dir/../Scripts/config.fish" source "$dir/../Scripts/hooks.fish" set -l name (getConfig valhalla.setupUser.name) set -l mountDir (getConfig valhalla.partition.rootDir) set -l projectRoot (realpath "$dir/../../..") set -l projectName (basename "$projectRoot") set -l PROJECT_CLONE_ROOT "/opt/$(basename "$projectName")" set -l script (mktemp) function getCloneFile -S -a path set -l relativeDir (realpath --relative-to "$projectRoot" "$dir") set -l relativePath (realpath --relative-to "$dir" "$path") echo "$PROJECT_CLONE_ROOT/$relativeDir/$relativePath" end getConfig valhalla.partition.script > "$script" bash "$script" and source "$dir/../../copy-repo.fish" "$mountDir$PROJECT_CLONE_ROOT" and runHook setupOS || true and runHook createUser || \ begin chroot "$mountDir" \ useradd \ --comment "PortValhalla setup user" \ --system \ --no-user-group \ --groups wheel \ --create-home \ --uid (getConfig valhalla.setupUser.id --json) \ "$name" end and chroot "$mountDir" usermod -aG wheel "$name" and begin echo "$name ALL=(ALL:ALL) NOPASSWD: ALL" end | chroot "$mountDir" tee "/etc/sudoers.d/PortValhalla" > /dev/null and runHook autologin || true and begin printf %s\n \ "export CONFIG_MODULE=$(string escape (getCloneFile "$CONFIG_MODULE"))" \ (string escape (getCloneFile (getInstallerScript))) end | chroot "$mountDir" tee /root/.bash_profile > /dev/null and echo "Setup finished!" and echo "Please reboot your machine" end