# `Nerves.Package`
[🔗](https://github.com/nerves-project/nerves/blob/v1.14.1/lib/nerves/package.ex#L8)

Defines a Nerves package struct and helper functions.

A Nerves package is a Mix application that defines the configuration for a
Nerves system or Nerves toolchain. For more details, see the Nerves
[system documentation](https://hexdocs.pm/nerves/systems.html#package-configuration)

# `t`

```elixir
@type t() :: %Nerves.Package{
  app: atom(),
  build_runner: {module(), Keyword.t()},
  compilers: [atom()],
  config: Keyword.t(),
  dep: :project | :path | :hex | :git,
  dep_opts: Keyword.t(),
  env: %{required(String.t()) =&gt; String.t()},
  path: binary(),
  platform: atom(),
  type:
    :system | :package | :toolchain | :system_platform | :toolchain_platform,
  version: Version.t()
}
```

# `config`

```elixir
@spec config(Application.app(), Path.t()) :: Keyword.t()
```

Get Mix.Project config for an application

# `load_config`

```elixir
@spec load_config({app :: atom(), path :: String.t()}) :: t()
```

Loads the package config and parses it into a `%Package{}`

# `shell`

```elixir
@spec shell(t() | nil) :: :ok
```

Starts an interactive shell with the working directory set
to the package path

---

*Consult [api-reference.md](api-reference.md) for complete listing*
