mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
63 lines
1.9 KiB
Nix
63 lines
1.9 KiB
Nix
# The LDAP server of choice. Though, it really uses OpenLDAP as the backend so
|
|
# it's really more like a nice frontend for it so you don't have to experience
|
|
# the pain of managing an OpenLDAP server.
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
ldapDomain = "ldap.${config.networking.domain}";
|
|
in {
|
|
services.portunus = {
|
|
enable = true;
|
|
|
|
port = 8168;
|
|
domain = ldapDomain;
|
|
|
|
ldap = {
|
|
searchUserName = "admin";
|
|
suffix = "dc=foodogsquared,dc=one";
|
|
tls = true;
|
|
};
|
|
|
|
seedPath = let
|
|
seedData = {
|
|
groups = [
|
|
{
|
|
name = "admin-team";
|
|
long_name = "Portunus Administrators";
|
|
members = [ "foodogsquared" ];
|
|
permissions = {
|
|
portunus.is_admin = true;
|
|
ldap.can_read = true;
|
|
};
|
|
}
|
|
];
|
|
users = [
|
|
{
|
|
login_name = "foodogsquared";
|
|
given_name = "Gabriel";
|
|
family_name = "Arazas";
|
|
email = "foodogsquared@${config.networking.domain}";
|
|
ssh_public_keys = let
|
|
readFiles = list: lib.lists.map (path: lib.readFile path) list;
|
|
in readFiles [
|
|
../../../../users/home-manager/foo-dogsquared/files/ssh-key.pub
|
|
../../../../users/home-manager/foo-dogsquared/files/ssh-key-2.pub
|
|
];
|
|
password.from_command = [ "${pkgs.coreutils}/bin/cat" config.sops.secrets."plover/ldap/users/foodogsquared/password".path ];
|
|
}
|
|
];
|
|
};
|
|
settingsFormat = pkgs.formats.json { };
|
|
in settingsFormat.generate "portunus-seed" seedData;
|
|
};
|
|
|
|
# Getting this to be accessible in the reverse proxy of choice.
|
|
services.nginx.virtualHosts."${ldapDomain}" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:${toString config.services.portunus.port}";
|
|
};
|
|
};
|
|
}
|