From: Martin Pitt Date: Sun, 31 Aug 2025 10:49:51 +0000 (+0200) Subject: claude-sysext: Add X-Git-Url: https://piware.de/gitweb/?a=commitdiff_plain;ds=sidebyside;p=bin.git claude-sysext: Add Script to install claude-code (works in toolbox) as a sysext on the host. --- diff --git a/claude-sysext b/claude-sysext new file mode 100755 index 0000000..a408f66 --- /dev/null +++ b/claude-sysext @@ -0,0 +1,52 @@ +#!/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