Add shell nix file
This commit is contained in:
commit
ad6e32ff3f
1 changed files with 155 additions and 0 deletions
155
shell.nix
Normal file
155
shell.nix
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
{ pkgs ? import <nixpkgs> {} }:
|
||||
|
||||
pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
# PHP and tools
|
||||
php84
|
||||
php84Packages.composer
|
||||
symfony-cli
|
||||
|
||||
# Node.js and npm (React/Vite SPA)
|
||||
nodejs_22
|
||||
|
||||
# Container tools
|
||||
podman
|
||||
podman-compose
|
||||
|
||||
# Database client (for direct DB access)
|
||||
mariadb.client
|
||||
|
||||
# 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:8100"
|
||||
}
|
||||
|
||||
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)..."
|
||||
podman-compose -f $COMPOSE_FILE down -v
|
||||
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:8100"
|
||||
}
|
||||
|
||||
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-console() {
|
||||
podman-compose -f $COMPOSE_FILE exec app php bin/console "$@"
|
||||
}
|
||||
|
||||
dev-composer() {
|
||||
podman-compose -f $COMPOSE_FILE exec app composer "$@"
|
||||
}
|
||||
|
||||
# ===================
|
||||
# BUILD COMMANDS
|
||||
# ===================
|
||||
base-build() {
|
||||
local image="forge.lvl0.xyz/lvl0/buckets:latest"
|
||||
|
||||
# Check if logged in, prompt if not
|
||||
if ! podman login --get-login forge.lvl0.xyz &>/dev/null; then
|
||||
echo "Not logged in to forge.lvl0.xyz"
|
||||
podman login forge.lvl0.xyz || return 1
|
||||
fi
|
||||
|
||||
echo "Building 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 "Push failed!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Done! Image pushed: $image"
|
||||
}
|
||||
|
||||
# ===================
|
||||
# WELCOME MESSAGE
|
||||
# ===================
|
||||
echo ""
|
||||
echo "================================================="
|
||||
echo " Buckets Dev Environment "
|
||||
echo "================================================="
|
||||
echo ""
|
||||
echo " PHP: $(php --version | head -1 | cut -d' ' -f2)"
|
||||
echo " Symfony: $(symfony version 2>/dev/null | head -1 || echo 'symfony-cli')"
|
||||
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)"
|
||||
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-console <cmd> Run Symfony console command"
|
||||
echo " dev-composer <cmd> Run composer in the container"
|
||||
echo " base-build Build and push image"
|
||||
echo ""
|
||||
echo "Services:"
|
||||
echo " app Symfony + Vite http://localhost:8100"
|
||||
echo " db MariaDB localhost:3307"
|
||||
echo " mailhog Web UI http://localhost:8026"
|
||||
echo ""
|
||||
'';
|
||||
}
|
||||
Loading…
Reference in a new issue