Monorepo for Aesthetic.Computer
aesthetic.computer
1// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2// https://github.com/microsoft/vscode-dev-containers/tree/v0.241.1/containers/codespaces-linux
3// And for devcontainer cli usage check out: https://github.com/devcontainers/cli?tab=readme-ov-file
4{
5 "name": "Default",
6 "build": {
7 "dockerfile": "Dockerfile",
8 "args": {
9 "BUILDKIT_INLINE_CACHE": "1",
10 "DOCKER_BUILDKIT": "1",
11 "FEDORA_IMAGE": "quay.io/fedora/fedora:latest"
12 }
13 },
14 "containerEnv": {
15 "DISPLAY": "${localEnv:DISPLAY}",
16 "HOST_IP": "${localEnv:HOST_IP}",
17 "WSL_DISTRO_NAME": "${localEnv:WSL_DISTRO_NAME}",
18 "DOCKER_BUILDKIT": "1",
19 "COMPOSE_DOCKER_CLI_BUILD": "1"
20 },
21 "mounts": [
22 "source=${localWorkspaceFolder}/.devcontainer/.emacs.d,target=/home/me/.emacs.d,type=bind,consistency=cached",
23 "source=${localWorkspaceFolder}/.devcontainer/envs,target=/home/me/envs,type=bind,consistency=cached",
24 "source=aesthetic-fish-data,target=/home/me/.local/share/fish,type=volume",
25 "source=aesthetic-copilot-data,target=/home/me/.copilot,type=volume",
26 "source=codespaces-linux-var-lib-docker,target=/var/lib/docker,type=volume",
27 "source=/var/run/docker.sock,target=/var/run/docker-host.sock,type=bind",
28 "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock"
29 // NOTE: /etc/localtime mount removed - it doesn't exist on macOS and breaks container start.
30 // Docker Desktop on macOS handles timezone sync automatically.
31 ],
32 // "features": {
33 // "ghcr.io/devcontainers/features/python:1": "none"
34 // },
35 "forwardPorts": [8888, 8111, 8889, 8083, 8084, 8085, 4040, 12345, 3478, 10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007],
36 "portsAttributes": {
37 "8888": {
38 "label": "Aesthetic Computer",
39 "onAutoForward": "notify",
40 "visibility": "public"
41 },
42 "3478": {
43 "label": "TURN Server",
44 "protocol": "udp",
45 "onAutoForward": "silent"
46 },
47 "8111": {
48 "label": "Caddy",
49 "onAutoForward": "silent",
50 "visibility": "public"
51 },
52 "8889": {
53 "label": "Session Server",
54 "onAutoForward": "silent",
55 "visibility": "public"
56 },
57 "8083": {
58 "label": "Chat System",
59 "onAutoForward": "silent",
60 "visibility": "public"
61 },
62 "8084": {
63 "label": "Chat SOTCE",
64 "onAutoForward": "silent",
65 "visibility": "public"
66 },
67 "8085": {
68 "label": "Chat Clock",
69 "onAutoForward": "silent",
70 "visibility": "public"
71 }
72 },
73 "customizations": {
74 "codespaces": {
75 "machine": "largePremiumLinux"
76 },
77 "vscode": {
78 "extensions": [],
79 "settings": {
80 "settingsSync.ignoredExtensions": ["github.copilot-chat", "github.copilot"],
81 "extensions.ignoreRecommendations": true,
82 "remote.extensionKind": {
83 "github.copilot-chat": ["ui"],
84 "github.copilot": ["ui"]
85 },
86 "extensions.autoUpdate": false,
87 "settingsSync.keybindingsPerPlatform": false,
88 "git.autorefresh": false,
89 "files.watcherExclude": {
90 "**/node_modules/**": true,
91 "**/.git/objects/**": true,
92 "**/.git/subtree-cache/**": true,
93 "**/dist/**": true,
94 "**/packed/**": true,
95 "**/archive/**": true
96 }
97 }
98 }
99 },
100 "runArgs": [
101 // 📋 Clipboard also requires `xhost +local:docker` to be set on the host.
102 "-v",
103 "/tmp/.X11-unix:/tmp/.X11-unix",
104 "-q",
105 "--cap-add=SYS_PTRACE",
106 "--security-opt=apparmor=unconfined",
107 "--name",
108 "aesthetic",
109 "--hostname",
110 "aesthetic",
111 "--init",
112 "--memory=12g",
113 "--memory-swap=12g",
114 "--shm-size=2g",
115 "--cgroupns=host",
116 "--tmpfs=/tmp:noexec,nosuid,size=2g",
117 "-p",
118 "0.0.0.0:8888:8888",
119 "-p",
120 "0.0.0.0:8889:8889",
121 "-p",
122 "0.0.0.0:3478:3478/udp",
123 "-p",
124 "0.0.0.0:49160-49167:49160-49167/udp",
125 "-p",
126 "0.0.0.0:10000-10007:10000-10007/udp",
127 "--ulimit",
128 "nofile=131072:131072"
129 // "--network",
130 // "host"
131 ],
132 "initializeCommand": ["sh", "-c", ".devcontainer/scripts/prepare-host.sh"],
133 "postStartCommand": "sh .devcontainer/scripts/poststart-wrapper.sh",
134 "postAttachCommand": "sh .devcontainer/scripts/post-attach.sh"
135 // .waiter file is now created inside entry.fish to avoid terminal popup in Codespaces
136}