From cfb93bb47ba06a33f192ccdd555e55198edc87d5 Mon Sep 17 00:00:00 2001 From: chiDT Date: Tue, 26 Aug 2025 22:20:30 +0900 Subject: [PATCH] Add development tools: .NET SDKs, Cursor IDE, and AI CLI tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Install .NET SDK 8.0 and 9.0 with Microsoft package repository - Add Cursor IDE with AppImage installation and desktop shortcut - Install Claude CLI from GitHub releases - Install Gemini CLI via npm - Update sandbox mode handling for Cursor IDE - Add API key setup instructions for AI CLI tools πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .claude/settings.local.json | 9 +++++++++ Dockerfile | 27 +++++++++++++++++++++++++ README.md | 9 +++++++++ entrypoint.sh | 4 ++++ initial-resource/Desktop/cursor.desktop | 7 +++++++ 5 files changed, 56 insertions(+) create mode 100644 .claude/settings.local.json create mode 100644 initial-resource/Desktop/cursor.desktop diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..5557eae --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(git add:*)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index a5c70a8..4501665 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,33 @@ RUN curl -q -L -o vscode.deb https://update.code.visualstudio.com/1.103.2/linux- && apt-get install ./vscode.deb \ && rm -rf ./vscode.deb /etc/apt/sources.list.d/vscode.sources +# install .NET 8 and .NET 9 +RUN curl -q -L -o packages-microsoft-prod.deb https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb \ + && dpkg -i packages-microsoft-prod.deb \ + && rm packages-microsoft-prod.deb \ + && apt-get update \ + && apt-get install -y dotnet-sdk-8.0 dotnet-sdk-9.0 \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +# install cursor ide +RUN curl -q -L -o cursor.deb https://downloader.cursor.sh/linux/appImage/x64 \ + && mv cursor.deb cursor.AppImage \ + && chmod +x cursor.AppImage \ + && ./cursor.AppImage --appimage-extract \ + && mv squashfs-root /opt/cursor \ + && ln -s /opt/cursor/cursor /usr/bin/cursor \ + && rm cursor.AppImage + +# install claude code cli +RUN curl -q -L -o claude_cli.tar.gz https://github.com/anthropics/claude-cli/releases/latest/download/claude-cli-linux-x64.tar.gz \ + && tar -xzf claude_cli.tar.gz \ + && mv claude /usr/local/bin/claude \ + && chmod +x /usr/local/bin/claude \ + && rm claude_cli.tar.gz + +# install gemini cli +RUN npm install -g @google/generative-ai-cli + COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh diff --git a/README.md b/README.md index ab0f3e9..b237b7e 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,15 @@ RDP(리λͺ¨νŠΈ λ°μŠ€ν¬νƒ‘) μ§€μ›ν•˜λŠ” κ²½λŸ‰ debian 13 (trixie) base ν•œκΈ€ X # μ„€μΉ˜λœ ν”„λ‘œκ·Έλž¨ - Visual studio code +- Cursor IDE - Chromium - vim - git - npm + nodejs +- .NET SDK 8.0 +- .NET SDK 9.0 +- Claude CLI +- Gemini CLI # μ‚¬μš©λ²• - docker 3389 port μ—΄μ–΄μ„œ λ„μš°μ‹œλ©΄ λ©λ‹ˆλ‹€. κ·Έ ν›„ μœˆλ„μš° 원격 λ°μŠ€ν¬νƒ‘(3389포트)으둜 ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆ 접속. @@ -25,6 +30,10 @@ RDP(리λͺ¨νŠΈ λ°μŠ€ν¬νƒ‘) μ§€μ›ν•˜λŠ” κ²½λŸ‰ debian 13 (trixie) base ν•œκΈ€ X - λ³΄μ•ˆ 상 λ‘œμ»¬λ¦¬μ†ŒμŠ€κ°€ λΆ™λŠ”κ²Œ λ§‰ν˜€μžˆμŠ΅λ‹ˆλ‹€. 둜컬 λ¦¬μ†ŒμŠ€λ₯Ό μ—°κ²°ν•΄μ„œ CTRL+C / CTRL+V 같은 파일 볡사λ₯Ό μ›ν•˜μ‹œλŠ” κ²½μš°μ—λŠ” privileged λͺ¨λ“œλ‘œ μ‹€ν–‰ν•˜μ„Έμš”. - privileged λͺ¨λ“œλ‘œ μ‹€ν–‰ν•˜λŠ” 경우 C: 같은 λ“œλΌμ΄λΈŒλŠ” home 디렉토리 λ‚΄ thinclient_drives 에 마운트 λ©λ‹ˆλ‹€. +# AI CLI 도ꡬ μ„€μ • +- **Claude CLI**: μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ ν›„ `claude auth` λͺ…λ Ήμ–΄λ‘œ API ν‚€ μ„€μ • ν•„μš” +- **Gemini CLI**: `genai config set api_key YOUR_API_KEY` λͺ…λ Ήμ–΄λ‘œ API ν‚€ μ„€μ • ν•„μš” + # μƒˆ μ‚¬μš©μž 생성 sudo su ν•˜μ…”μ„œ 루트 κΆŒν•œμœΌλ‘œ adduser ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€. diff --git a/entrypoint.sh b/entrypoint.sh index 415ca02..3d257e8 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -41,6 +41,10 @@ if [ "$SANDBOX_CHECK_EXIT_CODE" -ne 0 ]; then rm -rf /usr/bin/code ln -s /usr/share/code/bin/code /usr/bin/code sed -i 's|ELECTRON_RUN_AS_NODE=1 "\$ELECTRON" "\$CLI" "\$@"|ELECTRON_RUN_AS_NODE=1 "\$ELECTRON" "\$CLI" --no-sandbox --disable-gpu "\$@"|' /usr/share/code/bin/code + # cursor also needs no-sandbox mode + if [ -f /opt/cursor/cursor ]; then + sed -i 's|exec "\$HERE/cursor"|exec "\$HERE/cursor" --no-sandbox --disable-gpu|' /opt/cursor/cursor 2>/dev/null || true + fi fi set -e diff --git a/initial-resource/Desktop/cursor.desktop b/initial-resource/Desktop/cursor.desktop new file mode 100644 index 0000000..df56a97 --- /dev/null +++ b/initial-resource/Desktop/cursor.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=Cursor +Comment=AI-first code editor +Exec=/usr/bin/cursor %F +Icon=cursor +Terminal=false +Type=Application \ No newline at end of file