power saving, starr, jelly, akkoma

This commit is contained in:
Daniel Kauss Serna 2026-03-20 13:59:08 +01:00
parent 8f6d63909a
commit a0d19a672e
20 changed files with 439 additions and 22 deletions

128
services/fedi.nix Normal file
View file

@ -0,0 +1,128 @@
{ config, pkgs, ... }:
let
frontendConfig = {
alwaysShowSubjectInput = true;
background = "/static/bg.png";
collapseMessageWithSubject = false;
greentext = false;
hideFilteredStatuses = false;
hideMutedPosts = false;
hidePostStats = false;
hideSitename = false;
hideUserStats = false;
loginMethod = "password";
logo = "/static/logo.png";
logoMargin = ".1em";
logoMask = true;
logoLeft = false;
nsfwCensorImage = "";
postContentType = "text/plain";
redirectRootLogin = "/main/friends";
redirectRootNoLogin = "/main/all";
showFeaturesPanel = true;
showInstanceSpecificPanel = true;
sidebarRight = false;
subjectLineBehavior = "email";
theme = "kemonomimi-theme";
webPushNotifications = true;
};
in
{
# probably move them out? atm they stay since they only serve kemonomimi
services.cloudflared.enable = true;
services.cloudflared.tunnels."65c093ce-a3ac-4369-b240-2169514be106" = {
credentialsFile = "/etc/secrets/65c093ce-a3ac-4369-b240-2169514be106.json";
ingress = {
"kemonomimi.pet" = "http://localhost:8679";
"fedi.kemonomimi.pet" = "http://localhost:8678";
"media.kemonomimi.pet" = "http://localhost:8678";
};
default = "http_status:404";
};
services.akkoma.enable = true;
# ill have to enable this
# services.akkoma.config.":pleroma".":media_proxy" = {
# enabled = true;
# proxy_opts.redirect_on_failure = true;
# };
services.akkoma.config = {
":pleroma" = {
"Pleroma.Captcha".enabled = false;
":instance" = {
name = "Kemonomimi.pet";
description = "Akkoma instance for kemonomimi.pet";
email = "admin@kemonomimi.pet";
registrations_open = false;
healthcheck = true;
allow_relay = true;
public = true;
};
"Pleroma.Web.Endpoint" = {
url.host = "fedi.kemonomimi.pet";
url.port = 443;
url.scheme = "https";
http.ip = "127.0.0.1";
http.port = 8678;
};
":configurable_from_database" = false;
"Pleroma.Upload".base_url = "https://media.kemonomimi.pet:443/media";
":frontend_configurations" = {
pleroma_fe = frontendConfig;
};
};
};
services.akkoma.frontends.admin.name = "admin-fe";
services.akkoma.frontends.admin.ref = "stable";
services.akkoma.frontends.admin.package = pkgs.akkoma-admin-fe;
services.akkoma.frontends.primary.name = "akkoma-fe";
services.akkoma.frontends.primary.ref = "stable";
services.akkoma.frontends.primary.package =
pkgs.runCommand "akkoma-fe"
{
config = builtins.toJSON frontendConfig;
nativeBuildInputs = with pkgs; [
jq
lndir
];
passAsFile = [ "config" ];
}
''
mkdir $out
lndir ${pkgs.akkoma-fe} $out
rm $out/static/config.json
jq -s add ${pkgs.akkoma-fe}/static/config.json $configPath \
> $out/static/config.json
'';
services.akkoma.extraStatic =
let
mkPackage = src: pkgs.runCommand "akkoma-asset" {} ''
cp -r ${src} $out
'';
in {
"favicon.png" = mkPackage ../akkoma-static/favicon.png;
"static" = mkPackage ../akkoma-static/static;
"instance" = mkPackage ../akkoma-static/instance;
};
systemd.services.local-static-http = {
description = "Temporary server for under construction";
wants = [ "network.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.python3}/bin/python3 -m http.server 8679 --bind 127.0.0.1";
WorkingDirectory = "/var/www/kemonomimi.pet";
Restart = "on-failure";
User = "daniel";
};
wantedBy = [ "multi-user.target" ];
};
}