mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Complete upgrade-to-4 update flow
This commit is contained in:
@@ -515,7 +515,7 @@ install_omarchy_4_packages() {
|
||||
)
|
||||
local base_packages=()
|
||||
|
||||
log "Installing Omarchy 4 packages"
|
||||
log "Upgrading system packages and installing Omarchy 4 packages"
|
||||
(( use_dev_packages )) && log "Using dev packages [omarchy-dev / omarchy-settings-dev]"
|
||||
# --noconfirm answers "no" to conflict-removal prompts. --ask 4 preselects
|
||||
# removing the conflicting package, which is required for legacy packages like
|
||||
@@ -558,6 +558,7 @@ remove_retired_default_packages() {
|
||||
chaotic-keyring
|
||||
chaotic-mirrorlist
|
||||
claude-code
|
||||
dust
|
||||
elephant
|
||||
elephant-all
|
||||
elephant-bluetooth
|
||||
@@ -594,6 +595,7 @@ remove_retired_default_packages() {
|
||||
playerctl
|
||||
polkit-gnome
|
||||
qt5-remoteobjects
|
||||
satty
|
||||
swaybg
|
||||
swayosd
|
||||
walker-bin
|
||||
@@ -1039,6 +1041,99 @@ ensure_sleep_lock_service() {
|
||||
fi
|
||||
}
|
||||
|
||||
run_post_upgrade_migrations() {
|
||||
PATH="$package_path" command -v omarchy-migrate >/dev/null 2>&1 || return 0
|
||||
|
||||
log "Running Omarchy migrations"
|
||||
if ! run_as_user env \
|
||||
HOME="$target_home" \
|
||||
USER="$target_user" \
|
||||
LOGNAME="$target_user" \
|
||||
OMARCHY_PATH=/usr/share/omarchy \
|
||||
PATH="$package_path" \
|
||||
omarchy-migrate; then
|
||||
warn "Could not run Omarchy migrations; the user may be prompted to run them after login."
|
||||
fi
|
||||
}
|
||||
|
||||
run_final_system_package_upgrade() {
|
||||
log "Checking for remaining system package updates"
|
||||
as_root env OMARCHY_UPDATE_PACMAN=1 pacman -Syu --noconfirm --ask 4 \
|
||||
--overwrite '/etc/docker/daemon.json' \
|
||||
--overwrite '/etc/gnupg/dirmngr.conf' \
|
||||
--overwrite '/etc/modprobe.d/omarchy-usb-autosuspend.conf' \
|
||||
--overwrite '/etc/sudoers.d/omarchy-asdcontrol' \
|
||||
--overwrite '/etc/sudoers.d/omarchy-passwd-tries' \
|
||||
--overwrite '/etc/sudoers.d/omarchy-tzupdate' \
|
||||
--overwrite '/etc/sysctl.d/90-omarchy-file-watchers.conf' \
|
||||
--overwrite '/etc/sysctl.d/99-omarchy-sysctl.conf' \
|
||||
--overwrite '/etc/systemd/logind.conf.d/10-ignore-power-button.conf' \
|
||||
--overwrite '/etc/systemd/resolved.conf.d/10-disable-multicast.conf' \
|
||||
--overwrite '/etc/systemd/resolved.conf.d/20-docker-dns.conf' \
|
||||
--overwrite '/etc/systemd/system.conf.d/10-faster-shutdown.conf' \
|
||||
--overwrite '/etc/systemd/system/user@.service.d/10-faster-shutdown.conf' \
|
||||
--overwrite '/etc/systemd/system/docker.service.d/no-block-boot.conf' \
|
||||
--overwrite '/etc/systemd/system/plocate-updatedb.service.d/ac-only.conf' \
|
||||
--overwrite '/usr/lib/systemd/system-sleep/unmount-fuse' \
|
||||
--overwrite '/usr/share/plymouth/themes/omarchy/*'
|
||||
}
|
||||
|
||||
run_post_upgrade_update_steps() {
|
||||
local update_error_file update_output update_status
|
||||
|
||||
update_error_file="$target_home/.local/state/omarchy/updates/error"
|
||||
|
||||
if PATH="$package_path" command -v omarchy-update-aur-pkgs >/dev/null 2>&1; then
|
||||
if ! run_as_user env \
|
||||
HOME="$target_home" \
|
||||
USER="$target_user" \
|
||||
LOGNAME="$target_user" \
|
||||
OMARCHY_PATH=/usr/share/omarchy \
|
||||
PATH="$package_path" \
|
||||
omarchy-update-aur-pkgs; then
|
||||
warn "Could not update AUR packages; the update indicator may still show AUR updates after reboot."
|
||||
fi
|
||||
fi
|
||||
|
||||
if PATH="$package_path" command -v omarchy-update-mise >/dev/null 2>&1; then
|
||||
if ! run_as_user env \
|
||||
HOME="$target_home" \
|
||||
USER="$target_user" \
|
||||
LOGNAME="$target_user" \
|
||||
OMARCHY_PATH=/usr/share/omarchy \
|
||||
PATH="$package_path" \
|
||||
omarchy-update-mise; then
|
||||
warn "Could not update mise tools; running omarchy-update after reboot may still update mise-managed tools."
|
||||
fi
|
||||
fi
|
||||
|
||||
if PATH="$package_path" command -v omarchy-update-available >/dev/null 2>&1; then
|
||||
log "Refreshing update indicator state"
|
||||
update_status=0
|
||||
update_output=$(run_as_user env \
|
||||
HOME="$target_home" \
|
||||
USER="$target_user" \
|
||||
LOGNAME="$target_user" \
|
||||
OMARCHY_PATH=/usr/share/omarchy \
|
||||
PATH="$package_path" \
|
||||
omarchy-update-available 2>&1) || update_status=$?
|
||||
|
||||
if (( update_status == 0 )); then
|
||||
warn "Updates are still available after the upgrade; first-run will still offer to run omarchy-update:"
|
||||
printf '%s\n' "$update_output" >&2
|
||||
elif [[ -s $update_error_file ]]; then
|
||||
warn "Could not confirm update state after upgrade; first-run will still offer to run omarchy-update:"
|
||||
printf '%s\n' "$update_output" >&2
|
||||
else
|
||||
# The live upgrade has already completed the package update. Let first-run
|
||||
# finish session-only setup, but skip its generic fresh-install update
|
||||
# toast when the update checker confirms nothing remains.
|
||||
run_as_user mkdir -p "$target_home/.local/state/omarchy"
|
||||
run_as_user touch "$target_home/.local/state/omarchy/skip-first-run-update-notification"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
enable_system_service() {
|
||||
local unit="$1"
|
||||
@@ -2128,6 +2223,9 @@ apply_user_transition
|
||||
cleanup_retired_services
|
||||
ensure_sleep_lock_service
|
||||
remove_retired_default_packages
|
||||
run_post_upgrade_migrations
|
||||
run_final_system_package_upgrade
|
||||
run_post_upgrade_update_steps
|
||||
refresh_current_theme_after_upgrade
|
||||
# Do not force-reload Hyprland in the live upgraded session. The legacy
|
||||
# default/hypr and theme hyprland.conf shims above exist specifically so the
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
state_dir="$HOME/.local/state/omarchy"
|
||||
skip_update_notification_file="$state_dir/skip-first-run-update-notification"
|
||||
skip_update_notification=0
|
||||
if [[ -f $skip_update_notification_file ]]; then
|
||||
skip_update_notification=1
|
||||
rm -f "$skip_update_notification_file"
|
||||
fi
|
||||
|
||||
notify_update() {
|
||||
(( skip_update_notification )) && return 0
|
||||
|
||||
(
|
||||
if [[ -n $(omarchy-notification-send -u critical -g "Update System" "$1" -a) ]]; then
|
||||
omarchy-launch-floating-terminal-with-presentation omarchy-update
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||
|
||||
upgrade_to_4="$ROOT/bin/omarchy-upgrade-to-4"
|
||||
first_run_wifi="$ROOT/install/user/first-run/wifi.sh"
|
||||
|
||||
grep -F 'pacman -Syu --needed' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'omarchy-update-aur-pkgs' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'omarchy-update-available' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'omarchy-update-mise' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'run_final_system_package_upgrade' "$upgrade_to_4" >/dev/null
|
||||
pass "Omarchy 4 upgrade completes package update checks"
|
||||
|
||||
grep -F 'run_post_upgrade_migrations' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'omarchy-migrate' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'dust' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'satty' "$upgrade_to_4" >/dev/null
|
||||
pass "Omarchy 4 upgrade applies packaged migrations"
|
||||
|
||||
grep -F 'skip-first-run-update-notification' "$upgrade_to_4" >/dev/null
|
||||
grep -F 'skip-first-run-update-notification' "$first_run_wifi" >/dev/null
|
||||
grep -F '(( skip_update_notification )) && return 0' "$first_run_wifi" >/dev/null
|
||||
pass "Omarchy 4 upgrade suppresses the fresh-install update toast"
|
||||
Reference in New Issue
Block a user