nixos/modules/services/xrdp.nix

45 lines
1.3 KiB
Nix
Raw Normal View History

2023-09-05 17:17:43 +08:00
inputs:
{
options.nixos.services.xrdp = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = false; };
port = mkOption { type = types.ints.unsigned; default = 3389; };
2023-09-13 21:19:08 +08:00
hostname = mkOption
{
2023-09-13 21:21:13 +08:00
type = types.nullOr (types.oneOf [ types.nonEmptyStr (types.listOf types.nonEmptyStr) ]);
2023-09-13 21:19:08 +08:00
default = null;
};
2023-09-05 17:17:43 +08:00
};
config =
let
inherit (inputs.lib) mkMerge mkIf;
inherit (inputs.config.nixos.services) xrdp;
2023-09-05 20:10:46 +08:00
in mkIf xrdp.enable (mkMerge
2023-09-05 17:17:43 +08:00
[
{
services.xrdp =
{
enable = true;
port = xrdp.port;
openFirewall = true;
defaultWindowManager = "startplasma-x11";
};
}
(
mkIf (xrdp.hostname != null)
2023-09-13 21:19:08 +08:00
(
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;
}
)
2023-09-05 17:17:43 +08:00
)
2023-09-05 20:10:46 +08:00
]);
2023-09-05 17:17:43 +08:00
}