28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# Validation Layer
|
|
|
|
This folder contains **shape/type validation only**.
|
|
|
|
## Rule of Responsibility
|
|
- `validation/*`: syntax checks, required fields, allowed keys, and value types.
|
|
- `intermediate/*` and service modules: semantic checks (contradictions/conflicts/business rules).
|
|
|
|
Examples:
|
|
- Shape/type (validation): endpoint has `content` attrset, `port` is int, unknown keys are rejected.
|
|
- Semantic (kept outside): `force_ssl = true` with `port = 80`, duplicate routes on same host key, incompatible TLS groupings.
|
|
|
|
## Files
|
|
- `validation/endpoints.nix`
|
|
: Validates endpoint schema and content schema for `proxy` and `web`.
|
|
- `validation/auto_ssh.nix`
|
|
: Validates `devices`/`auto_ssh` shapes and remote port map structure.
|
|
- `validation/network_devices.nix`
|
|
: Validates local device shapes and DHCP reservation field shapes used by intermediate DHCP/DNS models.
|
|
- `validation/storage.nix`
|
|
: Validates storage config entry shapes consumed by intermediate storage derivation.
|
|
- `validation/secrets.nix`
|
|
: Validates keystore entry/reference shapes consumed by config modules before service migration.
|
|
- `validation/service/*`
|
|
: Validates service-backed config shapes consumed by service modules, such as `kiwix`, `qbittorrent`, and `continuwuity`.
|
|
|
|
## Usage Pattern
|
|
Import validators and run them first, then apply semantic checks locally.
|