container-superposition 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,312 @@
1
+ # Bun Overlay
2
+
3
+ Adds Bun runtime - an all-in-one JavaScript runtime, bundler, test runner, and package manager that's faster than Node.js.
4
+
5
+ ## Features
6
+
7
+ - **Bun** - Latest version of the Bun runtime
8
+ - **Built-in bundler** - Fast bundling without webpack/vite
9
+ - **Built-in test runner** - Jest-compatible testing
10
+ - **Built-in package manager** - npm-compatible, faster installs
11
+ - **TypeScript support** - Native TypeScript execution
12
+ - **Node.js compatibility** - Runs most Node.js packages
13
+ - **VS Code Extensions:**
14
+ - Bun for Visual Studio Code (oven.bun-vscode)
15
+ - ESLint (dbaeumer.vscode-eslint)
16
+ - Prettier (esbenp.prettier-vscode)
17
+
18
+ ## How It Works
19
+
20
+ This overlay installs Bun via the official installation script. Bun is a drop-in replacement for Node.js with significantly faster startup times and module resolution. It includes Node.js LTS for compatibility with packages that require native Node.js APIs.
21
+
22
+ **Installation method:**
23
+
24
+ - Bun via official install script
25
+ - Node.js LTS for compatibility
26
+ - Installed to ~/.bun
27
+
28
+ ## Common Commands
29
+
30
+ ### Package Management
31
+
32
+ ```bash
33
+ # Install dependencies (npm-compatible)
34
+ bun install
35
+
36
+ # Add package
37
+ bun add express
38
+
39
+ # Add dev dependency
40
+ bun add -d typescript
41
+
42
+ # Remove package
43
+ bun remove express
44
+
45
+ # Update all dependencies
46
+ bun update
47
+
48
+ # Global install
49
+ bun add -g typescript
50
+ ```
51
+
52
+ ### Running Scripts
53
+
54
+ ```bash
55
+ # Run TypeScript/JavaScript directly
56
+ bun run index.ts
57
+ bun run server.js
58
+
59
+ # Run package.json script
60
+ bun run dev
61
+ bun run build
62
+ bun run test
63
+
64
+ # Run with watch mode
65
+ bun --watch run index.ts
66
+ ```
67
+
68
+ ### Building and Bundling
69
+
70
+ ```bash
71
+ # Bundle application
72
+ bun build ./index.tsx --outdir ./dist
73
+
74
+ # Bundle with minification
75
+ bun build ./index.tsx --minify --outdir ./dist
76
+
77
+ # Bundle for production
78
+ bun build ./index.tsx --minify --sourcemap --outdir ./dist
79
+
80
+ # Create standalone executable
81
+ bun build ./cli.ts --compile --outfile mycli
82
+ ```
83
+
84
+ ### Testing
85
+
86
+ ```bash
87
+ # Run tests (Jest-compatible)
88
+ bun test
89
+
90
+ # Run specific test file
91
+ bun test file.test.ts
92
+
93
+ # Watch mode
94
+ bun test --watch
95
+
96
+ # Coverage
97
+ bun test --coverage
98
+ ```
99
+
100
+ ### HTTP Server
101
+
102
+ ```bash
103
+ # Create simple server (built-in)
104
+ bun run server.ts
105
+
106
+ # Example server.ts:
107
+ cat > server.ts << 'EOF'
108
+ const server = Bun.serve({
109
+ port: 3000,
110
+ fetch(request) {
111
+ return new Response("Hello from Bun!");
112
+ },
113
+ });
114
+
115
+ console.log(`Listening on http://localhost:${server.port}`);
116
+ EOF
117
+
118
+ bun run server.ts
119
+ ```
120
+
121
+ ## Use Cases
122
+
123
+ - **Modern web applications** - React, Vue, Svelte with faster builds
124
+ - **API servers** - High-performance REST/GraphQL APIs
125
+ - **CLI tools** - Fast command-line applications
126
+ - **Microservices** - Lightweight services with fast cold starts
127
+ - **Edge functions** - Serverless functions with quick startup
128
+ - **Full-stack apps** - Next.js, Remix with Bun runtime
129
+
130
+ **Integrates well with:**
131
+
132
+ - `postgres`, `redis`, `mysql` - Database drivers (pg, ioredis, mysql2)
133
+ - `docker-sock` - Docker SDK (dockerode)
134
+ - `prometheus` - Metrics collection (prom-client)
135
+
136
+ ## Configuration
137
+
138
+ ### bunfig.toml
139
+
140
+ Create `bunfig.toml` in project root:
141
+
142
+ ```toml
143
+ [install]
144
+ # Configure package manager
145
+ production = false
146
+ optional = true
147
+ dev = true
148
+
149
+ # Registry
150
+ registry = "https://registry.npmjs.org"
151
+
152
+ [test]
153
+ # Test configuration
154
+ coverage = true
155
+ ```
156
+
157
+ ### tsconfig.json
158
+
159
+ Bun works with standard TypeScript configuration:
160
+
161
+ ```json
162
+ {
163
+ "compilerOptions": {
164
+ "target": "ES2022",
165
+ "module": "ESNext",
166
+ "moduleResolution": "bundler",
167
+ "types": ["bun-types"]
168
+ }
169
+ }
170
+ ```
171
+
172
+ ## Application Integration
173
+
174
+ ### Web Server with Bun
175
+
176
+ ```typescript
177
+ // server.ts
178
+ const server = Bun.serve({
179
+ port: 3000,
180
+ fetch(req) {
181
+ const url = new URL(req.url);
182
+
183
+ if (url.pathname === '/') {
184
+ return new Response('Hello from Bun!');
185
+ }
186
+
187
+ if (url.pathname === '/json') {
188
+ return Response.json({ message: 'JSON response' });
189
+ }
190
+
191
+ return new Response('Not Found', { status: 404 });
192
+ },
193
+ });
194
+
195
+ console.log(`Server running on http://localhost:${server.port}`);
196
+ ```
197
+
198
+ **Run:**
199
+
200
+ ```bash
201
+ bun run server.ts
202
+ # Access at http://localhost:3000
203
+ ```
204
+
205
+ ### React with Bun
206
+
207
+ ```bash
208
+ # Create React app
209
+ bun create react myapp
210
+ cd myapp
211
+
212
+ # Install dependencies
213
+ bun install
214
+
215
+ # Run dev server
216
+ bun run dev
217
+ ```
218
+
219
+ ### PostgreSQL with Bun
220
+
221
+ ```typescript
222
+ import postgres from 'postgres';
223
+
224
+ const sql = postgres('postgres://postgres:postgres@postgres/mydb');
225
+
226
+ const users = await sql`SELECT * FROM users`;
227
+ console.log(users);
228
+ ```
229
+
230
+ ## Performance Comparison
231
+
232
+ | Operation | Bun | Node.js | Speedup |
233
+ | ------------------- | ---- | ------- | --------- |
234
+ | **Package install** | 5s | 25s | 5x faster |
235
+ | **Cold start** | 50ms | 200ms | 4x faster |
236
+ | **Bundling** | 2s | 10s | 5x faster |
237
+ | **Test execution** | 1s | 5s | 5x faster |
238
+
239
+ _Approximate benchmarks for typical projects_
240
+
241
+ ## Troubleshooting
242
+
243
+ ### Issue: Package compatibility
244
+
245
+ **Symptoms:**
246
+
247
+ - Package doesn't work with Bun
248
+ - Native module errors
249
+
250
+ **Solution:**
251
+
252
+ ```bash
253
+ # Use Node.js for specific commands
254
+ node script.js
255
+
256
+ # Or install with npm
257
+ npm install problematic-package
258
+ ```
259
+
260
+ ### Issue: TypeScript types
261
+
262
+ **Symptoms:**
263
+
264
+ - Missing type definitions for Bun APIs
265
+
266
+ **Solution:**
267
+
268
+ ```bash
269
+ # Install Bun types
270
+ bun add -d bun-types
271
+
272
+ # Add to tsconfig.json
273
+ {
274
+ "compilerOptions": {
275
+ "types": ["bun-types"]
276
+ }
277
+ }
278
+ ```
279
+
280
+ ### Issue: Bun not in PATH
281
+
282
+ **Solution:**
283
+
284
+ ```bash
285
+ # Add to shell profile
286
+ export BUN_INSTALL="$HOME/.bun"
287
+ export PATH="$BUN_INSTALL/bin:$PATH"
288
+
289
+ # Reload shell
290
+ source ~/.bashrc
291
+ ```
292
+
293
+ ## References
294
+
295
+ - [Official Bun Documentation](https://bun.sh/docs) - Complete Bun documentation
296
+ - [Bun API Reference](https://bun.sh/docs/api) - Built-in APIs
297
+ - [Bun vs Node.js](https://bun.sh/docs/runtime/nodejs-apis) - Compatibility guide
298
+ - [Bun Examples](https://github.com/oven-sh/bun/tree/main/examples) - Sample projects
299
+
300
+ **Related Overlays:**
301
+
302
+ - `postgres` - PostgreSQL with pg driver
303
+ - `redis` - Redis with ioredis
304
+ - `docker-sock` - Docker access
305
+ - `prometheus` - Metrics with prom-client
306
+
307
+ ## Notes
308
+
309
+ - **Node.js Compatibility:** Bun aims for Node.js compatibility but some packages may not work
310
+ - **Native Modules:** Some native Node.js modules may require Node.js runtime
311
+ - **Ecosystem Maturity:** Bun is newer than Node.js; some tools may have limited support
312
+ - **Production Use:** Evaluate thoroughly before production deployment
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "unzip curl",
6
+ "apk": "unzip curl"
7
+ },
8
+ "ghcr.io/devcontainers/features/node:1": {
9
+ "version": "lts",
10
+ "nodeGypDependencies": false
11
+ }
12
+ },
13
+ "customizations": {
14
+ "vscode": {
15
+ "extensions": ["oven.bun-vscode", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
16
+ "settings": {
17
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
18
+ "[typescript]": {
19
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
20
+ },
21
+ "[javascript]": {
22
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "remoteEnv": {
28
+ "PATH": "${containerEnv:HOME}/.bun/bin:${containerEnv:PATH}"
29
+ },
30
+ "forwardPorts": [3000, 8080],
31
+ "portsAttributes": {
32
+ "3000": {
33
+ "label": "Dev Server",
34
+ "onAutoForward": "openBrowser"
35
+ },
36
+ "8080": {
37
+ "label": "Web App",
38
+ "onAutoForward": "notify"
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,16 @@
1
+ id: bun
2
+ name: Bun
3
+ description: Bun runtime - faster JavaScript runtime and package manager
4
+ category: language
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - language
11
+ - bun
12
+ - javascript
13
+ - typescript
14
+ ports:
15
+ - 3000
16
+ - 8080
@@ -0,0 +1,79 @@
1
+ #!/bin/bash
2
+ # Bun setup script - Install Bun runtime
3
+
4
+ set -e
5
+
6
+ echo "🔧 Setting up Bun development environment..."
7
+
8
+ # Install Bun with version pinning for security
9
+ echo "đŸ“Ļ Installing Bun..."
10
+ if ! command -v bun &> /dev/null; then
11
+ # Pin to a specific version for security and reproducibility
12
+ BUN_VERSION="1.1.38"
13
+
14
+ # Detect architecture
15
+ ARCH=$(uname -m)
16
+ case $ARCH in
17
+ x86_64)
18
+ BUN_ARCH="x64"
19
+ # SHA256 checksum for bun-linux-x64 v1.1.38
20
+ BUN_CHECKSUM="a61da5357e28d4977fccd4851fed62ff4da3ea33853005c7dd93dac80bc53932"
21
+ ;;
22
+ aarch64|arm64)
23
+ BUN_ARCH="aarch64"
24
+ # SHA256 checksum for bun-linux-aarch64 v1.1.38
25
+ BUN_CHECKSUM="3b08fd0b31f745509e1fed9c690c80d1a32ef2b3c8d059583f643f696639bd21"
26
+ ;;
27
+ *)
28
+ echo " ❌ Unsupported architecture: $ARCH"
29
+ echo " Bun supports x86_64 and aarch64/arm64. Your architecture is not supported."
30
+ exit 1
31
+ ;;
32
+ esac
33
+
34
+ BUN_URL="https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/bun-linux-${BUN_ARCH}.zip"
35
+
36
+ echo " Downloading Bun version ${BUN_VERSION} for ${ARCH}..."
37
+ if ! wget "${BUN_URL}" -O /tmp/bun.zip 2>&1; then
38
+ echo " ❌ Failed to download Bun from ${BUN_URL}"
39
+ exit 1
40
+ fi
41
+
42
+ # Verify checksum
43
+ echo " Verifying checksum..."
44
+ echo "${BUN_CHECKSUM} /tmp/bun.zip" | sha256sum -c - || {
45
+ echo " ❌ Checksum verification failed!"
46
+ rm -f /tmp/bun.zip
47
+ exit 1
48
+ }
49
+
50
+ # Extract and install
51
+ unzip -q /tmp/bun.zip -d /tmp/
52
+ mkdir -p "$HOME/.bun/bin"
53
+ mv /tmp/bun-linux-${BUN_ARCH}/bun "$HOME/.bun/bin/"
54
+ rm -rf /tmp/bun.zip /tmp/bun-linux-${BUN_ARCH}
55
+ echo " ✅ Bun installed (${BUN_VERSION})"
56
+ else
57
+ echo " ✅ Bun already installed"
58
+ fi
59
+
60
+ # Reload shell environment
61
+ export BUN_INSTALL="$HOME/.bun"
62
+ export PATH="$BUN_INSTALL/bin:$PATH"
63
+
64
+ # Verify installation
65
+ if command -v bun &> /dev/null; then
66
+ INSTALLED_VERSION=$(bun --version)
67
+ echo "✓ Bun verified: v$INSTALLED_VERSION"
68
+ else
69
+ echo "❌ Bun installation failed - bun command not found"
70
+ exit 1
71
+ fi
72
+
73
+ # Install project dependencies if package.json exists
74
+ if [ -f "package.json" ]; then
75
+ echo "đŸ“Ļ Installing project dependencies with Bun..."
76
+ bun install || echo "âš ī¸ bun install failed"
77
+ fi
78
+
79
+ echo "✓ Bun setup complete"
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+ # Verification script for Bun overlay
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying Bun overlay..."
7
+ echo ""
8
+
9
+ # Check Bun is installed
10
+ echo "1ī¸âƒŖ Checking Bun..."
11
+ if command -v bun &> /dev/null; then
12
+ bun --version
13
+ echo " ✅ Bun found"
14
+ else
15
+ echo " ❌ Bun not found"
16
+ exit 1
17
+ fi
18
+
19
+ # Check Node.js is available (for compatibility)
20
+ echo ""
21
+ echo "2ī¸âƒŖ Checking Node.js (for compatibility)..."
22
+ if command -v node &> /dev/null; then
23
+ node --version
24
+ echo " ✅ Node.js found (for compatibility)"
25
+ else
26
+ echo " âš ī¸ Node.js not found (optional)"
27
+ fi
28
+
29
+ echo ""
30
+ echo "✅ Bun overlay verification complete"
@@ -0,0 +1,128 @@
1
+ # Codex Overlay
2
+
3
+ Adds OpenAI Codex CLI with a persistent `.codex` folder for configurations.
4
+
5
+ ## Features
6
+
7
+ - **OpenAI Codex CLI** - AI-powered code generation and assistance from the command line
8
+ - **Codex directory** - Creates `$HOME/.codex` for persistent configurations
9
+
10
+ ## What is OpenAI Codex CLI?
11
+
12
+ The OpenAI Codex CLI (`@openai/codex`) provides command-line access to OpenAI's Codex AI model for:
13
+
14
+ - **Code generation** - Generate code from natural language descriptions
15
+ - **Code completion** - Intelligent code suggestions
16
+ - **Code explanation** - Understand complex code
17
+ - **Refactoring** - Improve existing code
18
+
19
+ ## Configuration
20
+
21
+ **Configured paths:**
22
+
23
+ - `$HOME/.codex` - Configuration and tools directory (created automatically during setup)
24
+
25
+ ## How It Works
26
+
27
+ This overlay:
28
+
29
+ 1. Installs OpenAI Codex CLI globally via npm (`npm install -g @openai/codex`)
30
+ 2. Creates the `$HOME/.codex` directory for persistent configurations
31
+
32
+ **After setup:**
33
+
34
+ - The `codex` command will be available immediately (npm global binaries are in PATH)
35
+ - Use it for AI-powered coding assistance
36
+
37
+ ## Verification
38
+
39
+ After setup, run the verification script to ensure proper installation:
40
+
41
+ ```bash
42
+ bash .devcontainer/verify-codex.sh
43
+ ```
44
+
45
+ This will check:
46
+
47
+ - Codex CLI is installed and in PATH
48
+ - `.codex` directory exists
49
+
50
+ ## Troubleshooting
51
+
52
+ ### codex command not found
53
+
54
+ **Issue:** After installing codex overlay, `codex` command is not recognized.
55
+
56
+ **Solution:**
57
+
58
+ 1. Verify npm global binaries are in PATH:
59
+
60
+ ```bash
61
+ npm config get prefix
62
+ # Should show: /usr/local or similar
63
+
64
+ which codex
65
+ # Should show: /usr/local/bin/codex or similar
66
+ ```
67
+
68
+ 2. If not found, rebuild the devcontainer:
69
+ - VS Code: `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
70
+
71
+ 3. Check installation manually:
72
+
73
+ ```bash
74
+ npm list -g @openai/codex
75
+ # Should show installed version
76
+ ```
77
+
78
+ ## Usage
79
+
80
+ ### Basic Commands
81
+
82
+ ```bash
83
+ # Generate code from natural language
84
+ codex "create a function that fetches user data from an API"
85
+
86
+ # Get code explanations
87
+ codex explain "what does this regex do: /^[a-zA-Z0-9]+$/"
88
+
89
+ # Code completion (provide partial code)
90
+ codex complete "function fibonacci(n) {"
91
+ ```
92
+
93
+ For full documentation, visit: [OpenAI Codex CLI Documentation](https://github.com/openai/openai-codex-cli)
94
+
95
+ ## Optional: Persistent .codex Mount
96
+
97
+ To share your `.codex` configurations between your host and container, create the directory on your host:
98
+
99
+ ```bash
100
+ mkdir -p ~/.codex
101
+ ```
102
+
103
+ Then add this mount to your `devcontainer.json`:
104
+
105
+ ```json
106
+ "mounts": [
107
+ "source=${localEnv:HOME}${localEnv:USERPROFILE}/.codex,target=${containerEnv:HOME}/.codex,type=bind,consistency=cached"
108
+ ]
109
+ ```
110
+
111
+ This allows you to:
112
+
113
+ - Share Codex configurations across multiple devcontainers
114
+ - Persist configurations on your host machine
115
+ - Maintain consistent settings across projects
116
+
117
+ **Important**: Only add this mount after creating the `~/.codex` directory on your host. Otherwise, the container may fail to start.
118
+
119
+ ## Related Overlays
120
+
121
+ - **nodejs** - Required for npm and running the Codex CLI
122
+ - **git-helpers** - Git integration for AI-generated code
123
+ - **pre-commit** - Quality gates for AI-generated code
124
+
125
+ ## Additional Resources
126
+
127
+ - [OpenAI Codex CLI](https://github.com/openai/openai-codex-cli)
128
+ - [OpenAI Platform](https://platform.openai.com/)
@@ -0,0 +1,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -0,0 +1,14 @@
1
+ id: codex
2
+ name: Codex
3
+ description: OpenAI Codex CLI for AI-powered code generation and assistance
4
+ category: dev
5
+ supports: []
6
+ requires:
7
+ - nodejs
8
+ suggests: []
9
+ conflicts: []
10
+ tags:
11
+ - dev
12
+ - ai
13
+ - code-generation
14
+ ports: []
@@ -0,0 +1,24 @@
1
+ #!/bin/bash
2
+ # Codex setup script - Install OpenAI Codex CLI
3
+
4
+ set -e
5
+
6
+ echo "đŸ“Ļ Installing OpenAI Codex CLI..."
7
+
8
+ # Install @openai/codex globally
9
+ npm install -g @openai/codex
10
+
11
+ # Verify codex installation
12
+ if command -v codex &> /dev/null; then
13
+ echo "✓ Codex CLI installed successfully: $(codex --version 2>/dev/null || echo 'installed')"
14
+ else
15
+ echo "✗ Codex CLI installation failed"
16
+ exit 1
17
+ fi
18
+
19
+ # Create .codex directory for configuration
20
+ mkdir -p "$HOME/.codex"
21
+
22
+ echo "✓ Codex setup complete"
23
+ echo "â„šī¸ OpenAI Codex CLI: https://github.com/openai/openai-codex-cli"
24
+ echo "â„šī¸ Configuration directory: $HOME/.codex"
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+ # Codex overlay verification script
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying Codex overlay setup..."
7
+
8
+ # Check if codex CLI is installed
9
+ if ! command -v codex &> /dev/null; then
10
+ echo "✗ codex CLI is not installed or not in PATH"
11
+ exit 1
12
+ fi
13
+
14
+ echo "✓ codex CLI is installed: $(codex --version 2>/dev/null || echo 'installed')"
15
+
16
+ # Check .codex directory exists
17
+ if [ -d "$HOME/.codex" ]; then
18
+ echo "✓ .codex directory exists: $HOME/.codex"
19
+ else
20
+ echo "âš ī¸ .codex directory not found at $HOME/.codex"
21
+ fi
22
+
23
+ echo ""
24
+ echo "✅ Codex overlay verification complete!"
25
+ echo ""
26
+
27
+ echo "💡 Tips:"
28
+ echo " - Run 'codex --help' to see available commands"
29
+ echo " - Your Codex home directory is: $HOME/.codex"
30
+ echo " - Ensure 'codex' is available on your PATH inside the devcontainer"