From 3f88f69222ed0e656953abe9052add768a4c46d4 Mon Sep 17 00:00:00 2001 From: Michael Czechowski Date: Sun, 17 Aug 2025 02:17:19 +0200 Subject: [PATCH] (abra install initiated, fails on missing wget) --- common.nix | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/common.nix b/common.nix index d702ec2..10b0e6c 100644 --- a/common.nix +++ b/common.nix @@ -148,10 +148,11 @@ isoConfig // { ]; # Workshop Setup Service - REFACTORED - systemd.services.workshop-abra-setup = { + systemd.services.workshop-abra-setup = { wantedBy = [ "multi-user.target" ]; after = [ "network-online.target" "docker.service" "dnsmasq.service" ]; wants = [ "network-online.target" ]; + path = with pkgs; [ bash curl dnsutils docker gnugrep shadow coreutils ]; script = '' # Wait for network and services echo "Waiting for services to start..." @@ -162,6 +163,7 @@ isoConfig // { fi sleep 2 done + # Test DNS resolution for i in {1..20}; do if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then @@ -171,6 +173,7 @@ isoConfig // { echo "🔄 Waiting for DNS... (attempt $i)" sleep 2 done + # Test Docker for i in {1..10}; do if docker info >/dev/null 2>&1; then @@ -179,11 +182,15 @@ isoConfig // { fi sleep 2 done - # Install abra for workshop user + + # Install abra for workshop user (as root, but install to user home) if [ ! -f /home/workshop/.local/bin/abra ]; then echo "🚀 Installing abra for user workshop..." - sudo -u workshop bash -c "mkdir -p /home/workshop/.local/bin" - sudo -u workshop bash -c "curl -fsSL https://install.abra.coopcloud.tech | bash" + mkdir -p /home/workshop/.local/bin + # Download and install as root, but to user directory + HOME=/home/workshop curl -fsSL https://install.abra.coopcloud.tech | bash + # Fix ownership + chown -R workshop:workshop /home/workshop/.local if [ -f /home/workshop/.local/bin/abra ]; then echo "✅ abra installed successfully." else @@ -192,6 +199,7 @@ isoConfig // { else echo "✅ abra already installed." fi + # Initialize Docker Swarm echo "🔄 Checking Docker Swarm status..." if ! docker info | grep -q "Swarm: active"; then @@ -205,7 +213,8 @@ isoConfig // { else echo "✅ Docker Swarm already active." fi - # Ensure workshop user is in docker group + + # Ensure workshop user is in docker group (we are root, can use usermod directly) echo "🔄 Ensuring workshop user is in docker group..." usermod -aG docker workshop if id -nG workshop | grep -q "docker"; then @@ -213,15 +222,15 @@ isoConfig // { else echo "❌ Failed to add workshop user to docker group." fi - # Set up autocomplete - if command -v abra &> /dev/null; then - sudo -u workshop bash -c "source <(/home/workshop/.local/bin/abra autocomplete bash)" - fi + + # Set up autocomplete (skip this for now since we can't run as user easily) + # The bash init script will handle abra autocomplete on login + # Test final DNS resolution if nslookup test.workshop.local 127.0.0.1; then echo "🎉 All services ready!" else - echo "⚠️ DNS may need manual restart: sudo systemctl restart dnsmasq" + echo "⚠️ DNS may need manual restart: systemctl restart dnsmasq" fi ''; serviceConfig = { @@ -435,11 +444,13 @@ isoConfig // { } abra-status() { - echo "🔍 Workshop setup service status:" - systemctl status workshop-abra-setup --no-pager - echo "" - echo "💡 Commands: which abra | abra --version" + systemctl status workshop-abra-setup } + + abra-logs() { + journalctl -u workshop-abra-setup -f + } + help() { echo "🚀 CODE CRISPIES Workshop Commands:"