= Workflows
:toc:

These are where my workflows are defined and configured.
Basically, workflows are mainly graphical sessions concerned with aesthetics and impose a structured way of using things, this may include Unix rices and good 'ol reliable desktop configurations like my link:./a-happy-gnome[GNOME config].
This is where modules will define how you're going to interact with the computer whether you should use something ranging from a full-fledged desktop environment with bells and whistles to a minimalist desktop environment only composing of a window manager, a terminal, and a bar.




[#design-constraints]
== Design constraints

The following list is the summary which can also serve as a guideline to developing a workflow module.

* All workflow modules should be enabled through `workflows.enable` option containing the names of the workflows to be used.=

* While there is no convention for naming workflow modules, they are mostly expected to be enabled with a reverse DNS-like scheme (e.g., `workflows.enable = [ "one.foodogsquared.MoseyBranch" ]`).
This is mainly to easily create custom desktop sessions where they are typically named this way.

* Custom themes should be configured in `workflows.workflows` namespace (e.g., `options.workflows.workflows.a-happy-gnome`, `options.workflows.workflows.simple-way`).
This is expected to contain options specific for that workflow module such as an extra list of applications to be installed, additional extensions, and hardware-specific options.

* No configuring display managers or localization.
This is expected more to be configured by the user themselves and it makes the workflow modules more composable.
