nixos-config/nixos/profiles/services/ntfy/default.nix

58 lines
1.6 KiB
Nix
Raw Normal View History

2024-12-15 01:20:55 +08:00
{
config,
lib,
mylib,
data,
2024-12-15 01:20:55 +08:00
...
}:
{
sops.secrets."cloudflare_origin_ntfy_private_key" = {
opentofu = {
enable = true;
};
restartUnits = [ "caddy.service" ];
};
2024-12-15 01:20:55 +08:00
services.ntfy-sh = {
enable = true;
settings = {
base-url = "https://ntfy.rebmit.workers.moe";
2024-12-15 02:52:27 +08:00
listen-http = "127.0.0.1:${toString config.networking.ports.ntfy}";
2024-12-15 01:20:55 +08:00
auth-default-access = "deny-all";
behind-proxy = true;
};
};
systemd.services.ntfy-sh.serviceConfig = mylib.misc.serviceHardened // {
AmbientCapabilities = lib.mkForce [ "" ];
CapabilityBoundingSet = lib.mkForce [ "" ];
2024-12-15 01:20:55 +08:00
DynamicUser = lib.mkForce false;
};
systemd.services.caddy.serviceConfig = {
LoadCredential = [
"cloudflare_aop_ntfy_ca_cert:${builtins.toFile "cloudflare_aop_ca_certificate" data.cloudflare_aop_ca_certificate}"
"cloudflare_origin_ntfy_cert:${builtins.toFile "cloudflare_origin_ntfy_certificate" data.cloudflare_origin_ntfy_certificate}"
"cloudflare_origin_ntfy_key:${config.sops.secrets."cloudflare_origin_ntfy_private_key".path}"
];
2024-12-15 01:20:55 +08:00
};
services.caddy.virtualHosts."ntfy.rebmit.workers.moe" =
let
credentialPath = "/run/credentials/caddy.service";
in
{
extraConfig = ''
tls ${credentialPath}/cloudflare_origin_ntfy_cert ${credentialPath}/cloudflare_origin_ntfy_key {
client_auth {
mode require_and_verify
trust_pool file ${credentialPath}/cloudflare_aop_ntfy_ca_cert
}
}
reverse_proxy ${config.services.ntfy-sh.settings.listen-http}
'';
};
2024-12-15 01:20:55 +08:00
services.restic.backups.b2.paths = [ "/var/lib/ntfy-sh" ];
}