> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexdevelopment.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Garage locations

> Define public, job and gang garages in config/garages.lua — or skip the file entirely and use the in-game editor.

All static locations live in `config/garages.lua`. Every garage and impound
name must be **unique** across all sections.

<Info>
  You can also create and edit garages entirely in-game with
  [`/garagesadmin`](/nex_garages/garage-editor) — no config editing or restart
  required.
</Info>

## Entry fields

Each location supports:

| Field                      | Type                            | Purpose                                                          |
| -------------------------- | ------------------------------- | ---------------------------------------------------------------- |
| `coords`                   | `vector3`                       | Interaction point                                                |
| `spawn`                    | `vector4` or `{ vector4, ... }` | Vehicle spawn point(s) — with a list, the first free one is used |
| `distance`                 | number                          | Interaction radius                                               |
| `type`                     | `"car"` \| `"air"` \| `"sea"`   | Vehicle category the garage accepts                              |
| `vehicleClasses`           | `{ "D", "C" }`                  | Optional speed tiers; omit to allow all classes                  |
| `job` / `gang`             | `{ "name", ... }`               | Restrict to jobs or gangs (job, gang and impound garages)        |
| `blip`                     | `{ id, color, scale }`          | Map blip; omit to use the section default                        |
| `hideBlip`                 | boolean                         | Hide this garage's blip                                          |
| `markers` / `hideMarkers`  | table / boolean                 | Ground marker style                                              |
| `maxVehicles` / `storeFee` | number                          | Per-garage capacity and parking fee (see `config/features.lua`)  |

## Public garages

`Nex.Config.PublicGarages` ships with car garages across the map plus boat
and air garages. Section-level toggles:

* `uniqueLocations` — vehicles are only retrievable from the garage they're
  parked at (turn off for "any garage" retrieval)
* `interiors` — enables the walk-in showroom ("Go inside")
* `showBlips` / `uniqueBlips` — blip visibility and naming

<Warning>
  If you rename the default `Legion Square` garage, also change the
  `garage_id` default in your vehicles table — stored vehicles reference
  garages by name.
</Warning>

## Job garages

Job garages come in two flavours, set per location with `vehiclesType`:

* **`"owned"`** — members store and retrieve their own vehicles here (a
  personal garage gated by job)
* **`"spawner"`** — a fleet menu that spawns fresh vehicles from a configured
  list

Spawner entries support:

```lua theme={null}
vehicles = {
  [1] = {
    model = "police",     -- spawn code
    plate = "PD",         -- plate prefix; false = fully random
    minJobGrade = 0,      -- rank lock
    nickname = "Police car",
    livery = 1,
    extras = { 1, 2 },
    maxMods = true,       -- max engine/brakes/transmission/suspension/armor + turbo
  },
}
```

Set `showLiveriesExtrasMenu = true` on the location to let players pick a
livery and extras before spawning.

<Warning>
  Plate prefixes generate random suffixes — never configure a prefix that
  could collide with plates already in your database.
</Warning>

## Gang garages

`Nex.Config.GangGarages` works like job garages but gates by gang. Gangs
resolve automatically on QBCore/Qbox; on ESX, wire your gang system into
`bridge/client.lua` + `bridge/server.lua` and set
`customESXIntegration = true`.

## Garage interiors

`Nex.Config.Interior` configures the walk-in showroom: the IPL shell, the
entrance, a short entry cutscene, and up to eleven display positions filled
with the vehicles parked at that garage. Disable interiors per section
(`interiors = false`) if you don't want them.
