Skip to content

Commit

Permalink
nixos/rustdesk-server: suppport enable rustdesk's signal server and r…
Browse files Browse the repository at this point in the history
…elay server seperately and rename an option (#333023)
  • Loading branch information
SuperSandro2000 authored Oct 31, 2024
2 parents 6d89442 + 97f1e5d commit 0f807cf
Showing 1 changed file with 59 additions and 26 deletions.
85 changes: 59 additions & 26 deletions nixos/modules/services/monitoring/rustdesk-server.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ let
TCPPorts = [21115 21116 21117 21118 21119];
UDPPorts = [21116];
in {
imports = [
(lib.mkRemovedOptionModule [ "services" "rustdesk-server" "relayIP" ] "This option has been replaced by services.rustdesk-server.signal.relayHosts")
(lib.mkRenamedOptionModule [ "services" "rustdesk-server" "extraRelayArgs" ] [ "services" "rustdesk-server" "relay" "extraArgs" ])
(lib.mkRenamedOptionModule [ "services" "rustdesk-server" "extraSignalArgs" ] [ "services" "rustdesk-server" "signal" "extraArgs" ])
];

options.services.rustdesk-server = with lib; with types; {
enable = mkEnableOption "RustDesk, a remote access and remote control software, allowing maintenance of computers and other devices";

Expand All @@ -18,30 +24,53 @@ in {
'';
};

relayIP = mkOption {
type = str;
description = ''
The public facing IP of the RustDesk relay.
'';
};
signal = {
enable = mkOption {
type = bool;
default = true;
description = ''
Whether to enable the RustDesk signal server.
'';
};

relayHosts = mkOption {
type = listOf str;
default = [];
# reference: https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/relay/
description = ''
The relay server IP addresses or DNS names of the RustDesk relay.
'';
};

extraArgs = mkOption {
type = listOf str;
default = [];
example = [ "-k" "_" ];
description = ''
A list of extra command line arguments to pass to the `hbbs` process.
'';
};

extraSignalArgs = mkOption {
type = listOf str;
default = [];
example = [ "-k" "_" ];
description = ''
A list of extra command line arguments to pass to the `hbbs` process.
'';
};

extraRelayArgs = mkOption {
type = listOf str;
default = [];
example = [ "-k" "_" ];
description = ''
A list of extra command line arguments to pass to the `hbbr` process.
'';
relay = {
enable = mkOption {
type = bool;
default = true;
description = ''
Whether to enable the RustDesk relay server.
'';
};
extraArgs = mkOption {
type = listOf str;
default = [];
example = [ "-k" "_" ];
description = ''
A list of extra command line arguments to pass to the `hbbr` process.
'';
};
};

};

config = let
Expand Down Expand Up @@ -96,13 +125,17 @@ in {
wantedBy = [ "multi-user.target" ];
};

systemd.services.rustdesk-signal = lib.mkMerge [ serviceDefaults {
serviceConfig.ExecStart = "${cfg.package}/bin/hbbs -r ${cfg.relayIP} ${lib.escapeShellArgs cfg.extraSignalArgs}";
} ];
systemd.services.rustdesk-signal =
let
relayArg = builtins.concatStringsSep ":" cfg.signal.relayHosts;
in
lib.mkIf cfg.signal.enable (lib.mkMerge [ serviceDefaults {
serviceConfig.ExecStart = "${cfg.package}/bin/hbbs --relay-servers ${relayArg} ${lib.escapeShellArgs cfg.signal.extraArgs}";
} ]);

systemd.services.rustdesk-relay = lib.mkMerge [ serviceDefaults {
serviceConfig.ExecStart = "${cfg.package}/bin/hbbr ${lib.escapeShellArgs cfg.extraRelayArgs}";
} ];
systemd.services.rustdesk-relay = lib.mkIf cfg.relay.enable (lib.mkMerge [ serviceDefaults {
serviceConfig.ExecStart = "${cfg.package}/bin/hbbr ${lib.escapeShellArgs cfg.relay.extraArgs}";
} ]);
};

meta.maintainers = with lib.maintainers; [ ppom ];
Expand Down

0 comments on commit 0f807cf

Please sign in to comment.