#!/usr/bin/env bash set -euo pipefail use_omarchy_helpers() { export OMARCHY_PATH="/root/omarchy" export OMARCHY_INSTALL="/root/omarchy/install" export OMARCHY_INSTALL_LOG_FILE="/var/log/omarchy-install.log" source /root/omarchy/install/helpers/all.sh } run_configurator() { set_tokyo_night_colors ./configurator export OMARCHY_USER="$(jq -r '.users[0].username' user_credentials.json)" } install_arch() { clear_logo gum style --foreground 3 --padding "1 0 0 $PADDING_LEFT" "Installing..." echo touch /var/log/omarchy-install.log start_log_output install_base_system 2>&1 | sed -u 's/\x1b\[[0-9;]*[a-zA-Z]//g' >>/var/log/omarchy-install.log stop_log_output } install_omarchy() { chroot_bash -lc "sudo pacman -S --noconfirm --needed gum" >/dev/null chroot_bash -lc "source /home/$OMARCHY_USER/.local/share/omarchy/install.sh || bash" } # Set Tokyo Night color scheme for the terminal set_tokyo_night_colors() { if [[ $(tty) == "/dev/tty"* ]]; then # Tokyo Night color palette echo -en "\e]P01a1b26" # black (background) echo -en "\e]P1f7768e" # red echo -en "\e]P29ece6a" # green echo -en "\e]P3e0af68" # yellow echo -en "\e]P47aa2f7" # blue echo -en "\e]P5bb9af7" # magenta echo -en "\e]P67dcfff" # cyan echo -en "\e]P7a9b1d6" # white echo -en "\e]P8414868" # bright black echo -en "\e]P9f7768e" # bright red echo -en "\e]PA9ece6a" # bright green echo -en "\e]PBe0af68" # bright yellow echo -en "\e]PC7aa2f7" # bright blue echo -en "\e]PDbb9af7" # bright magenta echo -en "\e]PE7dcfff" # bright cyan echo -en "\e]PFc0caf5" # bright white (foreground) # Set default foreground and background echo -en "\033[0m" clear fi } install_base_system() { # Initialize and populate the keyring pacman-key --init pacman-key --populate archlinux # Sync the offline database so pacman can find packages pacman -Sy --noconfirm # Ensure that no mounts exist from past install attempts findmnt -R /mnt >/dev/null && umount -R /mnt # Install using files generated by the ./configurator # Skip NTP and WKD sync since we're offline (keyring is pre-populated in ISO) archinstall \ --config user_configuration.json \ --creds user_credentials.json \ --silent \ --skip-ntp \ --skip-wkd # After archinstall sets up the base system but before our installer runs, # we need to ensure the offline pacman.conf is in place cp /etc/pacman.conf /mnt/etc/pacman.conf # Mount the offline mirror so it's accessible in the chroot mkdir -p /mnt/var/cache/omarchy/mirror/offline mount --bind /var/cache/omarchy/mirror/offline /mnt/var/cache/omarchy/mirror/offline # Mount the ruby directory so it's accessible in the chroot mkdir -p /mnt/var/cache/omarchy/ruby mount --bind /var/cache/omarchy/ruby /mnt/var/cache/omarchy/ruby # No need to ask for sudo during the installation (omarchy itself responsible for removing after install) mkdir -p /mnt/etc/sudoers.d cat >/mnt/etc/sudoers.d/99-omarchy-installer </dev/null || true chmod +x /mnt/home/$OMARCHY_USER/.local/share/omarchy/default/waybar/indicators/screen-recording.sh 2>/dev/null || true } chroot_bash() { HOME=/home/$OMARCHY_USER \ arch-chroot -u $OMARCHY_USER /mnt/ \ env OMARCHY_CHROOT_INSTALL=1 \ OMARCHY_USER_NAME="$(