setup is where a user goes to configure something: direct boot, security keys, hibernation. These three are not that. omarchy-apply-system is the ISO's entry point in the target chroot, omarchy-apply-hardware is what it calls for device quirks, and omarchy-apply-lock is called by install/config/lockscreen-pam.sh. apply is the verb they already used to describe themselves, and it carries the contract: declared state under install/ converged onto the machine, idempotent, safe to repeat. The group gets no GROUP_DESCRIPTIONS entry on purpose. That table drives the top-level group list on its own, so an entry would put apply back in front of users even with every command in it hidden, the way provision already stays out. A test covers it. The ISO installs the runtime from the mirror it ships with, so it moves to the new names in lockstep and no compatibility route is needed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
76 lines
1.9 KiB
Bash
Executable File
76 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Apply Omarchy hardware-specific packages and system configuration
|
|
# omarchy:group=apply
|
|
# omarchy:requires-sudo=true
|
|
# omarchy:examples=omarchy apply hardware --install-user dhh
|
|
# omarchy:hidden=true
|
|
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
cat <<USAGE
|
|
Usage: omarchy apply hardware --install-user USER
|
|
omarchy apply hardware --defer-provisioning
|
|
|
|
Runs idempotent hardware detection/setup for the installed machine. This is
|
|
called by omarchy-apply-system during ISO finalization and can be rerun later
|
|
for diagnostics or after hardware/package updates.
|
|
|
|
--defer-provisioning runs without an install user (deferred-provisioning installs create the user at
|
|
first boot); group grants are recorded in /var/lib/omarchy/provisioning/groups.
|
|
USAGE
|
|
}
|
|
|
|
install_user="${OMARCHY_INSTALL_USER:-}"
|
|
defer_provisioning=0
|
|
while (($#)); do
|
|
case "$1" in
|
|
--install-user)
|
|
install_user="${2:-}"
|
|
shift 2
|
|
;;
|
|
--defer-provisioning)
|
|
defer_provisioning=1
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
usage >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if (( EUID != 0 )); then
|
|
echo "Error: omarchy-apply-hardware must run as root" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if (( defer_provisioning )); then
|
|
install_user=""
|
|
else
|
|
if [[ -z $install_user || $install_user == "root" ]]; then
|
|
echo "Error: --install-user must name the target non-root user" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! getent passwd "$install_user" >/dev/null; then
|
|
echo "Error: user '$install_user' does not exist" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
export OMARCHY_INSTALL_USER="$install_user"
|
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
|
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
|
export OMARCHY_INSTALL_LOG_FILE="${OMARCHY_INSTALL_LOG_FILE:-/var/log/omarchy-install.log}"
|
|
export PATH="$OMARCHY_PATH/bin:$PATH"
|
|
|
|
source "$OMARCHY_INSTALL/helpers/logging.sh"
|
|
source "$OMARCHY_INSTALL/hardware/all.sh"
|