feat: improve abra CLI usage and firefox configuration
This commit is contained in:
48
common.nix
48
common.nix
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user