47 lines
1.5 KiB
Nix
47 lines
1.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
wrapperScript = pkgs.writeShellScriptBin "rustdesk-wrapper" ''
|
|
CONFIG_FILE="$HOME/.config/rustdesk/RustDesk2.toml"
|
|
CONFIG_DIR="$(dirname "$CONFIG_FILE")"
|
|
KEY_VALUE="$(sed -e 's/[[:space:]]*$//' "${config.sops.secrets.rustdesk-cloonar-key.path}")"
|
|
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
${pkgs.rustdesk-flutter}/bin/rustdesk &
|
|
RUSTDESK_PID=$!
|
|
sleep 3
|
|
kill $RUSTDESK_PID 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
|
|
# Update server configuration
|
|
if [ -f "$CONFIG_FILE" ]; then
|
|
sed -i "s|^rendezvous_server = .*|rendezvous_server = 'rustdesk.cloonar.com:21116'|" "$CONFIG_FILE"
|
|
sed -i "s|^custom-rendezvous-server = .*|custom-rendezvous-server = 'rustdesk.cloonar.com'|" "$CONFIG_FILE"
|
|
if grep -qE '^key\s*=' "$CONFIG_FILE"; then
|
|
sed -i "s|^key\s*=.*|key = '$KEY_VALUE'|" "$CONFIG_FILE"
|
|
else
|
|
printf "\nkey = '%s'\n" "$KEY_VALUE" >> "$CONFIG_FILE"
|
|
fi
|
|
fi
|
|
|
|
# Launch RustDesk
|
|
exec ${pkgs.rustdesk-flutter}/bin/rustdesk "$@"
|
|
'';
|
|
|
|
rustdeskDesktopItem = pkgs.makeDesktopItem {
|
|
name = "rustdesk-cloonar";
|
|
desktopName = "RustDesk Cloonar";
|
|
exec = "${wrapperScript}/bin/rustdesk-wrapper";
|
|
icon = "rustdesk";
|
|
categories = [ "Network" "RemoteAccess" ];
|
|
comment = "Remote desktop software configured for Cloonar";
|
|
};
|
|
in {
|
|
sops.secrets.rustdesk-cloonar-key.owner = "dominik";
|
|
|
|
environment.systemPackages = [
|
|
rustdeskDesktopItem
|
|
];
|
|
}
|