{ pkgs, lib, config, ... }: let inherit ((pkgs.formats.elixirConf {}).lib) mkMap mkAtom mkRaw mkTuple; in { services.akkoma = { enable = true; initSecrets = false; patches.configurableFromDatabase = true; # frontends.mastodon = { # package = ; # name = "mastodon-fe"; # ref = "stable"; # }; extraPackages = with pkgs; [ zip unzip exiftool ffmpeg_5-headless graphicsmagick-imagemagick-compat ]; config = { ":pleroma".":instance" = { name = "My Akkoma instance"; description = "Akkoma instance description"; email = "user@localhost"; registration_open = false; federating = false; upload_dir = "/data/uploads"; static_dir = "/data/akkoma/static"; }; ":pleroma"."Pleroma.Web.Endpoint" = { url.host = config.myAkkomaContainerOptions.domain; http.ip = config.myAkkomaContainerOptions.localAddress; http.port = config.myAkkomaContainerOptions.localPort; }; ":pleroma"."Pleroma.Uploaders.Local".uploads = "/data/uploads"; ":pleroma".":mrf".policies = map mkRaw [ "Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy" "Pleroma.Web.ActivityPub.MRF.TagPolicy" "Pleroma.Web.ActivityPub.MRF.SimplePolicy" ]; ":pleroma".":mrf_simple".accept = [ (mkTuple ["good.instance" "good!"]) ]; ":pleroma"."Pleroma.Web.Endpoint".secret_key_base = { _secret = "/run/secrets/akkotest/key-base"; }; ":pleroma"."Pleroma.Web.Endpoint".signing_salt = { _secret = "/run/secrets/akkotest/signing-salt"; }; ":pleroma"."Pleroma.Web.Endpoint".live_view.signing_salt = { _secret = "/run/secrets/akkotest/liveview-salt"; }; ":web_push_encryption".":vapid_details".private_key = { _secret = "/run/secrets/akkotest/vapid-private"; }; ":web_push_encryption".":vapid_details".public_key = { _secret = "/run/secrets/akkotest/vapid-public"; }; ":joken".":default_signer" = { _secret = "/run/secrets/akkotest/jwt-signer"; }; }; }; }