// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/docker-existing-dockerfile
{
  "name": "bun (Ubuntu)",

  // Sets the run context to one level up instead of the .devcontainer folder.
  "context": "..",
  "hostRequirements": { "memory": "16gb" },

  // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
  "dockerFile": "../Dockerfile.devcontainer",

  // Set *default* container specific settings.json values on container create.
  "settings": {
    "terminal.integrated.shell.linux": "/bin/zsh",
    "zigLanguageClient.path": "/home/ubuntu/zls/zig-out/bin/zls",
    "zig.zigPath": "/build/zig/zig",
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },

  // Add the IDs of extensions you want installed when the container is created.
  "extensions": [
    "AugusteRame.zls-vscode",
    "ms-vscode.cpptools",
    "/home/ubuntu/vscode-zig.vsix",
    "vadimcn.vscode-lldb",
    "esbenp.prettier-vscode",
    "xaver.clang-format"
  ],
  "postCreateCommand": "cd /build/bun; bash /build/getting-started.sh; code /build/README.md",

  "build": {
    "target": "bun.devcontainer",
    "cacheFrom": ["ghcr.io/oven-sh/bun.devcontainer:latest"],
    "args": {
      "BUILDARCH": "${localEnv:DOCKER_BUILDARCH:amd64}",
      "--platform": "linux/${localEnv:DOCKER_BUILDARCH:amd64}",
      "--tag": "ghcr.io/oven-sh/bun.devcontainer:latest"
    }
  },
  "runArgs": [
    "--ulimit",
    "memlock=-1:-1",
    "--ulimit",
    "nofile=65536:65536",
    "--cap-add=SYS_PTRACE",
    "--security-opt",
    "seccomp=unconfined"
  ],
  "workspaceMount": "source=bun,target=/build/bun,type=volume",
  "workspaceFolder": "/build/bun",
  "mounts": [
    "source=bun-install,target=/home/ubuntu/.bun,type=volume",
    "source=bun-config,target=/home/ubuntu/.config,type=volume"
  ],

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  "forwardPorts": [3000, 8081, 8080]

  // Uncomment the next line to run commands after the container is created - for example installing curl.
  // "postCreateCommand": "apt-get update && apt-get install -y curl",

  // Uncomment when using a ptrace-based debugger like C++, Go, and Rust

  // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker.
  // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],

  // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
  // "remoteUser": "vscode"
}
