NoSignal-OS/os updates/updates-panel/nosignal-update-check
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00

66 lines
1.8 KiB
Bash
Executable file

#!/bin/sh
# nosignal-update-check — gather update status into a small JSON cache that the
# settings app's Updates page (and anything else) can read instantly.
# Writes: ~/.local/state/nosignal/update-status.json
# Run by nosignal-update-check.timer (and on demand from the Updates page).
set -u
STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/nosignal"
OUT="$STATE_DIR/update-status.json"
NOSIGNAL_REPO="$HOME/.local/share/nosignal"
mkdir -p "$STATE_DIR"
# Official repo updates (checkupdates is safe: uses a temp db copy, no root).
repo=0
if command -v checkupdates >/dev/null 2>&1; then
repo=$(checkupdates 2>/dev/null | grep -c . || true)
fi
# AUR updates.
aur=0
for h in yay paru; do
if command -v "$h" >/dev/null 2>&1; then
aur=$("$h" -Qua 2>/dev/null | grep -c . || true)
break
fi
done
# Flatpak updates (may touch the network; keep it bounded).
flatpak=0
if command -v flatpak >/dev/null 2>&1; then
flatpak=$(timeout 20 flatpak remote-ls --updates 2>/dev/null | grep -c . || true)
fi
# NoSignal layer: migrations present in the on-system repo but not yet applied.
migrations=0
applied="$STATE_DIR/applied"
if [ -d "$NOSIGNAL_REPO/nosignal-update/migrations" ]; then
for m in "$NOSIGNAL_REPO/nosignal-update/migrations"/*.sh; do
[ -e "$m" ] || continue
base=$(basename "$m")
[ -f "$applied" ] && grep -qxF "$base" "$applied" && continue
migrations=$((migrations + 1))
done
fi
# Last full system upgrade, from pacman's log.
last_upgrade=""
if [ -r /var/log/pacman.log ]; then
last_upgrade=$(grep -F 'starting full system upgrade' /var/log/pacman.log \
| tail -1 | sed 's/^\[\([^]]*\)\].*/\1/')
fi
checked=$(date -Is)
cat > "$OUT" <<EOF
{
"checked": "$checked",
"repo": $repo,
"aur": $aur,
"flatpak": $flatpak,
"migrations_pending": $migrations,
"last_upgrade": "$last_upgrade"
}
EOF
cat "$OUT"