--- /dev/null
+#!/bin/sh
+set -eux
+SYSEXT_NAME="claude-code"
+SYSEXT_DIR="/var/lib/extensions/${SYSEXT_NAME}"
+
+inst=/tmp/claude-inst
+
+build() {
+ rm -rf "$inst"
+ npm install -g @anthropic-ai/claude-code --prefix "${inst}/usr"
+}
+
+stop() {
+ if [ -d "$SYSEXT_DIR" ]; then
+ rm -rf "$SYSEXT_DIR"
+ systemd-sysext refresh
+ fi
+}
+
+if [ "${1:-}" = root-stop ]; then
+ stop
+ exit 0
+fi
+
+if [ "${1:-}" = install ]; then
+ stop
+ cp -r "$inst" "$SYSEXT_DIR"
+ mkdir -p "${SYSEXT_DIR}/usr/lib/extension-release.d"
+ echo "ID=_any" > "${SYSEXT_DIR}/usr/lib/extension-release.d/extension-release.${SYSEXT_NAME}"
+
+ systemd-sysext refresh
+
+ echo
+ systemd-sysext status --no-pager
+ exit 0
+fi
+
+# build mode
+
+# call ourselves as root with possible toolbox → host escape
+if [ "${1:-}" = "stop" ]; then
+ arg="root-stop"
+else
+ build
+ arg="install"
+fi
+
+if systemd-detect-virt --quiet --container; then
+ flatpak-spawn --host sudo -S "$0" "$arg"
+else
+ sudo "$0" "$arg"
+fi