Classes and nodes usable by Boxer
=================================

Classes and nodes are YAML files parsed by reclass.  See reclass
documentation for more info on its syntax and structure.

Additional syntax needed for parsing by Boxer is covered below.


Classes
-------

Lowercase classes are reusable low-level classes.
Never include documentation, avoid pkg-auto, and use pkg-avoid only to
reflect actual package conflicts.

Capital classes (first letter uppercase) are high-level classes.
Always include documentation (or only inherit other classes that do).


Nodes
-----

Nodes should only use capital classes, to have all actions documented.


Parameters
----------

doc: Documentation
doc-headline: Headline for a group of classes
doc-pkg: Description of purpose of pkg lists in this class
doc-tweak: Description of purpose of tweak in this class

pkg: Packages to install
pkg-auto: Packages to mark auto-installed if installed
pkg-avoid: Packages to remove

tweak: Tweaks to apply after package actions


Packages
--------

Packages are binary packages registered in APT.

One way to resolve package lists for classes is to to try mark most
possible packages on an actual system as auto-installed (e.g. hit "M"
with aptitude in fullscreen mode), and then dump the list of remaining
manually installed packages with "apt-mark showmanual".


Tweaks
------

Tweaks are code snippets executed by a POSIX shell.

Avoid ${...} (reclass use it for parameter interpolation),
or \n (apparently converted too early to newlines in debian-installer),
e.g. by adding dummy quotes like this:
"dpkg-query -Wf='$''{Depends}\''n' foo".

Write tweaks for use with debian-installer, using either of below which
will be stripped when generating script target:
  * "chroot /target "
  * "/target/"
