#!/bin/sh

set -e

if ! whoami &> /dev/null; then
  if [ -w /etc/passwd ]; then
    echo "${USER_NAME:-user}:x:$(id -u):0:${USER_NAME:-user} user:${HOME}:/bin/bash" >> /etc/passwd
    echo "${USER_NAME:-user}:x:$(id -u):" >> /etc/group
  fi
fi

ls -la /neovim/

export MACHINE_EXEC_PORT=3333
nohup /neovim/bin/machine-exec --url "127.0.0.1:${MACHINE_EXEC_PORT}" &

ldd_output=$(ldd /bin/ls 2>/dev/null || true)
case "$ldd_output" in
  *musl*)
    echo "[INFO] musl libc detected, using musl binaries"
    NVIM_DIR=/neovim/neovim-linux-musl
    export LD_LIBRARY_PATH="${NVIM_DIR}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
    ;;
  *)
    echo "[INFO] glibc detected, using libc binaries"
    NVIM_DIR=/neovim/neovim-linux-libc
    ;;
esac

export PATH="${NVIM_DIR}/bin:/neovim/bin:${PATH}"
export TERM=xterm-256color
if [ -d /neovim/lib64-zsh ]; then
  cat > "$HOME/.zshenv" << 'ZSHENV'
module_path=( /neovim/lib64-zsh/5.8 $module_path )
fpath=( /neovim/share-zsh/5.8/functions /neovim/share-zsh/site-functions $fpath )
ZSH_DISABLE_COMPFIX=true
ZSHENV
  echo "[INFO] wrote .zshenv for zsh module paths"
fi

. /neovim/dotfiles-apply.sh
apply_dotfiles || true


if [ -n "$NVIM_DISTRO" ] && [ ! -d "$HOME/.config/nvim" ]; then
  /neovim/bootstrap-distro.sh
fi

if [ -d "$HOME/.config/nvim" ]; then
  echo "[INFO] running headless plugin sync"
  "${NVIM_DIR}/bin/nvim" --headless "+Lazy! sync" +qa 2>&1 || echo "[WARN] plugin sync failed"
  echo "[INFO] plugin sync done"
fi

WORKDIR="${PROJECT_SOURCE:-/projects}"
mkdir -p "$WORKDIR"
cd "$WORKDIR"

TTYD_OPTS="-W -p 7681 -t fontSize=14"
if [ -f /neovim/neovim-index.html ]; then
  TTYD_OPTS="$TTYD_OPTS -I /neovim/neovim-index.html -t fontFamily='JetBrainsMono NF Mono, monospace'"
else
  TTYD_OPTS="$TTYD_OPTS -t fontFamily=monospace"
fi

NEOCHE_SHELL="${NEOCHE_SHELL:-}"
if [ -n "$NEOCHE_SHELL" ] && command -v "$NEOCHE_SHELL" > /dev/null 2>&1; then
  echo "[INFO] launching ttyd with $NEOCHE_SHELL"
  eval exec /neovim/bin/ttyd $TTYD_OPTS "$NEOCHE_SHELL" -c \"nvim .\"
else
  eval exec /neovim/bin/ttyd $TTYD_OPTS nvim .
fi
