home-server/services/akkoma.nix
Ellie b8402a9049 Initial commit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:57:00 -08:00

103 lines
2.4 KiB
Nix

{ pkgs, ... }:
let
inherit ((pkgs.formats.elixirConf { }).lib) mkRaw;
mangane = pkgs.stdenv.mkDerivation rec {
pname = "mangane";
version = "1.19.4";
src = pkgs.fetchzip {
url = "https://github.com/BDX-town/Mangane/releases/download/${version}/static.zip";
hash = "sha256-Z+3rhqAlPX1sO0Lswky0rMe9pZmdFGWrckHDJnaCyQU=";
stripRoot = false;
};
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r dist/* $out/
runHook postInstall
'';
};
in
{
networking.firewall.interfaces.wg0.allowedTCPPorts = [ 4000 ];
services.postgresql = {
enable = true;
};
services.akkoma = {
enable = true;
frontends = {
primary = {
package = mangane;
name = "mangane";
ref = "stable";
};
admin = {
package = pkgs.akkoma-admin-fe;
name = "admin-fe";
ref = "stable";
};
};
config = {
":pleroma" = {
"Pleroma.Web.Endpoint" = {
http = {
ip = "10.10.0.2";
port = 4000;
};
url = {
host = "akkoma.ellie.town";
scheme = "https";
port = 443;
};
};
"Pleroma.Upload" = {
base_url = "https://media.ellie.town";
filters = map mkRaw [
"Pleroma.Upload.Filter.Exiftool.StripMetadata"
];
};
":instance" = {
name = "ellie town";
email = "wizzeh@protonmail.com";
notify_email = "akkoma@ellie.town";
description = "ellie's akkoma instance";
registrations_open = false;
invites_enabled = false;
account_approval_required = false;
federating = true;
allow_relay = true;
languages = ["en"];
public = false;
safe_dm_mentions = true;
healthcheck = true;
limit = 5000;
};
":configurable_from_database" = true;
":http_security" = {
sts = true;
referrer_policy = "same-origin";
};
":mrf" = {
policies = map mkRaw [
"Pleroma.Web.ActivityPub.MRF.SimplePolicy"
"Pleroma.Web.ActivityPub.MRF.HellthreadPolicy"
"Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy"
];
};
":mrf_hellthread" = {
delist_threshold = 10;
reject_threshold = 20;
};
};
};
};
}