fedi-feed-router/shell.nix

137 lines
3.6 KiB
Nix
Raw Normal View History

2026-01-23 00:08:32 +01:00
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
# PHP and tools
2026-01-23 00:30:05 +01:00
php83
php83Packages.composer
2026-01-23 00:08:32 +01:00
# Node.js and npm
nodejs_22
# Container tools
podman
podman-compose
# Database client (for direct DB access)
mariadb.client
# Redis client
redis
# Utilities
git
curl
gnumake
];
shellHook = ''
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:8000"
}
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-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 "$@"
}
2026-01-23 00:30:05 +01:00
# ===================
# PROD COMMANDS
# ===================
prod-build() {
local tag="''${1:-latest}"
local image="codeberg.org/lvl0/ffr:$tag"
echo "Building production image: $image"
if ! podman build -t "$image" -f Dockerfile .; then
echo "Build failed!"
return 1
fi
echo ""
echo "Pushing to registry..."
if ! podman push "$image"; then
echo ""
echo "Push failed! You may need to login first:"
echo " podman login codeberg.org"
return 1
fi
echo ""
echo "Done! Image pushed: $image"
}
2026-01-23 00:08:32 +01:00
# ===================
# WELCOME MESSAGE
# ===================
echo ""
echo ""
echo " FFR 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-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"
2026-01-23 00:30:05 +01:00
echo " prod-build [tag] Build and push prod image (default: latest)"
2026-01-23 00:08:32 +01:00
echo ""
echo "Services:"
echo " app Laravel + Vite http://localhost:8000"
echo " db MariaDB localhost:3307"
echo " redis Redis localhost:6380"
echo ""
'';
}