fix: resolve systemd service pathing and environment issues in common.nix

This commit is contained in:
2025-08-17 01:22:48 +02:00
parent 7dca96ee90
commit 6b9e4de07d

View File

@@ -167,44 +167,41 @@ isoConfig // {
wants = [ "network-online.target" ]; wants = [ "network-online.target" ];
script = '' script = ''
export HOME=/home/workshop export HOME=/home/workshop
export PATH="/run/current-system/sw/bin:/usr/bin:/bin"
# Wait for network and services with better testing # Wait for network and services with better testing
echo "Waiting for services to start..." echo "Waiting for services to start..."
for i in {1..30}; do for i in {1..30}; do
# Test external connectivity # Test external connectivity
if ${pkgs.curl}/bin/curl -s --max-time 3 google.com >/dev/null 2>&1; then if /run/current-system/sw/bin/curl -s --max-time 3 google.com >/dev/null 2>&1; then
echo " External network ready" echo " External network ready"
break break
fi fi
sleep 2 sleep 2
done done
# Test DNS resolution specifically # Test DNS resolution specifically
for i in {1..20}; do for i in {1..20}; do
if ${pkgs.dnsutils}/bin/nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then if /run/current-system/sw/bin/nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then
echo " Wildcard DNS ready" echo " Wildcard DNS ready"
break break
fi fi
echo "🔄 Waiting for DNS... (attempt $i)" echo "🔄 Waiting for DNS... (attempt $i)"
sleep 2 sleep 2
done done
# Test Docker # Test Docker
for i in {1..10}; do for i in {1..10}; do
if ${pkgs.docker}/bin/docker info >/dev/null 2>&1; then if /run/current-system/sw/bin/docker info >/dev/null 2>&1; then
echo " Docker ready" echo " Docker ready"
break break
fi fi
sleep 2 sleep 2
done done
# Install abra for workshop user # Install abra for workshop user
if [ ! -f /home/workshop/.local/bin/abra ]; then if [ ! -f /home/workshop/.local/bin/abra ]; then
echo "🚀 Installing abra for user workshop..." echo "🚀 Installing abra for user workshop..."
${pkgs.util-linux}/bin/su - workshop -c "mkdir -p /home/workshop/.local/bin" /usr/bin/su - workshop -c "mkdir -p /home/workshop/.local/bin"
# Run installer and log output # Run installer and log output
install_log="/tmp/abra-install.log" install_log="/tmp/abra-install.log"
${pkgs.util-linux}/bin/su - workshop -c "bash -c \"cd /home/workshop && ${pkgs.curl}/bin/curl -fsSL https://install.abra.coopcloud.tech | bash\"" &> "$install_log" /usr/bin/su - workshop -c "bash -c \"cd /home/workshop && /run/current-system/sw/bin/curl -fsSL https://install.abra.coopcloud.tech | bash\"" &> "$install_log"
if [ -f /home/workshop/.local/bin/abra ]; then if [ -f /home/workshop/.local/bin/abra ]; then
echo " abra installed successfully." echo " abra installed successfully."
else else
@@ -213,13 +210,12 @@ isoConfig // {
else else
echo " abra already installed." echo " abra already installed."
fi fi
# Initialize Docker Swarm # Initialize Docker Swarm
echo "🔄 Checking Docker Swarm status..." echo "🔄 Checking Docker Swarm status..."
if ! ${pkgs.docker}/bin/docker info | grep -q "Swarm: active"; then if ! /run/current-system/sw/bin/docker info | grep -q "Swarm: active"; then
echo "🔥 Initializing Docker Swarm..." echo "🔥 Initializing Docker Swarm..."
${pkgs.docker}/bin/docker swarm init --advertise-addr 127.0.0.1 2>/dev/null || true /run/current-system/sw/bin/docker swarm init --advertise-addr 127.0.0.1 2>/dev/null || true
if ${pkgs.docker}/bin/docker info | grep -q "Swarm: active"; then if /run/current-system/sw/bin/docker info | grep -q "Swarm: active"; then
echo " Docker Swarm initialized." echo " Docker Swarm initialized."
else else
echo " Docker Swarm initialization failed." echo " Docker Swarm initialization failed."
@@ -227,28 +223,24 @@ isoConfig // {
else else
echo " Docker Swarm already active." echo " Docker Swarm already active."
fi fi
# Ensure workshop user is in docker group # Ensure workshop user is in docker group
echo "🔄 Ensuring workshop user is in docker group..." echo "🔄 Ensuring workshop user is in docker group..."
${pkgs.shadow}/bin/${pkgs.shadow}/bin/usermod -aG docker workshop /usr/bin/usermod -aG docker workshop
if id -nG workshop | grep -q "docker"; then if id -nG workshop | grep -q "docker"; then
echo " workshop user is in docker group." echo " workshop user is in docker group."
else else
echo " Failed to add workshop user to docker group." echo " Failed to add workshop user to docker group."
fi fi
# Create proper abra server configuration # Create proper abra server configuration
if [ ! -f /home/workshop/.abra/servers/workshop.local.env ]; then if [ ! -f /home/workshop/.abra/servers/workshop.local.env ]; then
${pkgs.util-linux}/bin/su - workshop -c "mkdir -p /home/workshop/.abra/servers/" /usr/bin/su - workshop -c "mkdir -p /home/workshop/.abra/servers/"
fi fi
# Set up autocomplete # Set up autocomplete
if command -v abra &> /dev/null; then if command -v abra &> /dev/null; then
${pkgs.util-linux}/bin/su - workshop -c "source <\(/home/workshop/.local/bin/abra autocomplete bash\)" /usr/bin/su - workshop -c "source <(/home/workshop/.local/bin/abra autocomplete bash)"
fi fi
# Test final DNS resolution # Test final DNS resolution
if ${pkgs.dnsutils}/bin/nslookup test.workshop.local 127.0.0.1; then if /run/current-system/sw/bin/nslookup test.workshop.local 127.0.0.1; then
echo "🎉 All services ready!" echo "🎉 All services ready!"
else else
echo " DNS may need manual restart: sudo systemctl restart dnsmasq" echo " DNS may need manual restart: sudo systemctl restart dnsmasq"
@@ -258,6 +250,10 @@ isoConfig // {
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
User = "root"; User = "root";
Environment = [
"PATH=/run/current-system/sw/bin:/usr/bin:/bin"
];
};
}; };
}; };