{ config, ... }: { nixpkgs.overlays = [ (final: prev: rec { mastodon = prev.mastodon.override { version = "4.2.5"; patches = [ (final.fetchpatch { url = "https://github.com/mastodon/mastodon/compare/v4.2.4...v4.2.5.patch"; hash = "sha256-CtzYV1i34s33lV/1jeNcr9p/x4Es1zRaf4l1sNWVKYk="; }) ]; }; }) ]; services.mastodon = { enable = true; database = { createLocally = false; user = "mastodon"; name = "mastodon"; host = "/run/postgresql/"; passwordFile = "/var/lib/secrets/mastodon/postgres.txt"; }; redis = { createLocally = false; host = "127.0.0.1"; port = 6379; }; configureNginx = false; webPort = 55001; sidekiqPort = 55003; streamingProcesses = 11; vapidPrivateKeyFile = "/var/lib/secrets/mastodon/vapid-private-key.txt"; vapidPublicKeyFile = "/var/lib/secrets/mastodon/vapid-public-key.txt"; secretKeyBaseFile = "/var/lib/secrets/mastodon/secret-key-base.txt"; otpSecretFile = "/var/lib/secrets/mastodon/otp-secret.txt"; localDomain = "m.comfycamp.space"; mediaAutoRemove = { olderThanDays = 14; }; extraConfig = { SMTP_SSL = "true"; SMTP_ENABLE_STARTTLS_AUTO = "false"; SMTP_AUTH_METHOD = "plain"; RAILS_LOG_LEVEL = "warn"; }; smtp = { host = "comfycamp.space"; user = "mastodon@comfycamp.space"; port = 465; passwordFile = "/var/lib/secrets/mastodon/smtp-password.txt"; fromAddress = "mastodon@comfycamp.space"; createLocally = false; authenticate = true; }; }; systemd.services.mastodon-web = { serviceConfig.ReadWritePaths = "/hdd/mastodon-public-system"; }; systemd.services.mastodon-sidekiq-all = { serviceConfig.ReadWritePaths = "/hdd/mastodon-public-system"; }; }