FROM python:3.14-slim ARG USERNAME=dev ARG USER_UID=1000 ARG USER_GID=1000 # Herramientas básicas + zsh + utilidades que usará neovim (ripgrep/fd para telescope, etc.) RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ zsh \ sudo \ ripgrep \ fd-find \ unzip \ build-essential \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Debian llama al binario "fdfind" en vez de "fd": creamos un enlace para que # los plugins de neovim que esperan "fd" lo encuentren. RUN ln -s $(which fdfind) /usr/local/bin/fd # Crear grupo y usuario "dev" con UID:GID 1000:1000 (evita problemas de # permisos con los bind mounts del host) y darle sudo sin contraseña. RUN groupadd --gid ${USER_GID} ${USERNAME} \ && useradd --uid ${USER_UID} --gid ${USER_GID} -m -s /bin/zsh ${USERNAME} \ && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \ && chmod 0440 /etc/sudoers.d/${USERNAME} # Poetry a nivel de sistema (como root) para que quede disponible en el PATH # de cualquier usuario y no se pierda al cambiar de shell. RUN pip install --no-cache-dir poetry \ && poetry config virtualenvs.in-project true # A partir de aquí trabajamos como el usuario "dev", igual que se hace con # "ubuntu" en el ejemplo de esp-idf, para instalar oh-my-zsh en su propio HOME. USER ${USERNAME} WORKDIR /home/${USERNAME} RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended WORKDIR /workspace