2025-11-04 09:17:18 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
if ! has nix_direnv_version || ! nix_direnv_version 3.1.0; then
|
|
|
|
|
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.1.0/direnvrc" "sha256-yMJ2OVMzrFaDPn7q8nCBZFRYpL/f0RcHzhmw/i6btJM="
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
export DEVENV_IN_DIRENV_SHELL=true
|
|
|
|
|
|
|
|
|
|
# Load .env file if present
|
|
|
|
|
dotenv_if_exists
|
|
|
|
|
|
|
|
|
|
watch_file flake.nix
|
|
|
|
|
watch_file flake.lock
|
|
|
|
|
watch_file .envrc.local
|
|
|
|
|
watch_file backend/shell.nix
|
|
|
|
|
watch_file frontend/shell.nix
|
|
|
|
|
|
|
|
|
|
# Check if .envrc.local exists and contains a shell preference
|
|
|
|
|
if [[ -f .envrc.local ]]; then
|
|
|
|
|
source .envrc.local
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# If no shell is specified, prompt the user interactively
|
|
|
|
|
if [[ -z "$NIX_SHELL_NAME" ]]; then
|
|
|
|
|
echo ""
|
|
|
|
|
echo "🔧 Available development shells:"
|
|
|
|
|
echo " 1) frontend - Nuxt.js/Vue development environment"
|
|
|
|
|
echo " 2) backend - Rust backend development environment"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "💡 Tip: Create a .envrc.local file with 'export NIX_SHELL_NAME=frontend' to skip this prompt"
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
# Read user input
|
|
|
|
|
read -p "Select shell (1 or 2): " choice
|
|
|
|
|
|
|
|
|
|
case $choice in
|
|
|
|
|
1|frontend)
|
|
|
|
|
NIX_SHELL_NAME=frontend
|
|
|
|
|
;;
|
|
|
|
|
2|backend)
|
|
|
|
|
NIX_SHELL_NAME=backend
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "❌ Invalid choice. Please select 1 or 2."
|
|
|
|
|
return 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
echo "✅ Loading ${NIX_SHELL_NAME} environment..."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if ! use flake ".#${NIX_SHELL_NAME}" --no-pure-eval; then
|
|
|
|
|
echo "❌ devenv could not be built. The devenv environment was not loaded. Make the necessary changes to flake.nix and hit enter to try again." >&2
|
|
|
|
|
fi
|