This contains Nix library code for defining the grids.
It has all the details of how each type of node in our grid is configured, and does know about morph (so defines deployment.secrets, and has the logic for collecting data defined by other nodes); and defines options (i.e. grid.*) for things specific to how we configure grids (i.e. grid.publicKeyPath), metadata about nodes that we use on other nodes (i.e. grid.monitoringvpnIPv4 which is used to define various things on the monitoring node).
Each top-level module here defines one type of node, with all (or at least most) of the configuration necessary for that node.
grid
----
Specific grid definitions live in subdirectories beneath this directory.
They consist almost exclusively setting options defined in morph/lib (and few options defined elsewhere), and then delegating to the morph/lib modules.
These are mostly modelled on upstream nixos modules, are generally fairly configurable (they don't tend to hard-code paths, they can be enabled or disabled), and they don't know anything about morph (e.g. deployment.secrets) or how the different grids are configured (i.e. grid.publicKeyPath). Each module here tends to define one service (or group of related services) or feature.
Eventually, all of these will be imported automatically, and controlled by services.private-storage.*.enabled options.