{ 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 ]; }