Fediversity/services/fediversity/default.nix

79 lines
2.4 KiB
Nix
Raw Normal View History

2024-09-17 17:31:58 +02:00
{ lib, config, ... }:
let
2024-09-24 16:42:53 +02:00
inherit (lib) mkOption mkEnableOption mkForce;
inherit (lib.types) types;
2024-11-11 17:25:42 +01:00
in
{
imports = [
./garage
2025-02-14 18:37:48 +01:00
./mastodon
./pixelfed.nix
2025-02-14 18:44:35 +01:00
./peertube
];
options = {
fediversity = {
2024-09-20 16:34:08 +02:00
enable = mkEnableOption "the collection of services bundled under Fediversity";
2024-09-17 17:31:58 +02:00
domain = mkOption {
type = types.str;
description = ''
root domain for the Fediversity services
For instance, if this option is set to `foo.example.com`, then
Pixelfed might be under `pixelfed.foo.example.com`.
'';
2024-09-17 17:31:58 +02:00
};
2024-09-20 16:34:08 +02:00
pixelfed.enable = mkEnableOption "default Fediversity Pixelfed configuration";
2024-09-17 17:31:58 +02:00
2024-11-11 16:16:27 +01:00
temp = mkOption {
description = "options that are only used while developing; should be removed eventually";
2024-11-11 17:25:42 +01:00
default = { };
2024-11-11 16:16:27 +01:00
type = types.submodule {
options = {
cores = mkOption {
description = "number of cores; should be obtained from NixOps4";
type = types.int;
};
};
};
};
internal = mkOption {
description = "options that are only meant to be used internally; change at your own risk";
2024-11-11 17:25:42 +01:00
default = { };
type = types.submodule {
options = {
## REVIEW: Do we want to recreate options under
## `fediversity.internal` or would we rather use the options from
## the respective services? See Taeer's comment:
## https://git.fediversity.eu/taeer/simple-nixos-fediverse/pulls/22#issuecomment-124
pixelfed.domain = mkOption {
type = types.str;
default = "pixelfed.${config.fediversity.domain}";
};
};
};
2024-09-17 17:31:58 +02:00
};
};
};
2024-09-20 18:51:21 +02:00
config = {
## FIXME: This should clearly go somewhere else; and we should have a
## `staging` vs. `production` setting somewhere.
security.acme = {
acceptTerms = true;
defaults.email = "nicolas.jeannerod+fediversity@moduscreate.com";
# defaults.server = "https://acme-staging-v02.api.letsencrypt.org/directory";
2024-09-20 18:51:21 +02:00
};
2024-09-24 16:42:53 +02:00
## NOTE: For a one-machine deployment, this removes the need to provide an
## `s3.garage.<domain>` domain. However, this will quickly stop working once
## we go to multi-machines deployment.
fediversity.garage.api.domain = mkForce "s3.garage.localhost";
2024-09-20 18:51:21 +02:00
};
}