feat: improve abra CLI usage and firefox configuration

This commit is contained in:
2025-08-19 21:37:22 +02:00
parent 19c18db5f0
commit 6f15eb05c8

View File

@@ -274,7 +274,6 @@ isoConfig // {
curl curl
git git
networkmanager networkmanager
firefox
docker docker
docker-compose docker-compose
bash bash
@@ -431,13 +430,15 @@ isoConfig // {
# Ensure /root/.local/bin is in PATH (safety net) # Ensure /root/.local/bin is in PATH (safety net)
if [[ ":$PATH:" != *":/root/.local/bin:"* ]]; then if [[ ":$PATH:" != *":/root/.local/bin:"* ]]; then
echo " adding abra to PATH"
export PATH="$PATH:/root/.local/bin" export PATH="$PATH:/root/.local/bin"
fi fi
# Check abra installation # Check abra installation
if command -v abra >/dev/null 2>&1; then if sudo abra >/dev/null 2>&1; then
echo " abra ready: $(which abra)" echo " abra ready: $(sudo which abra)"
source <(abra autocomplete bash) 2>/dev/null || true source <(sudo abra autocomplete bash) 2>/dev/null || true
echo " abra autocomplete enabled"
else else
echo " abra not found! Check: systemctl status workshop-abra-install" echo " abra not found! Check: systemctl status workshop-abra-install"
fi fi
@@ -460,10 +461,10 @@ isoConfig // {
;; ;;
esac esac
} }
complete -F _workshop_completion deploy browser connect complete -F _workshop_completion deploy browser connect abra
# Core Workshop Functions # Core Workshop Functions
setup-traefik() { setup() {
echo "🔧 Setting up local Traefik proxy..." echo "🔧 Setting up local Traefik proxy..."
# Test SSH capability (tutorial requirement) # Test SSH capability (tutorial requirement)
@@ -490,21 +491,21 @@ isoConfig // {
fi fi
# Add server # Add server
if ! abra server ls 2>/dev/null | grep -q "workshop.local"; then if ! sudo abra server ls 2>/dev/null | grep -q "workshop.local"; then
echo "🗄 Adding workshop.local server..." echo "🗄 Adding workshop.local server..."
abra server add workshop.local 2>/dev/null || abra server add --local sudo abra server add workshop.local 2>/dev/null || sudo abra server add --local
fi fi
# Create, configure, and deploy Traefik # Create, configure, and deploy Traefik
if ! abra app ls 2>/dev/null | grep -q "traefik"; then if ! abra app ls 2>/dev/null | grep -q "traefik"; then
echo "🚀 Creating Traefik app..." echo "🚀 Creating Traefik app..."
abra app new traefik --domain=traefik.workshop.local sudo abra app new traefik --domain=traefik.workshop.local
echo " Configuring Traefik..." echo " Configuring Traefik..."
abra app config traefik.workshop.local sudo abra app config traefik.workshop.local
echo "📦 Deploying Traefik..." echo "📦 Deploying Traefik..."
abra app deploy traefik.workshop.local sudo abra app deploy traefik.workshop.local
echo " Waiting for Traefik..." echo " Waiting for Traefik..."
for i in {1..30}; do for i in {1..30}; do
@@ -515,7 +516,7 @@ isoConfig // {
sleep 2 sleep 2
done done
echo " Traefik may still be starting. Check: abra app logs traefik.workshop.local" echo " Traefik may still be starting. Check: sudo abra app logs traefik.workshop.local"
else else
echo " Traefik already exists" echo " Traefik already exists"
fi fi
@@ -537,16 +538,16 @@ isoConfig // {
# Ensure Traefik is running # Ensure Traefik is running
if ! curl -s --max-time 3 http://traefik.workshop.local/ping >/dev/null 2>&1; then if ! curl -s --max-time 3 http://traefik.workshop.local/ping >/dev/null 2>&1; then
echo " Traefik not responding. Setting up..." echo " Traefik not responding. Setting up..."
setup-traefik || return 1 setup || return 1
fi fi
# Create and deploy app # Create and deploy app
echo "📦 Creating app: $recipe" echo "📦 Creating app: $recipe"
abra app new "$recipe" --domain="$domain" --server=default 2>/dev/null || \ sudo abra app new "$recipe" --domain="$domain" --server=default 2>/dev/null || \
abra app new "$recipe" --domain="$domain" sudo abra app new "$recipe" --domain="$domain"
echo "🚀 Deploying: $domain" echo "🚀 Deploying: $domain"
abra app deploy "$domain" sudo abra app deploy "$domain"
echo " Waiting for deployment..." echo " Waiting for deployment..."
for i in {1..60}; do for i in {1..60}; do
@@ -558,7 +559,7 @@ isoConfig // {
done done
echo " Deployment may still be starting..." echo " Deployment may still be starting..."
echo "🔍 Debug: abra app ps $domain" echo "🔍 Debug: sudo abra app ps $domain"
} }
connect() { connect() {
@@ -625,11 +626,12 @@ isoConfig // {
echo "🚀 CODE CRISPIES Workshop Commands:" echo "🚀 CODE CRISPIES Workshop Commands:"
echo "" echo ""
echo "🏠 Local Development:" echo "🏠 Local Development:"
echo " setup-traefik - Setup local proxy (REQUIRED FIRST!)" echo " setup - Setup local proxy (REQUIRED FIRST!)"
echo " recipes - Show all available apps" echo " recipes - Show all available apps"
echo " deploy <recipe> - Deploy app locally" echo " deploy <recipe> - Deploy app locally"
echo " browser [recipe] - Launch Firefox [to app]" echo " browser [recipe] - Launch Firefox [to app]"
echo " desktop - Start GUI session" echo " desktop - Start GUI session"
echo " sudo abra - Run abra CLI directly as root"
echo "" echo ""
echo " Cloud Access:" echo " Cloud Access:"
echo " connect <name> - SSH to cloud server" echo " connect <name> - SSH to cloud server"
@@ -641,13 +643,21 @@ isoConfig // {
echo " systemctl status workshop-abra-install - Check abra installation" echo " systemctl status workshop-abra-install - Check abra installation"
echo "" echo ""
echo "📚 Learning Flow:" echo "📚 Learning Flow:"
echo " 1. setup-traefik" echo " 1. setup"
echo " 2. deploy wordpress" echo " 2. deploy wordpress"
echo " 3. browser wordpress" echo " 3. browser wordpress"
echo " 4. connect hopper" echo " 4. connect hopper"
} }
''; '';
programs.firefox = {
enable = true;
preferences = {
"browser.fixup.fallback-to-https" = false;
"browser.urlbar.autoFill" = false;
};
};
# GUI Configuration # GUI Configuration
services.xserver = { services.xserver = {
enable = true; enable = true;