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>
66 lines
3.8 KiB
Bash
Executable file
66 lines
3.8 KiB
Bash
Executable file
#!/bin/sh
|
|
# install-nosignal-update.sh — populate the on-system NoSignal "repo" and expose the
|
|
# `nosignal-update` command. Simulates what the ISO bakes in: it copies the NoSignal
|
|
# component sources + this update system into ~/.local/share/nosignal and symlinks
|
|
# the command onto PATH. Idempotent.
|
|
#
|
|
# (On the real ISO the build process places the same tree at the same path;
|
|
# this script is the equivalent step for a from-Downloads rebuild.)
|
|
set -eu
|
|
|
|
SRC=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) # the Downloads root (parent of nosignal-update/)
|
|
DEST="$HOME/.local/share/nosignal"
|
|
BIN="$HOME/.local/bin"
|
|
|
|
mkdir -p "$DEST" "$BIN"
|
|
|
|
# Component sources the migrations re-apply. Extend this list as changes are added.
|
|
COMPONENTS="install-keybinds-help.sh nosignal-keybinds nosignal-keybinds-gen hyprland-keybinds-help.conf NoSignal-keybindings.md"
|
|
for c in $COMPONENTS; do
|
|
[ -e "$SRC/$c" ] && cp -a "$SRC/$c" "$DEST/"
|
|
done
|
|
[ -d "$SRC/fish-to-bash" ] && cp -a "$SRC/fish-to-bash" "$DEST/"
|
|
[ -d "$SRC/software-install" ] && cp -a "$SRC/software-install" "$DEST/"
|
|
[ -d "$SRC/omarchy-keys" ] && cp -a "$SRC/omarchy-keys" "$DEST/"
|
|
[ -d "$SRC/omadots-extras" ] && cp -a "$SRC/omadots-extras" "$DEST/"
|
|
[ -d "$SRC/monitor-control" ] && cp -a "$SRC/monitor-control" "$DEST/"
|
|
[ -d "$SRC/updates-panel" ] && cp -a "$SRC/updates-panel" "$DEST/"
|
|
[ -d "$SRC/system-polish" ] && cp -a "$SRC/system-polish" "$DEST/"
|
|
[ -d "$SRC/super-clipboard" ] && cp -a "$SRC/super-clipboard" "$DEST/"
|
|
[ -d "$SRC/screenshots" ] && cp -a "$SRC/screenshots" "$DEST/"
|
|
[ -d "$SRC/monitor-control-fix" ] && cp -a "$SRC/monitor-control-fix" "$DEST/"
|
|
[ -d "$SRC/launcher-fix" ] && cp -a "$SRC/launcher-fix" "$DEST/"
|
|
[ -d "$SRC/dashboard-key" ] && cp -a "$SRC/dashboard-key" "$DEST/"
|
|
[ -d "$SRC/gaming-enablement" ] && cp -a "$SRC/gaming-enablement" "$DEST/"
|
|
[ -d "$SRC/display-manager-sddm" ] && cp -a "$SRC/display-manager-sddm" "$DEST/"
|
|
[ -d "$SRC/deckshift-login" ] && cp -a "$SRC/deckshift-login" "$DEST/"
|
|
[ -d "$SRC/sddm-theme" ] && cp -a "$SRC/sddm-theme" "$DEST/"
|
|
[ -d "$SRC/wifi-password-retry" ] && cp -a "$SRC/wifi-password-retry" "$DEST/"
|
|
[ -d "$SRC/monitor-hotload" ] && cp -a "$SRC/monitor-hotload" "$DEST/"
|
|
[ -d "$SRC/update-prompts-fix" ] && cp -a "$SRC/update-prompts-fix" "$DEST/"
|
|
[ -d "$SRC/cheatsheet-tidy" ] && cp -a "$SRC/cheatsheet-tidy" "$DEST/"
|
|
[ -d "$SRC/cliamp-music" ] && cp -a "$SRC/cliamp-music" "$DEST/"
|
|
[ -d "$SRC/additions-installer" ] && cp -a "$SRC/additions-installer" "$DEST/"
|
|
[ -d "$SRC/menu-cleanup" ] && cp -a "$SRC/menu-cleanup" "$DEST/"
|
|
# Display, boot, and theming fixes
|
|
[ -d "$SRC/xdg-terminal-exec-handler" ] && cp -a "$SRC/xdg-terminal-exec-handler" "$DEST/"
|
|
[ -d "$SRC/caelestia-lock-faillock" ] && cp -a "$SRC/caelestia-lock-faillock" "$DEST/"
|
|
[ -d "$SRC/limine-uki-dead-entry" ] && cp -a "$SRC/limine-uki-dead-entry" "$DEST/"
|
|
[ -d "$SRC/kernel-reboot-notify" ] && cp -a "$SRC/kernel-reboot-notify" "$DEST/"
|
|
[ -d "$SRC/app-theme-awareness" ] && cp -a "$SRC/app-theme-awareness" "$DEST/"
|
|
[ -d "$SRC/cheatsheet-keymap-path" ] && cp -a "$SRC/cheatsheet-keymap-path" "$DEST/"
|
|
[ -d "$SRC/additions-extra" ] && cp -a "$SRC/additions-extra" "$DEST/"
|
|
[ -d "$SRC/base-default-packages" ] && cp -a "$SRC/base-default-packages" "$DEST/"
|
|
# Passwordless sudo toggle
|
|
[ -d "$SRC/sudo-timed-nopasswd" ] && cp -a "$SRC/sudo-timed-nopasswd" "$DEST/"
|
|
|
|
# The update system itself.
|
|
cp -a "$SRC/nosignal-update" "$DEST/"
|
|
chmod +x "$DEST/nosignal-update/bin/nosignal-update" "$DEST/nosignal-update/migrations/"*.sh
|
|
|
|
# Expose the command (symlink resolves back to DEST so it finds its migrations).
|
|
ln -sf "$DEST/nosignal-update/bin/nosignal-update" "$BIN/nosignal-update"
|
|
|
|
echo "Installed NoSignal update system -> $DEST"
|
|
echo " nosignal-update # snapshot + package upgrade + layer"
|
|
echo " nosignal-update --no-packages --no-snapshot # apply the NoSignal layer only"
|