145 lines
6.7 KiB
Bash
Executable File
145 lines
6.7 KiB
Bash
Executable File
#!/bin/sh
|
|
# Apply Bananarchy prebuilt binaries, DTBs, panel firmwares, artwork, and Sxmo 240x320 overlay to a target rootfs
|
|
set -eu
|
|
|
|
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
TARGET_ROOTFS="${1:-${ROOTFS_DIR:-$BASE_DIR/rootfs}}"
|
|
DEVICE="${2:-nokia-argon}"
|
|
|
|
if [ ! -d "$TARGET_ROOTFS" ]; then
|
|
echo "Error: Target rootfs directory does not exist: $TARGET_ROOTFS" >&2
|
|
exit 1
|
|
fi
|
|
|
|
case "$DEVICE" in
|
|
nokia-argon|argon)
|
|
DEVICE="nokia-argon"
|
|
DTB_FILE="qcom-msm8905-nokia-argon.dtb"
|
|
;;
|
|
nokia-beatles|beatles)
|
|
DEVICE="nokia-beatles"
|
|
DTB_FILE="qcom-msm8905-nokia-beatles.dtb"
|
|
;;
|
|
nokia-tough|nokia-coconut|tough|coconut)
|
|
DEVICE="nokia-tough"
|
|
DTB_FILE="qcom-msm8905-nokia-coconut.dtb"
|
|
;;
|
|
nokia-sparkler|sparkler)
|
|
DEVICE="nokia-sparkler"
|
|
DTB_FILE="qcom-msm8909-nokia-sparkler.dtb"
|
|
;;
|
|
nokia-leo|leo)
|
|
DEVICE="nokia-sparkler"
|
|
DTB_FILE="qcom-msm8909-nokia-leo.dtb"
|
|
;;
|
|
*)
|
|
echo "Error: Unsupported device '$DEVICE'." >&2
|
|
echo "Supported devices: nokia-argon, nokia-beatles, nokia-tough, nokia-sparkler, nokia-leo" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "[1/4] Installing Bananarchy rootfs overlay (artwork, branding, Sxmo 240x320, UCM, udev)..."
|
|
rm -f "$TARGET_ROOTFS/usr/bin/bantam" "$TARGET_ROOTFS/usr/local/bin/bantam" "$TARGET_ROOTFS/etc/doas.d/wheel.conf"
|
|
cp -af "$BASE_DIR/overlay/rootfs/." "$TARGET_ROOTFS/"
|
|
if [ -x "$BASE_DIR/scripts/version.sh" ]; then
|
|
"$BASE_DIR/scripts/version.sh" "$TARGET_ROOTFS"
|
|
fi
|
|
chown -R 10000:10000 "$TARGET_ROOTFS/home/user" 2>/dev/null || true
|
|
chown 0:0 "$TARGET_ROOTFS/etc/doas.d/50-sxmo.conf" 2>/dev/null || true
|
|
chmod 640 "$TARGET_ROOTFS/etc/doas.d/50-sxmo.conf" 2>/dev/null || true
|
|
chown 0:0 "$TARGET_ROOTFS/usr/bin/sudo" "$TARGET_ROOTFS/usr/bin/doas" "$TARGET_ROOTFS/bin/su" 2>/dev/null || true
|
|
chmod 4755 "$TARGET_ROOTFS/usr/bin/sudo" "$TARGET_ROOTFS/usr/bin/doas" "$TARGET_ROOTFS/bin/su" 2>/dev/null || true
|
|
|
|
echo "[2/4] Installing prebuilt QDSP6/Q6Voice kernel modules, torch LED module, camera module, and DTBs..."
|
|
if [ -d "$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/sound/soc/qcom/qdsp6" ]; then
|
|
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/qdsp6/"*.ko* \
|
|
"$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/sound/soc/qcom/qdsp6/"
|
|
fi
|
|
if [ -d "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/leds" ] && \
|
|
[ -d "$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/drivers/leds" ]; then
|
|
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/leds/"*.ko* \
|
|
"$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/drivers/leds/"
|
|
fi
|
|
if [ -d "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/camera" ] && \
|
|
[ -d "$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/drivers" ]; then
|
|
mkdir -p "$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/drivers/media/platform/qcom/camss"
|
|
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/camera/"*.ko* \
|
|
"$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/drivers/media/platform/qcom/camss/"
|
|
fi
|
|
mkdir -p "$TARGET_ROOTFS/boot/dtbs"
|
|
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/dtbs/"*.dtb "$TARGET_ROOTFS/boot/dtbs/"
|
|
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/dtbs/$DTB_FILE" "$TARGET_ROOTFS/boot/$DTB_FILE"
|
|
|
|
echo "[3/4] Installing prebuilt Xlibre, Sxmo X11 (dwm/dmenu/st), fcitx5-t9, and Bantam AI agent..."
|
|
if [ -d "$BASE_DIR/prebuilt/xlibre/usr" ]; then
|
|
cp -af "$BASE_DIR/prebuilt/xlibre/usr/bin/." "$TARGET_ROOTFS/usr/bin/"
|
|
cp -af "$BASE_DIR/prebuilt/xlibre/usr/lib/xorg/." "$TARGET_ROOTFS/usr/lib/xorg/"
|
|
cp -af "$BASE_DIR/prebuilt/xlibre/usr/share/X11/xorg.conf.d/." "$TARGET_ROOTFS/usr/share/X11/xorg.conf.d/"
|
|
fi
|
|
if [ -d "$BASE_DIR/prebuilt/sxmo-x11/usr" ]; then
|
|
cp -af "$BASE_DIR/prebuilt/sxmo-x11/usr/." "$TARGET_ROOTFS/usr/"
|
|
fi
|
|
if [ -d "$BASE_DIR/prebuilt/games/usr" ]; then
|
|
cp -af "$BASE_DIR/prebuilt/games/usr/." "$TARGET_ROOTFS/usr/"
|
|
fi
|
|
cp -af "$BASE_DIR/prebuilt/fcitx5-t9/usr/." "$TARGET_ROOTFS/usr/"
|
|
cp -af "$BASE_DIR/prebuilt/bantam/bantam" "$TARGET_ROOTFS/usr/bin/bantam"
|
|
cp -af "$BASE_DIR/prebuilt/bantam/bantam" "$TARGET_ROOTFS/usr/local/bin/bantam"
|
|
rm -rf \
|
|
"$TARGET_ROOTFS/usr/bin/sxmo_swayinitconf.sh" \
|
|
"$TARGET_ROOTFS/usr/bin/sxmo_swayinit.sh" \
|
|
"$TARGET_ROOTFS/usr/bin/sxmo_riverinit.sh" \
|
|
"$TARGET_ROOTFS/usr/bin/sxmo_riverbar.sh" \
|
|
"$TARGET_ROOTFS/usr/bin/bemenu" \
|
|
"$TARGET_ROOTFS/usr/bin/bemenu-run" \
|
|
"$TARGET_ROOTFS/usr/lib/bemenu" \
|
|
"$TARGET_ROOTFS/usr/share/wayland-sessions" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/sway_template" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wob.ini" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/river" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wofi.config" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wofi.css" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/foot.ini" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/sessions/sxmo_river.desktop" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/services/sxmo_riverbar.service" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/services/sxmo_wob.service" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_record.sh" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_screenshot.sh" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_websearch.sh" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_youtube.sh" \
|
|
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_youtube_audio.sh" \
|
|
"$TARGET_ROOTFS/usr/lib/fcitx5/libwayland.so" \
|
|
"$TARGET_ROOTFS/usr/lib/fcitx5/libwaylandim.so" \
|
|
"$TARGET_ROOTFS/usr/share/fcitx5/addon/wayland.conf" \
|
|
"$TARGET_ROOTFS/usr/share/fcitx5/addon/waylandim.conf" \
|
|
"$TARGET_ROOTFS/usr/bin/vim"* \
|
|
"$TARGET_ROOTFS/usr/share/vim" \
|
|
"$TARGET_ROOTFS/home/user/.config/fcitx5/conf/waylandim.conf" \
|
|
"$TARGET_ROOTFS/etc/skel/.config/fcitx5/conf/waylandim.conf" \
|
|
"$TARGET_ROOTFS/home/user/.config/wob" \
|
|
"$TARGET_ROOTFS/etc/skel/.config/wob" \
|
|
"$TARGET_ROOTFS/home/user/.config/wofi" \
|
|
"$TARGET_ROOTFS/etc/skel/.config/wofi" \
|
|
"$TARGET_ROOTFS/home/user/.config/foot" \
|
|
"$TARGET_ROOTFS/etc/skel/.config/foot" \
|
|
"$TARGET_ROOTFS/home/user/.config/sxmo/sway" \
|
|
"$TARGET_ROOTFS/etc/skel/.config/sxmo/sway" \
|
|
"$TARGET_ROOTFS/home/user/.bantam.cfg" \
|
|
"$TARGET_ROOTFS/etc/skel/.bantam.cfg" \
|
|
"$TARGET_ROOTFS/root/.bantam.cfg" \
|
|
"$TARGET_ROOTFS/usr/share/wallpapers/postmarketos" \
|
|
"$TARGET_ROOTFS/usr/share/wallpapers/postmarketos.jpg" \
|
|
"$TARGET_ROOTFS/usr/share/wallpapers/bananarchy.jpg" \
|
|
"$TARGET_ROOTFS/usr/share/wallpapers/bananarchy-240x240.png" \
|
|
"$TARGET_ROOTFS/usr/share/wallpapers/bananarchy-landscape.png"
|
|
mkdir -p "$TARGET_ROOTFS/var/lib/tinydm"
|
|
ln -sf /usr/share/xsessions/sxmo.desktop "$TARGET_ROOTFS/var/lib/tinydm/default-session.desktop"
|
|
|
|
echo "[4/4] Installing deviceinfo for $DEVICE ($DTB_FILE)..."
|
|
if [ -f "$BASE_DIR/devices/$DEVICE/deviceinfo" ]; then
|
|
cp -a "$BASE_DIR/devices/$DEVICE/deviceinfo" "$TARGET_ROOTFS/etc/deviceinfo"
|
|
fi
|
|
|
|
echo "Bananarchy overlay applied to $TARGET_ROOTFS for device $DEVICE."
|