oxmc d9ed8f52a3 Rename package from vesperprofiled-config-schema to pawletprofiled-config-schema
Matches the profiled fork rename (git.oxmc.me/PawletOS/profiled): schema
package name, install path, debian control fields. Also drops committed
build output (debian/.debhelper, staged package dir, substvars/files) and
adds a .gitignore.

No PawletOS remote exists yet for this repo -- committed locally only,
origin (git.oxmc.me/VesperOS/vesperprofiled-config-schema) untouched.
2026-07-25 00:53:04 -07:00

pawletprofiled-config-schema

Schema definitions package for PawletOS configuration profiles.

Installed at /usr/share/pawletprofiled/schema/profile.schema.yml.


What this package does

pawletprofiled reads this schema at startup to determine which payload types and fields are valid for the current installation. Any .vconfig profile containing a payload type not listed in allowed-payload-types will be rejected at install time with a clear error.

Shipping the schema separately from the daemon means:

  • Independent updates — schema additions (new payload types, new optional fields) don't require rebuilding or reflashing the daemon binary.
  • OEM restriction — OEMs building PawletOS-based products can ship a trimmed schema that only exposes the configuration surface their platform supports. A digital signage OEM might allow only wifi, cert, kiosk, and mdm. An enterprise desktop OEM might allow everything except kiosk and asam.
  • Schema versioning — the schema-version field is checked by the daemon at startup. A newer daemon with an older schema is always fine. An older daemon with a newer schema logs a warning and falls back to its compiled-in defaults.

OEM customisation

To restrict available payload types, create a replacement Debian package:

1. Copy and trim the schema

cp /usr/share/pawletprofiled/schema/profile.schema.yml \
   my-schema/profile.schema.yml

# Edit my-schema/profile.schema.yml:
# - Remove payload type entries from allowed-payload-types
# - Remove their blocks from the payloads: section
# - Bump schema-version if you consider this a new schema variant

2. Create your package

debian/control:

Package: my-pawletos-config-schema
Architecture: all
Depends: ${misc:Depends}
Provides: pawletprofiled-config-schema
Conflicts: pawletprofiled-config-schema
Replaces: pawletprofiled-config-schema
Description: Trimmed PawletOS profile schema for My Product
 Only allows: wifi, cert, mdm, kiosk, passcode, restrictions.

debian/rules:

#!/usr/bin/make -f
%:
	dh $@
override_dh_auto_install:
	install -Dm 0644 profile.schema.yml \
		debian/my-pawletos-config-schema/usr/share/pawletprofiled/schema/profile.schema.yml

3. Add to your product package list

# In your PawletOS device makefile or product.mk:
PRODUCT_PACKAGES += my-pawletos-config-schema

Because your package Provides: pawletprofiled-config-schema and Conflicts: pawletprofiled-config-schema, apt will automatically use yours in place of the default when both are available.


Schema versioning

The schema-version field in the YAML file follows MAJOR.MINOR.PATCH:

  • PATCH — non-breaking: new optional fields added to existing payload types.
  • MINOR — new payload types added to allowed-payload-types. Older daemons that don't know the new type will accept profiles containing it but log a warning and skip the unknown payload.
  • MAJOR — breaking: required fields renamed, payload types removed, or semantics changed. Daemons older than this MAJOR version must not run with a schema of a higher MAJOR version.

Building the package

dpkg-buildpackage -us -uc -b -A   # Architecture: all, no signing

Files installed

/usr/share/pawletprofiled/schema/profile.schema.yml
S
Description
No description provided
Readme
46 KiB