diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..196c503 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,33 @@ +FROM mcr.microsoft.com/devcontainers/base:ubuntu + +# Install Nix +RUN apt-get update && apt-get install -y \ + curl \ + xz-utils \ + sudo \ + && rm -rf /var/lib/apt/lists/* + +# Create vscode user if it doesn't exist +RUN if ! id -u vscode > /dev/null 2>&1; then \ + useradd -m -s /bin/bash vscode && \ + echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ + fi + +# Switch to vscode user for Nix installation +USER vscode +WORKDIR /home/vscode + +# Install Nix in single-user mode +RUN curl -L https://nixos.org/nix/install | sh -s -- --no-daemon + +# Add Nix to PATH and configure for the shell +RUN echo '. /home/vscode/.nix-profile/etc/profile.d/nix.sh' >> /home/vscode/.bashrc && \ + mkdir -p /home/vscode/.config/nix && \ + echo 'experimental-features = nix-command flakes' >> /home/vscode/.config/nix/nix.conf + +# Set up workspace directory +RUN sudo mkdir -p /workspace && sudo chown vscode:vscode /workspace +WORKDIR /workspace + +# Keep container running +CMD ["sleep", "infinity"] \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..b9a664f --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,23 @@ +{ + "name": "claudecode.nvim Development", + "build": { + "dockerfile": "Dockerfile" + }, + "features": { + "ghcr.io/devcontainers/features/git:1": {} + }, + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash" + }, + "extensions": ["jnoortheen.nix-ide"] + } + }, + "postCreateCommand": "bash .devcontainer/post-create.sh", + "remoteUser": "vscode", + "mounts": [ + "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached" + ], + "workspaceFolder": "/workspace" +} diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100755 index 0000000..ca9d0f1 --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Source Nix environment +. /home/vscode/.nix-profile/etc/profile.d/nix.sh + +# Verify Nix is available +if ! command -v nix &>/dev/null; then + echo "Error: Nix is not installed properly" + exit 1 +fi + +echo "✅ Nix is installed and available" +echo "" +echo "📦 claudecode.nvim Development Container Ready!" +echo "" +echo "To enter the development shell with all dependencies, run:" +echo " nix develop" +echo "" +echo "This will provide:" +echo " - Neovim" +echo " - Lua and LuaJIT" +echo " - busted (test framework)" +echo " - luacheck (linter)" +echo " - stylua (formatter)" +echo " - All other development tools" +echo "" +echo "You can also run development commands directly:" +echo " - make # Run full validation (format, lint, test)" +echo " - make test # Run tests" +echo " - make check # Run linter" +echo " - make format # Format code"