xrdp: allow multiple hostnames

This commit is contained in:
2023-09-13 21:19:08 +08:00
parent 9847e21bff
commit f5ff5c3a9e
2 changed files with 18 additions and 10 deletions

View File

@@ -463,7 +463,7 @@
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
xrdp = { enable = true; hostname = "nas.chn.moe"; };
xrdp = { enable = true; hostname = [ "nas.chn.moe" "office.chn.moe" ]; };
groupshare.enable = true;
smartd.enable = true;
};

View File

@@ -4,14 +4,16 @@ inputs:
{
enable = mkOption { type = types.bool; default = false; };
port = mkOption { type = types.ints.unsigned; default = 3389; };
hostname = mkOption { type = types.nullOr types.str; default = null; };
hostname = mkOption
{
type = types.nullOr types.oneOf [ types.nonEmptyStr (types.listOf types.nonEmptyStr) ];
default = null;
};
};
config =
let
inherit (inputs.lib) mkMerge mkIf;
inherit (inputs.localLib) stripeTabs attrsToList;
inherit (inputs.config.nixos.services) xrdp;
inherit (builtins) map listToAttrs concatStringsSep toString filter attrValues;
in mkIf xrdp.enable (mkMerge
[
{
@@ -25,12 +27,18 @@ inputs:
}
(
mkIf (xrdp.hostname != null)
{
services.xrdp = let keydir = inputs.config.security.acme.certs.${xrdp.hostname}.directory; in
{ sslCert = "${keydir}/full.pem"; sslKey = "${keydir}/key.pem"; };
nixos.services.acme = { enable = true; certs = [ xrdp.hostname ]; };
security.acme.certs.${xrdp.hostname}.group = inputs.config.systemd.services.xrdp.serviceConfig.Group;
}
(
let
mainDomain = if builtins.typeOf xrdp.hostname == "string" then xrdp.hostname
else builtins.elemAt xrdp.hostname 0;
in
{
services.xrdp = let keydir = inputs.config.security.acme.certs.${mainDomain}.directory; in
{ sslCert = "${keydir}/full.pem"; sslKey = "${keydir}/key.pem"; };
nixos.services.acme = { enable = true; certs = [ xrdp.hostname ]; };
security.acme.certs.${mainDomain}.group = inputs.config.systemd.services.xrdp.serviceConfig.Group;
}
)
)
]);
}