# geastandardpbr/ overrides

`geastandardpbr/` is gitignored (USB-imported GE deployment package). Edits made
locally to support new hardware models do not survive a fresh import.

This file tracks the local edits so they can be re-applied after a re-import.
Apply by hand or via the snippet at the bottom.

## OptiPlex 7080 (added 2026-05-08)

Reason: a 7080 arrived on the floor; check-bios.cmd was returning
"no update in catalog" because no 7080 entry existed in the catalog files.

### `geastandardpbr/Tools/user_selections.json`

Add to `HardwareModelSelection` (insert before the existing `7090 / D12 OptiPlex Family` entry):

```json
{
  "Model": "7080",
  "Id": "D11 OptiPlex Family"
}
```

### `geastandardpbr/Deploy/Control/HardwareDriver.json`

Add a new entry (insert before the existing `D12 OptiPlex Family / 7090` entry):

```json
{
  "manufacturer": "Dell",
  "manufacturerfriendlyname": "Dell",
  "family": "D11 OptiPlex Family",
  "models": "OptiPlex 7080",
  "modelsfriendlyname": "7080",
  "FileName": "",
  "DestinationDir": "*destinationdir*\\Deploy\\Out-of-box Drivers\\Dell_11\\OptiPlex\\D11 OptiPlex Family",
  "url": "",
  "hash": "",
  "size": 0,
  "modifiedDate": "0001-01-01T00:00:00",
  "osId": "20,21",
  "aOsIds": [
    "20",
    "21"
  ],
  "imagedisk": 0
}
```

`FileName`, `url`, `hash`, `size` left empty. `scripts/download-drivers.py` resolves
the actual driver pack from Dell's catalog by model name (`extract_model_ids`
matches "7080") and downloads the latest pack at run time.

### Side artifacts already on the live PXE server (10.9.100.1)

- `\\10.9.100.1\winpeapps\_shared\BIOS\OptiPlex_7080_1.37.0.exe` (39.8 MB, BIOS update)
- `\\10.9.100.1\image-upload\Deploy\Out-of-box Drivers\Dell_11\OptiPlex\D11 OptiPlex Family\win11_70809ntr8_a09.zip` (Win11 driver pack, 2.6 GB)
- `\\10.9.100.1\winpeapps\_shared\BIOS\models.txt` includes the 7080 line.

These persist regardless of `geastandardpbr/` rebuilds. Only the model-registry
edits need to be re-applied after a USB re-import.

## Re-applying after a fresh `geastandardpbr/` import

Either edit the two JSON files by hand following the snippets above, or run:

```bash
cd /home/camp/projects/pxe
python3 - <<'PY'
import json, sys
us = 'geastandardpbr/Tools/user_selections.json'
hd = 'geastandardpbr/Deploy/Control/HardwareDriver.json'

data = json.load(open(us))
add = {"Model": "7080", "Id": "D11 OptiPlex Family"}
for d in data:
    if "HardwareModelSelection" in d:
        if not any(m.get("Model") == "7080" for m in d["HardwareModelSelection"]):
            for i, m in enumerate(d["HardwareModelSelection"]):
                if m.get("Id") == "D12 OptiPlex Family":
                    d["HardwareModelSelection"].insert(i, add)
                    break
json.dump(data, open(us, 'w'), indent=2)

data = json.load(open(hd))
add = {
  "manufacturer": "Dell",
  "manufacturerfriendlyname": "Dell",
  "family": "D11 OptiPlex Family",
  "models": "OptiPlex 7080",
  "modelsfriendlyname": "7080",
  "FileName": "",
  "DestinationDir": "*destinationdir*\\Deploy\\Out-of-box Drivers\\Dell_11\\OptiPlex\\D11 OptiPlex Family",
  "url": "",
  "hash": "",
  "size": 0,
  "modifiedDate": "0001-01-01T00:00:00",
  "osId": "20,21",
  "aOsIds": ["20", "21"],
  "imagedisk": 0
}
if not any(e.get("models") == "OptiPlex 7080" for e in data):
    for i, e in enumerate(data):
        if e.get("family") == "D12 OptiPlex Family" and e.get("models") == "7090":
            data.insert(i, add)
            break
json.dump(data, open(hd, 'w'), indent=2)
print("done")
PY
```
