{ pkgs ? import {} }: pkgs.mkShell { buildInputs = with pkgs; [ # PHP and tools php83 php83Packages.composer # Node.js and npm nodejs_20 # Container tools podman podman-compose # Database client (optional, for direct DB access) mariadb-client # Utilities git curl gnumake ]; shellHook = '' # Define helper functions rebuild() { echo "🔨 Rebuilding development environment..." podman-compose down -v podman-compose build --no-cache app podman-compose up -d echo "✅ Rebuild complete! Check logs with: podman-compose logs -f app" } rebuild-quick() { echo "⚡ Quick rebuild (keeping volumes)..." podman-compose down podman-compose build app podman-compose up -d echo "✅ Quick rebuild complete!" } logs() { podman-compose logs -f "$@" } shell() { podman-compose exec app sh } artisan() { podman-compose exec app php artisan "$@" } echo "🚀 Dish Planner Development Environment" echo "=======================================" echo "PHP: $(php --version | head -n1)" echo "Node: $(node --version)" echo "Podman: $(podman --version)" echo "Podman-compose: $(podman-compose --version 2>/dev/null || echo 'checking...')" echo "" echo "Quick commands:" echo " rebuild - Full rebuild (removes volumes)" echo " rebuild-quick - Quick rebuild (keeps volumes)" echo " logs [service] - Follow logs (default: all)" echo " shell - Enter app container" echo " artisan [cmd] - Run artisan commands" echo "" echo "Standard commands:" echo " podman-compose up -d - Start containers" echo " podman-compose down - Stop containers" echo " make dev - Start via Makefile" echo "" # Auto-start prompt if [ -f "docker-compose.yml" ]; then read -p "Start development containers? (y/N) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Starting containers..." podman-compose up -d # Wait a moment for containers to start sleep 3 echo "" echo "✅ Services should be available at:" echo " App: http://localhost:8000" echo " Vite: http://localhost:5173" echo " Mailhog: http://localhost:8025" echo " MariaDB: localhost:3306" echo "" echo "Run 'podman-compose logs -f app' to follow logs" fi fi ''; }