mirror of
https://github.com/kp2pml30/dotfiles.git
synced 2026-04-14 14:21:45 +04:00
chore: update
This commit is contained in:
parent
eaccf45596
commit
d3790a167b
27 changed files with 715 additions and 229 deletions
84
scripts/run-claude-vm.sh
Executable file
84
scripts/run-claude-vm.sh
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
#!/usr/bin/env bash
|
||||
set -exuo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
FLAKE_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
VM_DIR="$FLAKE_DIR/.claude-vm"
|
||||
DISK="$VM_DIR/disk.qcow2"
|
||||
DISK_SIZE="20G"
|
||||
RAM="12G"
|
||||
CPUS="8"
|
||||
SSH_PORT="2222"
|
||||
|
||||
mkdir -p "$VM_DIR"
|
||||
|
||||
qemu_base_args=(
|
||||
-machine q35
|
||||
-cpu host
|
||||
-enable-kvm
|
||||
-m "$RAM"
|
||||
-smp "$CPUS"
|
||||
-drive "file=$DISK,format=qcow2,if=virtio"
|
||||
-device virtio-net-pci,netdev=net0
|
||||
-netdev "user,id=net0,hostfwd=tcp::${SSH_PORT}-:22"
|
||||
-nographic
|
||||
-fsdev local,id=fsdev0,path=$VM_DIR/share,security_model=passthrough -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
|
||||
)
|
||||
|
||||
do_install() {
|
||||
echo "=== Building installer ISO... ==="
|
||||
ISO_PATH=$(nix build "${FLAKE_DIR}#nixosConfigurations.claude-vm-installer.config.system.build.isoImage" --no-link --print-out-paths)
|
||||
ISO_FILE=$(find "$ISO_PATH/iso" -name '*.iso' | head -1)
|
||||
|
||||
if [ -z "$ISO_FILE" ]; then
|
||||
echo "Error: ISO not found after build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "ISO: $ISO_FILE"
|
||||
|
||||
# Create fresh disk
|
||||
rm -f "$DISK"
|
||||
qemu-img create -f qcow2 "$DISK" "$DISK_SIZE"
|
||||
|
||||
echo "=== Booting installer (fully automatic)... ==="
|
||||
qemu-system-x86_64 \
|
||||
"${qemu_base_args[@]}" \
|
||||
-cdrom "$ISO_FILE" \
|
||||
-boot d
|
||||
|
||||
echo "=== Installation finished. Run without --install to boot the VM. ==="
|
||||
}
|
||||
|
||||
do_run() {
|
||||
if [ ! -f "$DISK" ]; then
|
||||
echo "No disk image found. Run with --install first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== Booting claude-vm (SSH: localhost:${SSH_PORT}) ==="
|
||||
qemu-system-x86_64 \
|
||||
"${qemu_base_args[@]}"
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
--install)
|
||||
do_install
|
||||
;;
|
||||
--run)
|
||||
do_run
|
||||
;;
|
||||
"")
|
||||
if [ ! -f "$DISK" ]; then
|
||||
do_install
|
||||
fi
|
||||
do_run
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [--install|--run]"
|
||||
echo " --install Build ISO and install to disk"
|
||||
echo " --run Boot installed disk"
|
||||
echo " (none) Install if needed, then run"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue