-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdevcontainer.json
More file actions
200 lines (168 loc) · 8.72 KB
/
devcontainer.json
File metadata and controls
200 lines (168 loc) · 8.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
{
// ----------***----------***----------***----------***----------***----------
// IMPORTANT: Each image might have a different default user. Be sure to set
// `remoteUser` appropriately and to adjust any paths that depend on the user,
// such as many of the `mounts` below.
// ----------***----------***----------***----------***----------***----------
"name": "DevMagic",
// Universal, with lots of things (~10 GB) on Ubuntu 24 (Noble):
// "image": "mcr.microsoft.com/devcontainers/universal:4-noble",
// Node.js with TypeScript (~2 GB) on Debian 12 (Bookworm):
"image": "mcr.microsoft.com/devcontainers/typescript-node:24-bookworm",
// "remoteUser": "codespace", // When using the universal image.
"remoteUser": "node",
"containerEnv": {
// Essential locale and timezone settings. Without these, you WILL get
// really weird encoding issues and date/time problems.
"TZ": "${localEnv:TZ:America/Sao_Paulo}",
"LC_ALL": "${localEnv:LC_ALL:en_US.UTF-8}",
"LANG": "${localEnv:LANG:en_US.UTF-8}",
// Shell history directory. You must mount have a mounted ~/.shell_histories
// directory for the history to persist across containers and WSL sessions.
// Otherwise, history will be lost when the container is removed.
"MCRA_HISTORY_DIR": "/home/node/.shell_histories",
// Workspace folder for history file naming (auto-set by VS Code).
"WORKSPACE_FOLDER": "${containerWorkspaceFolder}",
// Ollama host URL for local LLM development.
// "OLLAMA_HOST": "${localEnv:OLLAMA_HOST:http://host.docker.internal:11434}",
// Dotfiles configuration. Override via host environment variables.
// Set DEVMAGIC_DOTFILES_REPO in your ~/.bashrc or ~/.zshrc to use your own repo.
// Set to empty string to disable dotfiles: export DEVMAGIC_DOTFILES_REPO=""
// Note: Default values are set in devcontainer-setup.sh (not here) because
// the ${localEnv:VAR:default} syntax doesn't handle colons in URLs properly.
"DEVMAGIC_DOTFILES_REPO": "${localEnv:DEVMAGIC_DOTFILES_REPO}",
"DEVMAGIC_DOTFILES_BRANCH": "${localEnv:DEVMAGIC_DOTFILES_BRANCH}"
},
"postCreateCommand": "curl -fsSL https://devmagic.run/setup | bash",
// All the commented out features are from the official repository. More options at:
// https://github.com/devcontainers/features/tree/main/src
// If you don't care to choose and just want EVERYTHING, use the `universal`
// base image, but be aware that it has ~10 GB.
"features": {
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, RockyLinux, and Alpine Linux.
"ghcr.io/devcontainers/features/common-utils:2": {
"configureZshAsDefaultShell": "true"
},
// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/docker-in-docker:2": {},
// Debian/Ubuntu-based distributions with the apt package manager installed.
"ghcr.io/devcontainers/features/git-lfs:1": {
// If you don't have git lfs in your regular workflow and in your .gitconfig,
// turn this to true or remove it, but BEWARE: this might NOT work properly
// if you are using pre/post commit hooks.
"autoPull": false
},
// Alpine, Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apk, apt, yum, dnf, or microdnf package manager installed.
"ghcr.io/devcontainers/features/git:1": {},
// Debian/Ubuntu-based distributions with the apt package manager installed.
"ghcr.io/devcontainers/features/github-cli:1": {},
// Bun JavaScript runtime (borrowing from the Rails devcontainer repository).
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
},
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
"ghcr.io/devcontainers/features/python:1": {
"version": "3.12"
},
// This Feature should work on recent versions of Debian/Ubuntu-based distributions with the apt package manager installed.
"ghcr.io/devcontainers/features/ruby:1": {
"version": "3.4"
},
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
"ghcr.io/devcontainers/features/go:1": {
"version": "1.23"
}
// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/dotnet:2": {},
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
// "ghcr.io/devcontainers/features/java:1": {},
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and Rocky Linux distributions with the apt, yum, dnf, or microdnf package manager installed.
// Note: RedHat 7 Family (RedHat, CentOS, etc.) must use Node versions less than 18 due to its system libraries and long-term support (LTS) policies.
// "ghcr.io/devcontainers/features/node:1": {} // Uncomment if base image doesn't have Node.js
// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/php:1": {},
// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, RockyLinux and Mariner distributions with the apt, yum, dnf, microdnf and tdnf package manager installed.
// Note: Alpine is not supported because the rustup-init binary requires glibc to run, but Alpine Linux does not include glibc by default. Instead, it uses musl libc, which is not binary-compatible with glibc.
// "ghcr.io/devcontainers/features/rust:1": {},
},
"mounts": [
// Cross platform home directory path:
// - Windows: USERPROFILE (HOME is empty)
// - Linux/macOS: HOME (USERPROFILE is empty)
// Share Ollama models with host.
// "source=${localEnv:HOME}${localEnv:USERPROFILE}/.ollama,target=/home/node/.ollama,type=bind,consistency=cached",
// Shell history shared across all containers and WSL.
// In WSL: ln -s /mnt/c/Users/{username}/OneDrive/shell_histories ~/.shell_histories
// In Windows: mklink /J %USERPROFILE%\.shell_histories "%USERPROFILE%\OneDrive\shell_histories"
"source=${localEnv:HOME}${localEnv:USERPROFILE}/.shell_histories,target=/home/node/.shell_histories,type=bind,consistency=cached"
],
// Port forwarding for development services.
// Ex.: 11434 - Ollama API server for local LLM development.
"forwardPorts": [],
// Set custom hostname for the container.
// tmpfs for /tmp: Creates an isolated, writable /tmp in the container to avoid
// Podman rootless SELinux restrictions. This is standard and doesn't reduce security—
// tmpfs is ephemeral (cleared on container stop) and isolated from the host.
// mode=1777 explicitly sets world-writable + sticky bit (standard /tmp permissions).
"runArgs": [
"--hostname=automaton",
"--tmpfs",
"/tmp:rw,exec,nosuid,nodev,mode=1777"
],
"customizations": {
"vscode": {
"extensions": [
// AI Assistants
"anthropic.claude-code",
"github.copilot-chat",
"github.copilot",
"google.gemini-cli-vscode-ide-companion",
"openai.chatgpt",
"rooveterinaryinc.roo-cline",
// Git & GitHub
"eamodio.gitlens",
"github.vscode-github-actions",
"github.vscode-pull-request-github",
// Remote Development
"github.codespaces",
"ms-vscode-remote.remote-containers",
"ms-vscode-remote.remote-ssh-edit",
"ms-vscode-remote.remote-ssh",
"ms-vscode-remote.remote-wsl",
"ms-vscode-remote.vscode-remote-extensionpack",
"ms-vscode.remote-explorer",
"ms-vscode.remote-server",
// Containers & Docker
"docker.docker",
"ms-azuretools.vscode-containers",
"ms-azuretools.vscode-docker",
// Python
// "charliermarsh.ruff",
// "ms-python.black-formatter",
// "ms-python.debugpy",
// "ms-python.python",
// "ms-python.vscode-pylance",
// "ms-python.vscode-python-envs",
// JavaScript/TypeScript & Web
"bradlc.vscode-tailwindcss",
"dbaeumer.vscode-eslint",
"denoland.vscode-deno",
"esbenp.prettier-vscode",
// Testing
"ms-playwright.playwright",
// "ms-vscode.extension-test-runner",
// "ms-vscode.test-adapter-converter",
// Editor Enhancements
"editorconfig.editorconfig",
"github.github-vscode-theme",
"marcelocra.vscode-improved",
"ms-vscode.vscode-speech-language-pack-pt-br",
"ms-vscode.vscode-speech",
// Other
"redhat.vscode-yaml",
"ms-vscode.makefile-tools",
// "ms-vscode.powershell"
]
}
}
}