Fediversity Options

/ to filter ↑ ↓ to browse Esc to return to the filter

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.