{ config, lib, pkgs, ... }: let inherit (lib) mkIf mkForce ; cfg = config.services.kanidm.server; domainName = "idm.sorre.xyz"; in { security.acme."${domainName}" = { group = "kanidm"; postRun = '' cp --dereference --verbose {cert,key,chain}.pem /var/lib/kanidm/ chown kanidm:kanidm /var/lib/kanidm/{cert,key,chain}.pem chmod 400 /var/lib/kanidm/{cert,key,chain}.pem ''; reloadServices = [ "kanidm.service" ]; }; services.kanidm = { package = pkgs.kanidm_1_11; server = { enable = false; settings = { version = "2"; role = "WriteReplica"; bindaddress = "127.0.0.1:8443"; domain = domainName; origin = "https://${domainName}"; online_backup = { path = "/var/lib/backups/kanidm"; # at 22:00 every day schedule = "00 22 * * *"; versions = 5; }; tls_chain = "/var/lib/kanidm/chain.pem"; tls_key = "/var/lib/kanidm/key.pem"; }; }; }; systemd.services.kanidm = mkIf cfg.enable { # TODO: backups that aren't editable by the service itself serviceConfig.StateDirectory = mkForce "kanidm backups/kanidm"; }; }