60 lines
1.4 KiB
Nix
60 lines
1.4 KiB
Nix
# nyx-module/system/service/xrdp.nix
|
|
#
|
|
# XRDP (System Module)
|
|
#
|
|
# Provides:
|
|
# - XRDP remote desktop service
|
|
# - Desktop environment selection for RDP sessions
|
|
# - Optional automatic firewall rule opening
|
|
#
|
|
# Options:
|
|
# - enable -> Enable XRDP system module
|
|
# - defaultWindowManager -> Select Plasma / XFCE / GNOME for remote sessions
|
|
# - port -> TCP port for XRDP (default: 3389)
|
|
# - openFirewall -> Open firewall for XRDP port (default: true)
|
|
#
|
|
|
|
{ lib, config, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.nyx-module.system.service.xrdp;
|
|
in
|
|
{
|
|
options.nyx-module.system.service.xrdp = {
|
|
enable = mkEnableOption "XRDP remote desktop service";
|
|
|
|
defaultWindowManager = mkOption {
|
|
type = types.enum [ "plasma" "xfce" "gnome" ];
|
|
example = "xfce";
|
|
description = ''
|
|
Desktop environment to start for XRDP sessions.
|
|
'';
|
|
};
|
|
|
|
port = mkOption {
|
|
type = types.port;
|
|
default = 3389;
|
|
description = "TCP port for XRDP to listen on.";
|
|
};
|
|
|
|
openFirewall = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = ''
|
|
If true, open the system firewall for the XRDP TCP port.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
services.xrdp = {
|
|
enable = true;
|
|
defaultWindowManager = cfg.defaultWindowManager;
|
|
port = cfg.port;
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ];
|
|
};
|
|
}
|