{
  "name": "Frigate Devcontainer",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "devcontainer",
  "workspaceFolder": "/workspace/frigate",
  "initializeCommand": ".devcontainer/initialize.sh",
  "postCreateCommand": ".devcontainer/post_create.sh",
  "overrideCommand": false,
  "remoteUser": "vscode",
  "features": {
    "ghcr.io/devcontainers/features/common-utils:2": {}
    // Uncomment the following lines to use ONNX Runtime with CUDA support
    // "ghcr.io/devcontainers/features/nvidia-cuda:1": {
    //   "installCudnn": true,
    //   "installNvtx": true,
    //   "installToolkit": true,
    //   "cudaVersion": "12.5",
    //   "cudnnVersion": "9.4.0.58"
    // },
    // "./features/onnxruntime-gpu": {}
  },
  "forwardPorts": [
    8971,
    5000,
    5001,
    5173,
    8554,
    8555
  ],
  "portsAttributes": {
    "8971": {
      "label": "External NGINX",
      "onAutoForward": "silent"
    },
    "5000": {
      "label": "Internal NGINX",
      "onAutoForward": "silent"
    },
    "5001": {
      "label": "Frigate API",
      "onAutoForward": "silent"
    },
    "5173": {
      "label": "Vite Server",
      "onAutoForward": "silent"
    },
    "8554": {
      "label": "gortc RTSP",
      "onAutoForward": "silent"
    },
    "8555": {
      "label": "go2rtc WebRTC",
      "onAutoForward": "silent"
    }
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.vscode-pylance",
        "visualstudioexptteam.vscodeintellicode",
        "mhutchie.git-graph",
        "ms-azuretools.vscode-docker",
        "streetsidesoftware.code-spell-checker",
        "esbenp.prettier-vscode",
        "dbaeumer.vscode-eslint",
        "mikestead.dotenv",
        "csstools.postcss",
        "blanu.vscode-styled-jsx",
        "bradlc.vscode-tailwindcss",
        "charliermarsh.ruff",
        "eamodio.gitlens"
      ],
      "settings": {
        "remote.autoForwardPorts": false,
        "python.formatting.provider": "none",
        "python.languageServer": "Pylance",
        "editor.formatOnPaste": false,
        "editor.formatOnSave": true,
        "editor.formatOnType": true,
        "python.testing.pytestEnabled": false,
        "python.testing.unittestEnabled": true,
        "python.testing.unittestArgs": [
          "-v",
          "-s",
          "./frigate/test"
        ],
        "files.trimTrailingWhitespace": true,
        "eslint.workingDirectories": [
          "./web"
        ],
        "isort.args": [
          "--settings-path=./pyproject.toml"
        ],
        "[python]": {
          "editor.defaultFormatter": "charliermarsh.ruff",
          "editor.formatOnSave": true,
          "editor.codeActionsOnSave": {
            "source.fixAll": true,
            "source.organizeImports": true
          }
        },
        "[json][jsonc]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[jsx][js][tsx][ts]": {
          "editor.codeActionsOnSave": [
            "source.addMissingImports",
            "source.fixAll"
          ],
          "editor.tabSize": 2
        },
        "cSpell.ignoreWords": [
          "rtmp"
        ],
        "cSpell.words": [
          "preact",
          "astype",
          "hwaccel",
          "mqtt"
        ]
      }
    }
  }
}