Fediversity Options
data-model Link copied!
The Fediversity data model's own options, declared in core/lib/data-model.nix.
- Type
submodule
- Declared in
lib/data-model.nix
data-model.components Link copied!
Collection of Fediversity components
- Type
attribute set of (submodule)
- Declared in
lib/data-model.nix
data-model.components.<name>.artwork Link copied!
The file in this repository that gives the scalable artwork the
component is shown by: a function
{ pkgs, sources }: { icon; iconDark ? null; }, where iconDark
is the variant for a dark background. A surface in dark mode
shows iconDark in place of icon, or icon if it is null.
core/lib/artwork.nix calls the file.
A path and not the artwork, so that the plan of a node holds no
store path. The file takes the artwork out of the upstream
source (pkgs.<name>.src) instead of keeping it in this
repository, so that the artwork an operator sees is the artwork
the project ships. For a project whose source has no logo, it
takes it from another repository of the project, pinned in
npins. null for a component that no surface shows artwork
for.
- Type
null or absolute path- Default
null
- Declared in
lib/data-model.nix
data-model.components.<name>.configurable Link copied!
Whether the operator form shows this component and the options
of its module. An optional component is always configurable,
because the operator must be able to turn it on. Other
components can declare their module options for the
deployment only, so they are configurable only when they say so.
- Type
boolean- Default
optional
- Declared in
lib/data-model.nix
data-model.components.<name>.description Link copied!
What the component is, for an operator choosing it.
A component states its own only where its part in a deployment
is not what the project describes: valkey is a cache node
with one instance per application, which pkgs.valkey has no
way to say.
- Type
string- Default
package.meta.description
- Declared in
lib/data-model.nix
data-model.components.<name>.homepage Link copied!
Home page of the project behind the component.
- Type
null or string- Default
package.meta.homepage
- Declared in
lib/data-model.nix
data-model.components.<name>.module Link copied!
Operator-facing configuration options for the component
- Type
module- Default
<function>
- Declared in
lib/data-model.nix
data-model.components.<name>.name Link copied!
The name the component is called by, capitalized the way the
project capitalizes itself (PeerTube, OpenBao).
Stated here because nixpkgs carries no display name: pname is
an attribute name, lowercase by convention, while every surface
an operator reads shows the project its own way.
- Type
string- Default
the attribute name the component is declared under
- Declared in
lib/data-model.nix
data-model.components.<name>.optional Link copied!
Whether the operator turns this component on and off: it is an
application in the glossary sense, software the operator picks.
Components left at false are infrastructure that the
applications need, and a deployment runs them without a choice
from the operator.
- Type
boolean- Default
false
- Declared in
lib/data-model.nix
data-model.configuration Link copied!
Configuration type declaring options to be set by operators. Carries every declared component, so the deploy path (default-configuration, which enables every roster node including the infrastructure nodes) type-checks against it.
- Type
optionType
- Declared in
lib/data-model.nix
data-model.environments Link copied!
Run-time environments for Fediversity components to be deployed to
- Type
attribute set of (submodule)
- Declared in
lib/data-model.nix
data-model.environments.<name>.config-mapping Link copied!
The mapping from an operator configuration to a deployment: it
resolves each enabled component's required resources and then
applies this environment's resource-mapping. Declared as a
type-checked function whose output is a deployment
(env-output).
- Type
type-checked function type (configuration -> deployment)
- Declared in
lib/data-model.nix
data-model.environments.<name>.deployment Link copied!
Generates a deployment from a configuration by applying this
environment's resource policies to the components' resource
mappings. By default this is just config-mapping applied, i.e.
the end-to-end "configuration in, deployment out" entry point for
the environment.
- Type
function: configuration -> deployment (applies the env's policies)
- Declared in
lib/data-model.nix
data-model.environments.<name>.implementation Link copied!
Maps the resources required by the deployed components to the
resources this environment actually offers, producing something
that can be deployed. This is the environment-specific glue a
hosting provider writes; its exact function type
(resource-mapping.function-type) is fixed per deployment.
- Type
function: required component resources -> deployment
- Declared in
lib/data-model.nix
data-model.environments.<name>.resource-mapping Link copied!
The function type for implementation: it takes the
components' required resources (plus a deployment name) and
returns a deployment (env-output). Declared as a type-checked
function so inputs and outputs are validated.
- Type
type-checked function type (resources -> deployment)
- Declared in
lib/data-model.nix
data-model.environments.<name>.resources Link copied!
Resources the hosting provider makes available in this
environment, keyed by resource name, each holding that resource's
policy (how the provider supplies it). Setting this is optional;
it is a place to declare provider-side resource information for use
in the resource mapping. The concrete shape of each entry is fixed
by the matching resource's policy module under core/resources,
so it depends on which resources the environment wires in.
- Type
per-resource policies the hosting provider makes available (shape set by each resource's policy module)
- Declared in
lib/data-model.nix
data-model.resources Link copied!
Collection of deployment resources that can be required by components and policed by hosting providers
- Type
attribute set of (submodule)
- Declared in
lib/data-model.nix
data-model.resources.<name>.description Link copied!
Description of the resource to help component module authors and hosting providers to work with it
- Type
string
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy Link copied!
Options for configuring the resource policy for the hosting provider, a description of how the resource is made available
- Type
module
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy.apply Link copied!
Apply the policy to the requests
- Type
function that evaluates to a(n) unspecified value
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy.apply-input-type Link copied!
The type of the argument of apply. A policy whose
own process keys the requests sets it. Each call of
apply checks only the outer shape of its argument
against this type.
- Type
optionType
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy.process Link copied!
Select the requests for this resource from the given components, then apply the policy to them
- Type
function that evaluates to a(n) unspecified value
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy.resource-type Link copied!
The type of resource this policy configures
- Type
optionType
- Declared in
lib/data-model.nix
data-model.resources.<name>.policy.routing Link copied!
A module that the resource merges into the eval of the contract provider. The module selects the provider and gives the provider its context, for example an address and a port. A resource that wraps no contract does not read this option.
- Type
module- Default
{ }
- Declared in
lib/data-model.nix
data-model.resources.<name>.request Link copied!
Options for declaring resource requirements by a component, a description of how the resource is consumed or accessed
- Type
module- Default
{ }
- Declared in
lib/data-model.nix
data-model.supportingRequests Link copied!
Supporting resource requests not tied to a single component, made available to every environment.
- Type
module- Default
{
options = { };
}
- Declared in
lib/data-model.nix
operator-config Link copied!
Operator-facing configuration for a Fediversity deployment, as set through the hosting provider's front end. This is the schema that drives the deployment form of the front end.
- Type
submodule
- Declared in
setups
operator-config.enable Link copied!
Whether to enable your Fediversity configuration.
- Type
boolean- Default
true- Example
false
- Declared in
setups
operator-config.deployment-method Link copied!
What to run: a deployment method (ssh-hosts / tf-hosts /
tf-incus-hosts / k8s-hosts) or a non-deploy operator effect
(tf-incus-image / octodns-zone). Pick one, then fill in its
settings. The tag key is the method/effect; its value is that
entry's settings. A method deploys the enabled applications; an
effect runs a standalone action. Always set -- there is no "no
selection" state (issue #723).
- Type
attribute-tagged union with choices: k8s-hosts, octodns-zone, ssh-hosts, tf-hosts, tf-incus-hosts, tf-incus-image, tf-incus-operator-hosts- Default
{
tf-incus-operator-hosts = { };
}
- Declared in
setups
operator-config.deployment-method.k8s-hosts Link copied!
Deploy to a kubernetes cluster via OpenTofu, with each node as a pod, and an HTTP state backend.
- Type
submodule
- Declared in
effects/default.nix
operator-config.deployment-method.k8s-hosts.applications Link copied!
Per-application configuration the operator sets to enable and configure each Fediversity application.
- Type
null or (submodule)- Default
null
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.authelia Link copied!
Shared SSO node (Authelia). Its daemon config, the aggregated OIDC clients, the lldap first-factor backend, the OpenBao secret delivery, and the SMTP notifier account are wired by the setup (hosts-common.nix) from the oidc resource on the node that runs this component; this app model carries the node's SPIFFE identity and the operator's portal settings. Shared by the hosting-provider and operator groups (each group runs its own SSO portal).
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.authelia.settings Link copied!
Portal settings, from authelia's configuration file.
- Type
authelia's portal settings- Default
{ }
- Declared in
components/shared/authelia
operator-config.deployment-method.k8s-hosts.applications.lldap Link copied!
Shared LDAP directory node (lldap). Its daemon config, the per-consumer directory provisioning, and the OpenBao bind-password generation are wired by the setup (hosts-common.nix) from the directory.ldap resource on the node that runs this component; this app model carries the node's SPIFFE identity and the operator's mail settings. Shared by the hosting-provider and operator groups (each group runs its own directory).
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.lldap.senderName Link copied!
Name of the sender of the directory's mail, such as a password reset.
- Type
string- Default
"Fediversity Directory"
- Declared in
components/shared/lldap
operator-config.deployment-method.k8s-hosts.applications.lldap.settings Link copied!
Directory settings, from lldap's configuration file.
- Type
lldap's directory settings- Default
{ }
- Declared in
components/shared/lldap
operator-config.deployment-method.k8s-hosts.applications.mastodon Link copied!
Self-hosted, globally interconnected microblogging software based on ActivityPub
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.mastodon.enable Link copied!
Whether to enable Enable a Mastodon server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/mastodon
operator-config.deployment-method.k8s-hosts.applications.mastodon.mediaAutoRemove.enable Link copied!
Automatically remove remote media attachments and preview cards older than the configured amount of days.
Recommended in <https://docs.joinmastodon.org/admin/setup/>.
- Type
boolean- Default
true- Example
false
- Declared in
components/operator/mastodon
operator-config.deployment-method.k8s-hosts.applications.mastodon.mediaAutoRemove.olderThanDays Link copied!
How old remote media needs to be in order to be removed.
- Type
signed integer- Default
30- Example
14
- Declared in
components/operator/mastodon
operator-config.deployment-method.k8s-hosts.applications.mastodon.settings Link copied!
Instance settings, from the environment Mastodon reads its configuration from.
- Type
mastodon's instance settings- Default
{ }
- Declared in
components/operator/mastodon
operator-config.deployment-method.k8s-hosts.applications.mastodon.subdomain Link copied!
Label the Mastodon instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"mastodon"
- Declared in
components/operator/mastodon
operator-config.deployment-method.k8s-hosts.applications.peertube Link copied!
Free software to take back control of your videos
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.peertube.enable Link copied!
Whether to enable Enable a PeerTube server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/peertube
operator-config.deployment-method.k8s-hosts.applications.peertube.settings Link copied!
Instance settings, from PeerTube's own configuration file.
- Type
peertube's instance settings- Default
null
- Declared in
components/operator/peertube
operator-config.deployment-method.k8s-hosts.applications.peertube.subdomain Link copied!
Label the PeerTube instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"peertube"
- Declared in
components/operator/peertube
operator-config.deployment-method.k8s-hosts.applications.pixelfed Link copied!
Federated image sharing platform
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.k8s-hosts.applications.pixelfed.enable Link copied!
Whether to enable Enable a Pixelfed server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/pixelfed
operator-config.deployment-method.k8s-hosts.applications.pixelfed.maxUploadSize Link copied!
Max upload size with units.
- Type
size, such as `8M`- Default
"8M"
- Declared in
components/operator/pixelfed
operator-config.deployment-method.k8s-hosts.applications.pixelfed.settings Link copied!
Instance settings, from the environment Pixelfed reads its configuration from.
- Type
pixelfed's instance settings- Default
{ }
- Declared in
components/operator/pixelfed
operator-config.deployment-method.k8s-hosts.applications.pixelfed.subdomain Link copied!
Label the Pixelfed instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"pixelfed"
- Declared in
components/operator/pixelfed
operator-config.deployment-method.k8s-hosts.domain Link copied!
Apex domain under which the services will be deployed.
- Type
host name- Example
"example.com"
- Declared in
setups
operator-config.deployment-method.k8s-hosts.email Link copied!
Password reset email for the SSO's admin user.
- Type
string- Example
"operator@example.com"
- Declared in
setups
operator-config.deployment-method.k8s-hosts.httpBackendAddress Link copied!
Address of the OpenTofu HTTP state backend REST endpoint (TF_HTTP_ADDRESS).
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.k8s-hosts.registry Link copied!
Address of the image registry, as host[:port][/path] (K8S_REGISTRY).
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.octodns-zone Link copied!
Manage DNS records for a zone via OctoDNS.
- Type
submodule
- Declared in
effects/default.nix
operator-config.deployment-method.octodns-zone.apiTokenFile Link copied!
Path, on the deployer, to the file holding the service's API token. A
PATH and never a value, so no credential reaches the Nix store: the
effect reads it at run time. Empty means the provider needs no token
(the self-hosted bind path authenticates with a TSIG key instead).
- Type
string- Default
""- Example
"/run/secrets/dns-api-token"
- Declared in
setups
operator-config.deployment-method.octodns-zone.domain Link copied!
The DNS domain (zone) to manage.
- Type
string- Example
"example.tld"
- Declared in
setups
operator-config.deployment-method.octodns-zone.provider Link copied!
The OctoDNS provider to use, see <https://octodns.readthedocs.io/en/latest/#providers>.
- Type
string- Example
"powerdns"
- Declared in
setups
operator-config.deployment-method.octodns-zone.secretFiles Link copied!
The files from which to read the secrets to use with the provider.
- Type
attribute set of string- Default
{ }- Example
{
token = "/path/to/token";
}
- Declared in
setups
operator-config.deployment-method.octodns-zone.serverUrl Link copied!
URL of the authoritative-DNS service's API, scheme and port included.
Empty means the domain is served by the deployment's own bind node.
- Type
string- Default
""- Example
"https://pdns.example.org"
- Declared in
setups
operator-config.deployment-method.ssh-hosts Link copied!
Deploy over SSH to existing hosts: a shared SSH identity plus, per node, where to reach it and any identity override.
- Type
submodule
- Declared in
effects/default.nix
operator-config.deployment-method.ssh-hosts.applications Link copied!
Per-application configuration the operator sets to enable and configure each Fediversity application.
- Type
null or (submodule)- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.authelia Link copied!
Shared SSO node (Authelia). Its daemon config, the aggregated OIDC clients, the lldap first-factor backend, the OpenBao secret delivery, and the SMTP notifier account are wired by the setup (hosts-common.nix) from the oidc resource on the node that runs this component; this app model carries the node's SPIFFE identity and the operator's portal settings. Shared by the hosting-provider and operator groups (each group runs its own SSO portal).
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.authelia.settings Link copied!
Portal settings, from authelia's configuration file.
- Type
authelia's portal settings- Default
{ }
- Declared in
components/shared/authelia
operator-config.deployment-method.ssh-hosts.applications.lldap Link copied!
Shared LDAP directory node (lldap). Its daemon config, the per-consumer directory provisioning, and the OpenBao bind-password generation are wired by the setup (hosts-common.nix) from the directory.ldap resource on the node that runs this component; this app model carries the node's SPIFFE identity and the operator's mail settings. Shared by the hosting-provider and operator groups (each group runs its own directory).
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.lldap.senderName Link copied!
Name of the sender of the directory's mail, such as a password reset.
- Type
string- Default
"Fediversity Directory"
- Declared in
components/shared/lldap
operator-config.deployment-method.ssh-hosts.applications.lldap.settings Link copied!
Directory settings, from lldap's configuration file.
- Type
lldap's directory settings- Default
{ }
- Declared in
components/shared/lldap
operator-config.deployment-method.ssh-hosts.applications.mastodon Link copied!
Self-hosted, globally interconnected microblogging software based on ActivityPub
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.mastodon.enable Link copied!
Whether to enable Enable a Mastodon server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/mastodon
operator-config.deployment-method.ssh-hosts.applications.mastodon.mediaAutoRemove.enable Link copied!
Automatically remove remote media attachments and preview cards older than the configured amount of days.
Recommended in <https://docs.joinmastodon.org/admin/setup/>.
- Type
boolean- Default
true- Example
false
- Declared in
components/operator/mastodon
operator-config.deployment-method.ssh-hosts.applications.mastodon.mediaAutoRemove.olderThanDays Link copied!
How old remote media needs to be in order to be removed.
- Type
signed integer- Default
30- Example
14
- Declared in
components/operator/mastodon
operator-config.deployment-method.ssh-hosts.applications.mastodon.settings Link copied!
Instance settings, from the environment Mastodon reads its configuration from.
- Type
mastodon's instance settings- Default
{ }
- Declared in
components/operator/mastodon
operator-config.deployment-method.ssh-hosts.applications.mastodon.subdomain Link copied!
Label the Mastodon instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"mastodon"
- Declared in
components/operator/mastodon
operator-config.deployment-method.ssh-hosts.applications.peertube Link copied!
Free software to take back control of your videos
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.peertube.enable Link copied!
Whether to enable Enable a PeerTube server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/peertube
operator-config.deployment-method.ssh-hosts.applications.peertube.settings Link copied!
Instance settings, from PeerTube's own configuration file.
- Type
peertube's instance settings- Default
null
- Declared in
components/operator/peertube
operator-config.deployment-method.ssh-hosts.applications.peertube.subdomain Link copied!
Label the PeerTube instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"peertube"
- Declared in
components/operator/peertube
operator-config.deployment-method.ssh-hosts.applications.pixelfed Link copied!
Federated image sharing platform
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.applications.pixelfed.enable Link copied!
Whether to enable Enable a Pixelfed server on the machine.
- Type
boolean- Default
false- Example
true
- Declared in
components/operator/pixelfed
operator-config.deployment-method.ssh-hosts.applications.pixelfed.maxUploadSize Link copied!
Max upload size with units.
- Type
size, such as `8M`- Default
"8M"
- Declared in
components/operator/pixelfed
operator-config.deployment-method.ssh-hosts.applications.pixelfed.settings Link copied!
Instance settings, from the environment Pixelfed reads its configuration from.
- Type
pixelfed's instance settings- Default
{ }
- Declared in
components/operator/pixelfed
operator-config.deployment-method.ssh-hosts.applications.pixelfed.subdomain Link copied!
Label the Pixelfed instance is served under, below the domain of the deployment (e.g. mastodon for mastodon.example.org).
- Type
DNS label- Default
"pixelfed"
- Declared in
components/operator/pixelfed
operator-config.deployment-method.ssh-hosts.defaults Link copied!
Shared SSH identity applied to every node, unless a node overrides it.
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.defaults.keyFile Link copied!
Path to the SSH private key the deployer reads (a reference, not key material). Null uses an agent / the deployer default.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.defaults.sshOpts Link copied!
Extra SSH options applied to every node, each one a bare Key=Value such as Port=2222. The deploy puts -o in front of each item.
- Type
list of bare `ssh` option `Key=Value` (without `-o`)- Default
[ ]
- Declared in
setups
operator-config.deployment-method.ssh-hosts.defaults.username Link copied!
SSH user to connect as. Null uses the deployer default.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.domain Link copied!
Apex domain under which the services will be deployed.
- Type
host name- Example
"example.com"
- Declared in
setups
operator-config.deployment-method.ssh-hosts.email Link copied!
Password reset email for the SSO's admin user.
- Type
string- Example
"operator@example.com"
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes Link copied!
Per-node SSH connection info, one optional entry per node in the roster of each group that runs an application. A null field of a set node falls back: host to the roster FQDN, identity fields to defaults.
- Type
submodule- Default
{ }
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia Link copied!
SSH connection info for this node. Omit to inherit defaults and the roster FQDN.
- Type
null or (submodule)- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia.host Link copied!
Host (address) to reach this node over SSH. Null uses the node's roster FQDN.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia.hostKey Link copied!
Public SSH host key of this node, one line of its ssh_host_*_key.pub. The deploy accepts only this key. Null accepts the key of the first connection.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia.keyFile Link copied!
Path to the SSH private key for this node. Null inherits defaults.keyFile.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia.sshOpts Link copied!
SSH options for this node, each one a bare Key=Value such as Port=2222. The deploy puts -o in front of each item. A list replaces defaults.sshOpts; null inherits it.
- Type
null or (list of bare `ssh` option `Key=Value` (without `-o`))- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.authelia.username Link copied!
SSH user to connect as for this node. Null inherits defaults.username.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.lldap Link copied!
SSH connection info for this node. Omit to inherit defaults and the roster FQDN.
- Type
null or (submodule)- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.lldap.host Link copied!
Host (address) to reach this node over SSH. Null uses the node's roster FQDN.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.lldap.hostKey Link copied!
Public SSH host key of this node, one line of its ssh_host_*_key.pub. The deploy accepts only this key. Null accepts the key of the first connection.
- Type
null or string- Default
null
- Declared in
setups
operator-config.deployment-method.ssh-hosts.nodes.lldap.keyFile Link copied!
Path to the SSH private key for this node. Null inherits defaults.keyFile.
- Type
null or string- Default
null
- Declared in
setups
More options load as you scroll.