nixos/modules/services/xrdp.nix

38 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-11-16 15:51:47 +08:00
hostname = mkOption { type = types.nullOr (types.nonEmptyListOf types.nonEmptyStr); default = null; };
2023-09-05 17:17:43 +08:00
};
2024-05-22 10:44:41 +08:00
config = let inherit (inputs.config.nixos.services) xrdp;
in inputs.lib.mkIf xrdp.enable (inputs.lib.mkMerge
2023-09-05 17:17:43 +08:00
[
{
services.xrdp =
2024-03-01 18:49:14 +08:00
{
enable = true;
port = xrdp.port;
openFirewall = true;
2024-03-04 18:29:39 +08:00
defaultWindowManager = "${inputs.pkgs.plasma-workspace}/bin/startplasma-x11";
2024-03-01 18:49:14 +08:00
};
nixos.services.xray.client.v2ray-forwarder.noproxyTcpPorts = [ xrdp.port ];
2023-09-05 17:17:43 +08:00
}
(
2024-05-22 10:44:41 +08:00
inputs.lib.mkIf (xrdp.hostname != null)
2023-09-13 21:19:08 +08:00
(
2024-05-22 10:44:41 +08:00
let mainDomain = builtins.elemAt xrdp.hostname 0;
2023-09-13 21:19:08 +08:00
in
{
2023-11-09 22:19:37 +08:00
services.xrdp =
let keydir = inputs.config.security.acme.certs.${mainDomain}.directory;
in { sslCert = "${keydir}/full.pem"; sslKey = "${keydir}/key.pem"; };
2024-03-23 00:43:44 +08:00
nixos.services.acme.cert.${mainDomain} =
{ domains = xrdp.hostname; group = inputs.config.systemd.services.xrdp.serviceConfig.Group; };
2023-09-13 21:19:08 +08:00
}
)
2023-09-05 17:17:43 +08:00
)
2023-09-05 20:10:46 +08:00
]);
2023-09-05 17:17:43 +08:00
}