#!/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