diff --git a/packaging/dev-mount.sh b/packaging/dev-mount.sh new file mode 100755 index 00000000..2ce0cb96 --- /dev/null +++ b/packaging/dev-mount.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# dev-mount.sh — one-shot dev-VM setup. Run via: +# curl -fsSL https://raw.githubusercontent.com/28allday/nosignal-shell/nosignal/packaging/dev-mount.sh | sudo sh +# +# Mounts the 9p `nsfork` share (the host's nosignal-shell fork) at /mnt/fork and +# points the running shell at it (~/.config/quickshell/caelestia symlink), so +# host-side QML edits + Ctrl+Super+Alt+R preview the layout live. +set -eu + +modprobe 9pnet_virtio 2>/dev/null || true +mkdir -p /mnt/fork +if ! mountpoint -q /mnt/fork; then + mount -t 9p -o trans=virtio,version=9p2000.L,access=any nsfork /mnt/fork +fi +[ -e /mnt/fork/shell.qml ] || { echo "9p share mounted but shell.qml missing — wrong mount_tag?" >&2; exit 1; } + +# Symlink as the human user (this script runs as root via sudo). +U="${SUDO_USER:-$(logname 2>/dev/null || true)}" +[ -n "$U" ] || U=$(awk -F: '$3>=1000 && $3<60000 && $7 !~ /(nologin|false)$/ {print $1; exit}' /etc/passwd) +H=$(getent passwd "$U" | cut -d: -f6) +install -d -o "$U" -g "$U" "$H/.config/quickshell" +if [ -e "$H/.config/quickshell/caelestia" ] && [ ! -L "$H/.config/quickshell/caelestia" ]; then + mv "$H/.config/quickshell/caelestia" "$H/.config/quickshell/caelestia.bak.$$" +fi +sudo -u "$U" ln -sfn /mnt/fork "$H/.config/quickshell/caelestia" + +echo ":: fork mounted at /mnt/fork" +echo ":: ~$U/.config/quickshell/caelestia -> /mnt/fork (the host fork checkout)" +echo ":: NOW reload the shell to load the fork: Ctrl+Super+Alt+R"