diff --git a/app/icons/rdp.svg b/app/icons/rdp.svg new file mode 100644 index 0000000..4982929 --- /dev/null +++ b/app/icons/rdp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index 29534cf..884a94f 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -14,9 +14,11 @@ let { label = "Root Password"; file = "/var/lib/secrets/root-password"; } { label = "SSH Local Access"; value = "ssh root@localhost / Passphrase: gosovransystems"; } ]; } - - { name = "Remote Desktop (RDP)"; unit = "gnome-remote-desktop.service"; type = "system"; icon = "rdp"; enabled = cfg.features.rdp; category = "apps"; credentials = [ - { label = "Credentials"; file = "/var/lib/gnome-remote-desktop/rdp-credentials"; multiline = true; } + { name = "Remote Desktop"; unit = "gnome-remote-desktop.service"; type = "system"; icon = "rdp"; enabled = cfg.features.rdp; category = "infrastructure"; credentials = [ + { label = "Username"; file = "/var/lib/gnome-remote-desktop/rdp-username"; } + { label = "Password"; file = "/var/lib/gnome-remote-desktop/rdp-password"; } + { label = "Address"; file = "/var/lib/secrets/internal-ip"; suffix = ":3389"; } + { label = "How to Connect"; value = "1. Install an RDP client (e.g. Remmina, Microsoft Remote Desktop)\n2. Create a new RDP connection\n3. Enter the Address above as the host\n4. Enter the Username and Password above\n5. Connect — you will see your desktop remotely"; } ]; } ] # ── Bitcoin Base (node implementations) ──────────────────── @@ -182,7 +184,7 @@ let # ── Generated config ─────────────────────────────────────── cp ${generatedConfig} $out/lib/sovran-hub-web/config.json - # ── Icons (SVG) ──────────────────────────────────────────── + # ── Icons (SVG) ──────────────────��───────────────────────── install -d $out/share/sovran-hub/icons cp icons/* $out/share/sovran-hub/icons/ 2>/dev/null || true @@ -248,4 +250,4 @@ in # ── Open firewall port ───────────────────────────────────── networking.firewall.allowedTCPPorts = [ 8937 ]; }; -} +} \ No newline at end of file diff --git a/modules/rdp.nix b/modules/rdp.nix index 67b4c34..d3354bc 100755 --- a/modules/rdp.nix +++ b/modules/rdp.nix @@ -1,21 +1,16 @@ -{ config, pkgs, lib, ... }: +{ config, lib, pkgs, ... }: lib.mkIf config.sovran_systemsOS.features.rdp { - services.gnome.gnome-remote-desktop.enable = true; + services.gnome-remote-desktop.enable = true; - networking.firewall.allowedTCPPorts = [ 3389 ]; - - environment.systemPackages = with pkgs; [ - freerdp - ]; - - # The NixOS module installs the unit but doesn't enable it — we just need to start it and order it - systemd.services.gnome-remote-desktop = { - wantedBy = [ "graphical.target" ]; - after = [ "gnome-remote-desktop-setup.service" ]; - wants = [ "gnome-remote-desktop-setup.service" ]; + users.users.gnome-remote-desktop = { + isSystemUser = true; + group = "gnome-remote-desktop"; + home = "/var/lib/gnome-remote-desktop"; + createHome = true; }; + users.groups.gnome-remote-desktop = {}; systemd.tmpfiles.rules = [ "d /var/lib/gnome-remote-desktop 0750 gnome-remote-desktop gnome-remote-desktop -" @@ -77,6 +72,10 @@ lib.mkIf config.sovran_systemsOS.features.rdp { PASSWORD=$(cat /var/lib/gnome-remote-desktop/rdp-password) fi + # Write username to a separate file for the hub + echo "sovran" > /var/lib/gnome-remote-desktop/rdp-username + chmod 600 /var/lib/gnome-remote-desktop/rdp-username + # Get current IP address LOCAL_IP=$(hostname -I | awk '{print $1}') @@ -104,4 +103,4 @@ lib.mkIf config.sovran_systemsOS.features.rdp { echo "GNOME Remote Desktop RDP configured successfully" ''; }; -} +} \ No newline at end of file