#!/usr/bin/env bash
# See https://github.com/cachix/devenv/blob/main/templates/flake-parts/.envrc

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

watch_file flake.nix
watch_file flake.lock

mkdir -p "$PWD/.devenv"
DEVENV_ROOT_FILE="$PWD/.devenv/root"
printf %s "$PWD" >"$DEVENV_ROOT_FILE"
if ! use flake . --override-input devenv-root "file+file://$DEVENV_ROOT_FILE" --accept-flake-config; then
    echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
fi

# Include .env file if it exists locally. Use the .env file to load env vars that you don't want to commit to git
if [ -f .env ]
then
    set -o allexport
    source .env
    set +o allexport
fi
# Add your env vars here
#
# E.g. export AWS_ACCESS_KEY_ID="XXXXX"

# SMTP config for local development.
export SMTP_HOST="127.0.0.1" # On some computers may need `127.0.1.1` instead.
export SMTP_PORT="1025"
export SMTP_ENCRYPTION="Unencrypted"

# GHCi security: prevent "WARNING: . is writable by someone else, IGNORING!"
# which causes .ghci (and applicationGhciConfig) to be skipped, breaking
# the IHP source-path setup (-ibuild, -iConfig, etc.).
chmod go-w .

# IHP_LIB: path to the IHP lib/IHP directory containing applicationGhciConfig.
# Required for manual GHCi invocation (devenv up / RunDevServer sets this
# internally). Derived from the devenv profile's RunDevServer binary.
if [ -f "$PWD/.devenv/profile/bin/RunDevServer" ]; then
    _ihp_base=$(strings "$PWD/.devenv/profile/bin/RunDevServer" 2>/dev/null \
        | grep -m1 'ihp-ide.*data.*/lib$')
    if [ -n "$_ihp_base" ]; then
        export IHP_LIB="$_ihp_base/IHP"
    fi
    unset _ihp_base
fi