Browse Source

ghostty aware

main
pvincent 2 days ago
parent
commit
3def30741b
  1. 28
      tools/miaou-create

28
tools/miaou-create

@ -60,7 +60,7 @@ function parse_options {
} }
function mount_miaou_bash { function mount_miaou_bash {
printenv MIAOU_BASH_DIR > /dev/null || (echo >&2 "Warn: environment variable MIAOU_BASH_DIR is missing!" && return)
printenv MIAOU_BASH_DIR >/dev/null || (echo >&2 "Warn: environment variable MIAOU_BASH_DIR is missing!" && return)
local target="$1" local target="$1"
local optional_project=${2:-} local optional_project=${2:-}
@ -69,8 +69,17 @@ function mount_miaou_bash {
incus $optional_project config device add $target MIAOU-BASH disk source=$MIAOU_BASH_DIR path=/opt/miaou-bash readonly=true | grep -q 'Device MIAOU-BASH added' incus $optional_project config device add $target MIAOU-BASH disk source=$MIAOU_BASH_DIR path=/opt/miaou-bash readonly=true | grep -q 'Device MIAOU-BASH added'
} }
function infocmp_xterm_ghostty {
local target="$1"
local optional_project=${2:-}
[[ -n $optional_project ]] && optional_project="--project $optional_project"
echo "export GHOSTTY infocmp from host to container"
infocmp -x xterm-ghostty | incus exec $optional_project $target -- tic -x - 2>/dev/null
}
function build_sandbox_project { function build_sandbox_project {
if ! incus project show $PROJECT_SANDBOX > /dev/null; then
if ! incus project show $PROJECT_SANDBOX >/dev/null; then
incus project create $PROJECT_SANDBOX incus project create $PROJECT_SANDBOX
incus --project $PROJECT_SANDBOX profile device add default root disk path=/ pool=default incus --project $PROJECT_SANDBOX profile device add default root disk path=/ pool=default
incus --project $PROJECT_SANDBOX profile device add default eth0 nic name=eth0 network=incusbr0 incus --project $PROJECT_SANDBOX profile device add default eth0 nic name=eth0 network=incusbr0
@ -81,11 +90,11 @@ function refresh_template {
if incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: STOPPED'; then if incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: STOPPED'; then
incus --project "$PROJECT_SANDBOX" start "$TEMPLATE_SANDBOX" incus --project "$PROJECT_SANDBOX" start "$TEMPLATE_SANDBOX"
fi fi
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash << EOF
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash <<EOF
apt-get update apt-get update
apt-get dist-upgrade -y apt-get dist-upgrade -y
apt-get install -y curl apt-get install -y curl
/opt/miaou-bash/install.sh
/opt/miaou-bash/install.sh 2>/dev/null
EOF EOF
incus --project "$PROJECT_SANDBOX" stop "$TEMPLATE_SANDBOX" incus --project "$PROJECT_SANDBOX" stop "$TEMPLATE_SANDBOX"
local image_date=$(incus --project "$PROJECT_SANDBOX" list "$TEMPLATE_SANDBOX" -f compact,noheader -cl) local image_date=$(incus --project "$PROJECT_SANDBOX" list "$TEMPLATE_SANDBOX" -f compact,noheader -cl)
@ -98,12 +107,13 @@ function build_template_from_scratch {
incus --project "$PROJECT_SANDBOX" launch "$MIAOU_IMAGE" "$TEMPLATE_SANDBOX" incus --project "$PROJECT_SANDBOX" launch "$MIAOU_IMAGE" "$TEMPLATE_SANDBOX"
incus --project "$PROJECT_SANDBOX" file delete "$TEMPLATE_SANDBOX"/etc/apt/sources.list incus --project "$PROJECT_SANDBOX" file delete "$TEMPLATE_SANDBOX"/etc/apt/sources.list
incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs /etc/apt/sources.list.d/debian.sources "$TEMPLATE_SANDBOX"/etc/apt/sources.list.d/debian.sources incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs /etc/apt/sources.list.d/debian.sources "$TEMPLATE_SANDBOX"/etc/apt/sources.list.d/debian.sources
cat << EOF | incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs - "$TEMPLATE_SANDBOX"/etc/systemd/resolved.conf.d/10-disable-ipv4-listener.conf
cat <<EOF | incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs - "$TEMPLATE_SANDBOX"/etc/systemd/resolved.conf.d/10-disable-ipv4-listener.conf
[Resolve] [Resolve]
LLMNR=no LLMNR=no
DNSStubListener=no DNSStubListener=no
EOF EOF
mount_miaou_bash "$TEMPLATE_SANDBOX" "$PROJECT_SANDBOX" mount_miaou_bash "$TEMPLATE_SANDBOX" "$PROJECT_SANDBOX"
command -v ghostty >/dev/null && infocmp_xterm_ghostty "$TEMPLATE_SANDBOX" "$PROJECT_SANDBOX"
refresh_template refresh_template
echo "template:"$TEMPLATE_SANDBOX" from project:$PROJECT_SANDBOX built successfully!" echo "template:"$TEMPLATE_SANDBOX" from project:$PROJECT_SANDBOX built successfully!"
} }
@ -136,10 +146,10 @@ function customize_host {
} }
function assert_not_sandboxing { function assert_not_sandboxing {
[[ $(incus project get-current) == "$PROJECT_SANDBOX" ]] \
&& echo ERROR: actual sandboxing project, please switch back to your 'default' project >&2 \
&& exit 30 \
|| true
[[ $(incus project get-current) == "$PROJECT_SANDBOX" ]] &&
echo ERROR: actual sandboxing project, please switch back to your 'default' project >&2 &&
exit 30 ||
true
} }
function create { function create {

Loading…
Cancel
Save