# nsx module init

Scaffold a new NSX custom-module directory with metadata, CMake, headers, and source stubs.

## Usage

```text
nsx module init [-h] [--name NAME]
                       [--type {algorithm,backend_specific,board,portable_api,runtime,sdk_provider,soc,tooling}]
                       [--summary SUMMARY] [--version VERSION]
                       [--dependency DEPENDENCY] [--board BOARD] [--soc SOC]
                       [--toolchain TOOLCHAIN] [--force]
                       module_dir
```

## Arguments

| Option | Value | Default | Description |
| --- | --- | --- | --- |
| module_dir | value | required | Directory to create for the module skeleton |

## Options

| Option | Value | Default | Description |
| --- | --- | --- | --- |
| --name NAME | value | optional | Logical module name (defaults to the directory name) |
| --type TYPE | algorithm \| backend_specific \| board \| portable_api \| runtime \| sdk_provider \| soc \| tooling | runtime | NSX module type for the generated metadata |
| --summary SUMMARY | value | optional | One-line module summary to seed into nsx-module.yaml |
| --version VERSION | value | 0.1.0 | Initial semantic version for the module |
| --dependency DEPENDENCY | repeatable | optional | Required module dependency to add to the skeleton; repeat as needed |
| --board BOARD | repeatable | optional | Compatible board to declare; repeat as needed (defaults to *) |
| --soc SOC | repeatable | optional | Compatible SoC to declare; repeat as needed (defaults to *) |
| --toolchain TOOLCHAIN | repeatable | optional | Compatible toolchain to declare; repeat as needed (defaults to arm-none-eabi-gcc) |
| --force | flag | optional | Allow writing into a non-empty destination directory |

## Notes

This is the normal starting point for third-party and app-local modules. Validate and
register the generated module afterwards.

```bash
nsx module init my-sensor-driver

nsx module init my-sensor-driver \
    --type backend_specific \
    --summary "I2C driver for the XYZ ambient light sensor." \
    --dependency nsx-core \
    --dependency nsx-i2c \
    --soc apollo510 \
    --soc apollo510b \
    --soc apollo5b
```

The skeleton contains `nsx-module.yaml`, `CMakeLists.txt`, `README.md`,
`includes-api/<module_name>/...` and `src/<module_name>.c`.

`-v/--verbose`, `-q/--quiet` are parsed by `nsx` itself, so they go before the command name, as `nsx -v module init`.
