2026-08-22 23:42:57 +02:00
|
|
|
{ pkgs ? import <nixpkgs> {} }:
|
|
|
|
|
|
|
|
|
|
pkgs.mkShell {
|
|
|
|
|
buildInputs = with pkgs; [
|
|
|
|
|
# PHP and tools
|
|
|
|
|
php84
|
|
|
|
|
php84Packages.composer
|
2026-08-23 00:01:26 +02:00
|
|
|
|
|
|
|
|
# Node.js and npm
|
|
|
|
|
nodejs_22
|
|
|
|
|
|
2026-08-22 23:42:57 +02:00
|
|
|
# Container tools
|
|
|
|
|
podman
|
|
|
|
|
podman-compose
|
2026-08-23 00:01:26 +02:00
|
|
|
|
|
|
|
|
# Database client (for direct DB access)
|
|
|
|
|
mariadb.client
|
|
|
|
|
|
2026-08-22 23:42:57 +02:00
|
|
|
# Utilities
|
|
|
|
|
git
|
|
|
|
|
curl
|
|
|
|
|
gnumake
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
shellHook = ''
|
|
|
|
|
export PATH="$HOME/.config/composer/vendor/bin:$PATH"
|
2026-08-23 00:01:26 +02:00
|
|
|
|
|
|
|
|
export USER_ID=$(id -u)
|
|
|
|
|
export GROUP_ID=$(id -g)
|
|
|
|
|
export PODMAN_USERNS=keep-id
|
|
|
|
|
|
|
|
|
|
# Compose file location
|
|
|
|
|
COMPOSE_FILE="$PWD/docker/dev/docker-compose.yml"
|
|
|
|
|
|
|
|
|
|
# ===================
|
|
|
|
|
# ALIASES
|
|
|
|
|
# ===================
|
|
|
|
|
alias pc='podman-compose -f $COMPOSE_FILE'
|
|
|
|
|
|
|
|
|
|
# ===================
|
|
|
|
|
# DEV COMMANDS
|
|
|
|
|
# ===================
|
|
|
|
|
dev-up() {
|
|
|
|
|
echo "Starting services..."
|
|
|
|
|
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE up -d "$@"
|
|
|
|
|
echo ""
|
|
|
|
|
podman-compose -f $COMPOSE_FILE ps
|
|
|
|
|
echo ""
|
|
|
|
|
echo "App available at: http://localhost:8001"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-down() {
|
|
|
|
|
if [[ "$1" == "-v" ]]; then
|
|
|
|
|
echo "Stopping services and removing volumes..."
|
|
|
|
|
podman-compose -f $COMPOSE_FILE down -v
|
|
|
|
|
else
|
|
|
|
|
echo "Stopping services..."
|
|
|
|
|
podman-compose -f $COMPOSE_FILE down
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-restart() {
|
|
|
|
|
echo "Restarting services..."
|
|
|
|
|
podman-compose -f $COMPOSE_FILE restart "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-rebuild() {
|
|
|
|
|
echo "Rebuilding services (down -v + up --build)..."
|
|
|
|
|
podman-compose -f $COMPOSE_FILE down -v
|
|
|
|
|
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE up -d --build "$@"
|
|
|
|
|
echo ""
|
|
|
|
|
podman-compose -f $COMPOSE_FILE ps
|
|
|
|
|
echo ""
|
|
|
|
|
echo "App available at: http://localhost:8001"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-logs() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE logs -f app "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-logs-db() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE logs -f db "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-shell() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE exec app sh
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-artisan() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE exec app php artisan "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-composer() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE exec app composer "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-test() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE exec -T app php vendor/bin/phpunit "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dev-db() {
|
|
|
|
|
podman-compose -f $COMPOSE_FILE exec db mariadb \
|
|
|
|
|
-u "''${DB_USERNAME:-anagram}" \
|
|
|
|
|
-p"''${DB_PASSWORD:-anagram}" \
|
|
|
|
|
"''${DB_DATABASE:-anagram_dev}" "$@"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# ===================
|
|
|
|
|
# WELCOME MESSAGE
|
|
|
|
|
# ===================
|
|
|
|
|
echo ""
|
|
|
|
|
echo "╔═══════════════════════════════════════════════════════════╗"
|
|
|
|
|
echo "║ Anagram Finder Web Dev Environment ║"
|
|
|
|
|
echo "╚═══════════════════════════════════════════════════════════╝"
|
|
|
|
|
echo ""
|
|
|
|
|
echo " Podman: $(podman --version | cut -d' ' -f3)"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Commands:"
|
|
|
|
|
echo " dev-up [services] Start all or specific services"
|
|
|
|
|
echo " dev-down [-v] Stop services (-v removes volumes)"
|
|
|
|
|
echo " dev-rebuild Fresh start (down -v + up --build)"
|
|
|
|
|
echo " dev-restart Restart services"
|
|
|
|
|
echo " dev-logs Tail app logs"
|
|
|
|
|
echo " dev-logs-db Tail database logs"
|
|
|
|
|
echo " dev-shell Shell into app container"
|
|
|
|
|
echo " dev-artisan <cmd> Run artisan command"
|
|
|
|
|
echo " dev-composer <cmd> Run composer in container"
|
|
|
|
|
echo " dev-test [path] Run PHPUnit suite"
|
|
|
|
|
echo " dev-db [args] MariaDB client on the dev database"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Services:"
|
|
|
|
|
echo " app Laravel + Vite http://localhost:8001"
|
|
|
|
|
echo " db MariaDB localhost:3308"
|
|
|
|
|
echo ""
|
2026-08-23 00:08:44 +02:00
|
|
|
|
|
|
|
|
# ===================
|
|
|
|
|
# AUTO-START PROMPT
|
|
|
|
|
# ===================
|
|
|
|
|
if [ -f "$COMPOSE_FILE" ] && [ -t 0 ]; then
|
|
|
|
|
read -p "Start development containers? (y/N) " -n 1 -r
|
|
|
|
|
echo
|
|
|
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
|
|
|
dev-up
|
|
|
|
|
fi
|
|
|
|
|
fi
|
2026-08-23 00:01:26 +02:00
|
|
|
'';
|
2026-08-22 23:42:57 +02:00
|
|
|
}
|