62 lines
1.9 KiB
Nix
62 lines
1.9 KiB
Nix
{
|
|
pkgs,
|
|
nix-packages,
|
|
config,
|
|
...
|
|
}: let
|
|
raccoon-emoji = pkgs.fetchzip {
|
|
url = "https://volpeon.ink/art/emojis/raccoon/raccoon.zip";
|
|
sha256 = "sha256-GkMiYAP0LS0TL6GMDG4R4FkGwFjhIwn3pAWUmCTUfHg=";
|
|
stripRoot = false;
|
|
};
|
|
static_dir = pkgs.stdenvNoCC.mkDerivation {
|
|
name = "akkoma-static";
|
|
src = pkgs.emptyDirectory;
|
|
nativeBuildInputs = with pkgs; [xorg.lndir];
|
|
akkoma_fe = nix-packages.packages.${pkgs.system}.pleroma-fe;
|
|
akkoma_admin_fe = nix-packages.packages.${pkgs.system}.admin-fe;
|
|
raccoon_emoji = raccoon-emoji;
|
|
dontUnpack = false;
|
|
installPhase = ''
|
|
mkdir -p $out/frontends/pleroma-fe/stable
|
|
lndir $akkoma_fe $out/frontends/pleroma-fe/stable
|
|
mkdir -p $out/frontends/admin-fe/stable
|
|
lndir $akkoma_admin_fe $out/frontends/admin-fe/stable
|
|
mkdir -p $out/emoji/raccoons
|
|
lndir $raccoon_emoji $out/emoji/raccoons
|
|
'';
|
|
};
|
|
akkconfig = builtins.replaceStrings ["%AKKOMA_STATIC_DIR%"] ["${static_dir}"] (builtins.readFile ./akkoma.exs);
|
|
in {
|
|
services.pleroma = {
|
|
enable = true;
|
|
package = nix-packages.packages.${pkgs.system}.akkoma;
|
|
configs = [akkconfig];
|
|
user = "akkoma";
|
|
group = "akkoma";
|
|
secretConfigFile = config.sops.secrets."services/akkoma.exs".path;
|
|
};
|
|
systemd.services.pleroma.path = with pkgs; [exiftool imagemagick ffmpeg];
|
|
services.postgresql.ensureDatabases = ["akkoma"];
|
|
services.postgresql.ensureUsers = [
|
|
{
|
|
name = "akkoma";
|
|
ensurePermissions = {"DATABASE akkoma" = "ALL PRIVILEGES";};
|
|
}
|
|
];
|
|
sops.secrets."services/akkoma.exs" = {owner = "akkoma";};
|
|
services.caddy.virtualHosts."akko.chir.rs" = {
|
|
useACMEHost = "chir.rs";
|
|
extraConfig = ''
|
|
import baseConfig
|
|
handle /media_attachments/* {
|
|
redir https://mastodon-assets.chir.rs{uri} permanent
|
|
}
|
|
handle {
|
|
reverse_proxy {
|
|
to http://127.0.0.1:4000
|
|
}
|
|
}
|
|
'';
|
|
};
|
|
}
|