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

# Add Homebrew packages and apps to your Orchard setup

> Edit the package list files to control which Homebrew CLI tools, GUI apps, and Mac App Store applications Orchard installs on your machine.

Orchard separates packages into three sources — Homebrew CLI tools, Homebrew Cask GUI apps, and Mac App Store applications — each managed by its own list file. To add a package, you edit the relevant list file and re-run `provision.sh`. No changes to the install scripts themselves are required.

<Tip>
  You can find Homebrew package names at [formulae.brew.sh](https://formulae.brew.sh/) and cask names at [formulae.brew.sh/cask](https://formulae.brew.sh/cask/).
</Tip>

## Homebrew CLI packages

`brew-packages/package-list.bash` defines the command-line tools Orchard installs via `brew install`. The default list looks like this:

```bash brew-packages/package-list.bash theme={null}
#!/bin/bash -euo pipefail

package_list=(\
  'devcontainer' \
  'mas' \
)

export package_list
```

To add a package, append its Homebrew formula name as a quoted, backslash-continued entry in the `package_list` array. For example, to add `git-lfs`:

```bash brew-packages/package-list.bash theme={null}
#!/bin/bash -euo pipefail

package_list=(\
  'devcontainer' \
  'mas' \
  'git-lfs' \
)

export package_list
```

## Homebrew Cask GUI apps

`cask-packages/package-list.bash` lists GUI applications installed via `brew install --cask`. These are full macOS applications distributed through Homebrew's cask registry.

```bash cask-packages/package-list.bash theme={null}
#!/bin/bash -euo pipefail

package_list=(\
  '1password' \
  'docker' \
  'gcloud-cli' \
  'google-chrome' \
  'microsoft-teams' \
  'visual-studio-code' \
  'zoom' \
)

export package_list
```

Cask names are listed at [formulae.brew.sh/cask](https://formulae.brew.sh/cask/). To add an app, add its cask name to the array. For example, to add Figma:

```bash cask-packages/package-list.bash theme={null}
#!/bin/bash -euo pipefail

package_list=(\
  '1password' \
  'docker' \
  'gcloud-cli' \
  'google-chrome' \
  'figma' \
  'microsoft-teams' \
  'visual-studio-code' \
  'zoom' \
)

export package_list
```

## Mac App Store apps

`mac-app-store/application-list.bash` is empty by default. Orchard uses the `mas` CLI to install App Store apps, but you must have already purchased or downloaded each app on your Apple ID before provisioning.

```bash mac-app-store/application-list.bash theme={null}
#!/bin/bash -euo pipefail

application_list=()

export application_list
```

To add an app, put its exact App Store name as a string in the `application_list` array. Orchard searches the App Store by name and installs the first exact match it finds. For example, to add Xcode:

```bash mac-app-store/application-list.bash theme={null}
#!/bin/bash -euo pipefail

application_list=(
  'Xcode'
)

export application_list
```

<Note>
  The app name must match the App Store listing exactly. If the search returns no exact match, the install step will fail. You can verify the name by searching for the app in the Mac App Store app or at [apps.apple.com](https://apps.apple.com).
</Note>

## Applying your changes

After editing any package list file, re-run provisioning to install your additions. Orchard skips packages that are already installed, so it's safe to run repeatedly.

<Steps>
  <Step title="Find the package name">
    Look up the exact name for the package you want to add:

    * Homebrew CLI tools: [formulae.brew.sh](https://formulae.brew.sh/)
    * Homebrew Cask apps: [formulae.brew.sh/cask](https://formulae.brew.sh/cask/)
    * Mac App Store apps: search in the Mac App Store and copy the app name exactly
  </Step>

  <Step title="Edit the package list file">
    Open the relevant file and add the package name as a new entry in the array, following the same quoting and formatting as existing entries.
  </Step>

  <Step title="Re-run provision.sh">
    From the Orchard root directory, run:

    ```bash theme={null}
    ./provision.sh
    ```

    Orchard will install only the new packages and skip everything already present.
  </Step>
</Steps>
