[
  {
    "default": "",
    "doc": "PostgreSQL connection URL (`postgres://…`). Required.",
    "name": "DATABASE_URL",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "",
    "doc": "Default `data/addons`; an existing `./addons` (the pre-restructure default) keeps working so older installs are not orphaned.",
    "name": "PELTY_ADDONS_DIR",
    "used_in": [
      "crates/pelty-api/src/addons.rs"
    ]
  },
  {
    "default": "\"extensions/addons/dist\"",
    "doc": "Directory with the bundled first-party addon zips (default `extensions/addons/dist`).",
    "name": "PELTY_ADDONS_DIST",
    "used_in": [
      "crates/pelty-api/src/wasm_addons.rs"
    ]
  },
  {
    "default": "\"data/addons\"",
    "doc": "Root of per-addon data directories (default `data/addons`), one `<root>/<id>` each.",
    "name": "PELTY_ADDON_DATA_DIR",
    "used_in": [
      "crates/pelty-wasm/src/runtime.rs"
    ]
  },
  {
    "default": "",
    "doc": "Admin caps for addon limits: memory MiB, timeout seconds, fuel (defaults: the built-in maxima).",
    "name": "PELTY_ADDON_MAX_FUEL",
    "used_in": [
      "crates/pelty-wasm/src/lib.rs"
    ]
  },
  {
    "default": "",
    "doc": "Admin caps for addon limits: memory MiB, timeout seconds, fuel (defaults: the built-in maxima).",
    "name": "PELTY_ADDON_MAX_MEMORY_MIB",
    "used_in": [
      "crates/pelty-wasm/src/lib.rs"
    ]
  },
  {
    "default": "",
    "doc": "Admin caps for addon limits: memory MiB, timeout seconds, fuel (defaults: the built-in maxima).",
    "name": "PELTY_ADDON_MAX_TIMEOUT_SECS",
    "used_in": [
      "crates/pelty-wasm/src/lib.rs"
    ]
  },
  {
    "default": "",
    "doc": "Password for `admin create` (otherwise the first line of stdin).",
    "name": "PELTY_ADMIN_PASSWORD",
    "used_in": [
      "crates/pelty-server/src/main.rs"
    ]
  },
  {
    "default": "10",
    "doc": "Max auth attempts per IP per minute.",
    "name": "PELTY_AUTH_RATE_PER_MINUTE",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"backups\"",
    "doc": "Where database backups are written (default `backups`).",
    "name": "PELTY_BACKUP_DIR",
    "used_in": [
      "crates/pelty-api/src/backup.rs"
    ]
  },
  {
    "default": "\"0.0.0.0:8080\"",
    "doc": "Listen address.",
    "name": "PELTY_BIND",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "true",
    "doc": "Set the `Secure` flag on cookies. Must be true behind HTTPS.",
    "name": "PELTY_COOKIE_SECURE",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "10",
    "doc": "Database pool size.",
    "name": "PELTY_DB_MAX_CONNECTIONS",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"en\"",
    "doc": "Language for visitors without a preference.",
    "name": "PELTY_DEFAULT_LOCALE",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "",
    "doc": "`PELTY_DOCKER=1` marks a container: addon exec is disabled.",
    "name": "PELTY_DOCKER",
    "used_in": [
      "crates/pelty-wasm/src/runtime.rs"
    ]
  },
  {
    "default": "\"target/docs\"",
    "doc": "Folder written by `make docs` (default `target/docs`).",
    "name": "PELTY_DOCS_DIR",
    "used_in": [
      "crates/pelty-api/src/dev_docs.rs"
    ]
  },
  {
    "default": "",
    "doc": "`true`/`1` makes `/docs` readable without signing in (default: staff only).",
    "name": "PELTY_DOCS_PUBLIC",
    "used_in": [
      "crates/pelty-api/src/dev_docs.rs"
    ]
  },
  {
    "default": "",
    "doc": "Base64 32-byte key for secrets at rest (TOTP). No default: 2FA enrolment is refused while unset.",
    "name": "PELTY_ENCRYPTION_KEY",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"frontend/dist\"",
    "doc": "Built frontend served as the SPA.",
    "name": "PELTY_FRONTEND_DIR",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"locales\"",
    "doc": "Translation JSON files.",
    "name": "PELTY_LOCALES_DIR",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "false",
    "doc": "Log as JSON lines instead of text.",
    "name": "PELTY_LOG_JSON",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"PeltyCMS <no-reply@localhost>\".to_string",
    "doc": "From address for outgoing mail.",
    "name": "PELTY_MAIL_FROM",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"pg_dump\"",
    "doc": "`pg_dump` binary used for backups (default `pg_dump` on PATH).",
    "name": "PELTY_PG_DUMP",
    "used_in": [
      "crates/pelty-api/src/backup.rs"
    ]
  },
  {
    "default": "\"extensions/plugins\"",
    "doc": "Webhook plugin manifests.",
    "name": "PELTY_PLUGINS_DIR",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "",
    "doc": "`1`/`true` lets provisioning modules reach link-local addresses (off by default).",
    "name": "PELTY_PROVISION_ALLOW_LINK_LOCAL",
    "used_in": [
      "crates/pelty-provisioning/src/http.rs"
    ]
  },
  {
    "default": "\"http://localhost:8080\"",
    "doc": "Absolute base URL used in email links, e.g. `https://billing.example.com`.",
    "name": "PELTY_PUBLIC_URL",
    "used_in": [
      "crates/pelty-core/src/config.rs",
      "crates/pelty-api/src/routes/billing.rs"
    ]
  },
  {
    "default": "24 * 30",
    "doc": "Sessions end after this many hours regardless of activity.",
    "name": "PELTY_SESSION_ABSOLUTE_HOURS",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "60 * 24",
    "doc": "Sign out after this many idle minutes.",
    "name": "PELTY_SESSION_IDLE_MINUTES",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "",
    "doc": "SMTP URL (`smtps://user:pass@host:465`). Unset: mail is logged, not sent.",
    "name": "PELTY_SMTP_URL",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "\"extensions/themes\"",
    "doc": "Theme folders (`theme.json`).",
    "name": "PELTY_THEMES_DIR",
    "used_in": [
      "crates/pelty-core/src/config.rs"
    ]
  },
  {
    "default": "",
    "doc": "EU VIES VAT check API base URL (default: the public EU endpoint).",
    "name": "PELTY_VIES_URL",
    "used_in": [
      "crates/pelty-api/src/vies.rs"
    ]
  },
  {
    "default": "",
    "doc": "Compiled-module cache directory (default `<tmp>/pelty-wasm-cache`).",
    "name": "PELTY_WASM_CACHE_DIR",
    "used_in": [
      "crates/pelty-wasm/src/runtime.rs"
    ]
  }
]