From 023f0acef3fd86b688d2dae42c2cc30bfe378fdd Mon Sep 17 00:00:00 2001 From: Michael Czechowski Date: Tue, 16 Sep 2025 00:10:25 +0200 Subject: [PATCH] fix: add network manager GUI and manual network configuration - Add networkmanagerapplet for GUI network management in GNOME - Add network status checking to bash initialization - Add network_help function for manual configuration guidance - Create comprehensive MANUAL_NETWORK_SETUP.md documentation - Update ISO label to workshop-friendly name - Fix NetworkManager configuration for live ISO This resolves the issue where network manager was not accessible in the live USB boot environment and provides fallback options for manual network configuration when internet is not available. --- common.nix | 114 +++++++++++------ docs/MANUAL_NETWORK_SETUP.md | 233 +++++++++++++++++++++++++++++++++++ 2 files changed, 312 insertions(+), 35 deletions(-) create mode 100644 docs/MANUAL_NETWORK_SETUP.md diff --git a/common.nix b/common.nix index 310f778..5373a81 100644 --- a/common.nix +++ b/common.nix @@ -12,6 +12,8 @@ let isoImage = { makeEfiBootable = true; makeUsbBootable = true; + # Custom boot menu label for workshop + label = "CODECRISPIES_WORKSHOP"; }; }; @@ -234,7 +236,6 @@ isoConfig networking = { networkmanager = { enable = true; - #wifi.enable = true; dns = "none"; # We use dnsmasq ensureProfiles = { environmentFiles = [ "/etc/NetworkManager/workshop-wifi.env" ]; @@ -365,6 +366,7 @@ isoConfig curl git networkmanager + networkmanagerapplet # Network Manager GUI for GNOME docker docker-compose gnome-terminal @@ -566,14 +568,24 @@ isoConfig echo "Mode: Local Development (Offline Co-op Cloud)" echo "" - # DNS Health Check - if command -v nslookup >/dev/null 2>&1; then - if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then - echo "✅ DNS wildcard ready: *.workshop.local → 127.0.0.1" - else - echo "⚠️ DNS not working! Run: sudo systemctl restart dnsmasq" - fi - fi + # Network Health Check + echo "🌐 Network Status:" + if systemctl is-active --quiet NetworkManager; then + echo "✅ NetworkManager running" + nmcli -t -f STATE general | head -1 + else + echo "❌ NetworkManager not running" + echo " Start with: sudo systemctl start NetworkManager" + fi + + # DNS Health Check + if command -v nslookup >/dev/null 2>&1; then + if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then + echo "✅ DNS wildcard ready: *.workshop.local → 127.0.0.1" + else + echo "⚠️ DNS not working! Run: sudo systemctl restart dnsmasq" + fi + fi # Ensure /root/.local/bin is in PATH (safety net) if [[ ":$PATH:" != *":/root/.local/bin:"* ]]; then @@ -1208,32 +1220,64 @@ isoConfig fi } - help() { - echo "🚀 CODE CRISPIES Workshop Commands:" - echo "" - echo "🏠 Local Development:" - echo " setup - Setup local proxy (REQUIRED FIRST!)" - echo " recipes - Show all available apps" - echo " deploy - Deploy app locally" - echo " browser [recipe] - Launch browser [to app]" - echo " desktop - Start GUI session" - echo " sudo abra - Run abra CLI directly as root" - echo "" - echo "☁️ Cloud Access:" - echo " connect - SSH to cloud server" - echo " Available: ${serverList}" - echo "" - echo "🔍 Debug:" - echo " docker service ls - List running services" - echo " systemctl status dnsmasq - Check DNS" - echo " systemctl status workshop-abra-install - Check abra installation" - echo "" - echo "📚 Learning Flow:" - echo " 1. setup" - echo " 2. deploy wordpress" - echo " 3. browser wordpress" - echo " 4. connect hopper" - } + network_help() { + echo "🌐 Network Configuration Help:" + echo "" + echo "🔍 Check Network Status:" + echo " nmcli device status - Show network devices" + echo " nmcli connection show - Show available connections" + echo " nmcli connection up - Connect to network" + echo " systemctl status NetworkManager - Check service status" + echo "" + echo "📡 Manual WiFi Connection:" + echo " nmcli device wifi list - Scan for WiFi networks" + echo " nmcli device wifi connect password " + echo " nmcli connection up " + echo "" + echo "🔧 GUI Network Manager:" + echo " Click network icon in top bar → Settings" + echo " Or run: nm-connection-editor" + echo "" + echo "🌍 Test Internet Connection:" + echo " ping 8.8.8.8 - Test basic connectivity" + echo " curl https://abra.coopcloud.tech - Test HTTPS" + echo "" + echo "📋 Offline Setup (No Internet):" + echo " 1. Configure network manually using above commands" + echo " 2. Run 'setup' to initialize local environment" + echo " 3. Deploy apps locally without external dependencies" + echo " 4. Use 'browser ' to access deployed services" + } + + help() { + echo "🚀 CODE CRISPIES Workshop Commands:" + echo "" + echo "🏠 Local Development:" + echo " setup - Setup local proxy (REQUIRED FIRST!)" + echo " recipes - Show all available apps" + echo " deploy - Deploy app locally" + echo " browser [recipe] - Launch browser [to app]" + echo " desktop - Start GUI session" + echo " sudo abra - Run abra CLI directly as root" + echo "" + echo "🌐 Network:" + echo " network_help - Network configuration guide" + echo "" + echo "☁️ Cloud Access:" + echo " connect - SSH to cloud server" + echo " Available: ${serverList}" + echo "" + echo "🔍 Debug:" + echo " docker service ls - List running services" + echo " systemctl status dnsmasq - Check DNS" + echo " systemctl status workshop-abra-install - Check abra installation" + echo "" + echo "📚 Learning Flow:" + echo " 1. setup" + echo " 2. deploy wordpress" + echo " 3. browser wordpress" + echo " 4. connect hopper" + } ''; programs.firefox = { diff --git a/docs/MANUAL_NETWORK_SETUP.md b/docs/MANUAL_NETWORK_SETUP.md new file mode 100644 index 0000000..4ba9dae --- /dev/null +++ b/docs/MANUAL_NETWORK_SETUP.md @@ -0,0 +1,233 @@ +# Manual Network Configuration for Workshop Environment + +This guide explains how to configure network connectivity manually when the GUI network manager is not available or when setting up the workshop environment offline. + +## Prerequisites + +- Root or sudo access +- Basic command line knowledge +- Network interface name (usually `eth0`, `wlan0`, etc.) + +## Quick Network Diagnosis + +```bash +# Check network interfaces +ip addr show + +# Check NetworkManager status +systemctl status NetworkManager + +# Check current connections +nmcli connection show + +# Check device status +nmcli device status + +# Test internet connectivity +ping -c 3 8.8.8.8 +curl -I https://abra.coopcloud.tech +``` + +## Manual WiFi Connection + +### Method 1: Using nmcli (Command Line) + +```bash +# Scan for WiFi networks +nmcli device wifi list + +# Connect to a WiFi network (replace SSID and PASSWORD) +nmcli device wifi connect "YourWiFiSSID" password "YourWiFiPassword" + +# Connect to hidden network +nmcli device wifi connect "HiddenSSID" password "password" hidden yes + +# Check connection status +nmcli connection show --active +``` + +### Method 2: Using wpa_supplicant (Advanced) + +```bash +# Create wpa_supplicant configuration +sudo tee /etc/wpa_supplicant.conf > /dev/null <