diff options
| author | Isabella Bastaja <isabella@sorre.xyz> | 2026-08-30 12:50:50 +0200 |
|---|---|---|
| committer | Isabella Bastaja <isabella@sorre.xyz> | 2026-08-30 17:13:19 +0200 |
| commit | 83bf1be6c86f6d8ef506ba9d6046424f4ce18b69 (patch) | |
| tree | 0c272a219063f4ea8e4ea0927dd51799d2b134cb /hosts/tower/web/idm.nix | |
| parent | d170b9258571efaa32ac1f623404c54f7d4d37d1 (diff) | |
tower: WIP kanidm service
Diffstat (limited to 'hosts/tower/web/idm.nix')
| -rw-r--r-- | hosts/tower/web/idm.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/hosts/tower/web/idm.nix b/hosts/tower/web/idm.nix new file mode 100644 index 0000000..8c93097 --- /dev/null +++ b/hosts/tower/web/idm.nix @@ -0,0 +1,54 @@ +{ + 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"; + }; +} |
