# hermes-remote — SSH into m3-hermes and attach/create a Zellij session running the Hermes CLI.
# Available on all hosts (base profile), uses the m3-hermes SSH match block.
{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.base.cliTools.hermesRemote;
in {
  options.base.cliTools.hermesRemote = {
    enable = (mkEnableOption "enable hermes-remote shortcut") // {default = true;};

    host = mkOption {
      type = types.str;
      default = "m3-hermes";
      description = "SSH hostname (resolved via ~/.ssh/config matchBlocks).";
    };

    user = mkOption {
      type = types.str;
      default = "hermes";
      description = "Remote SSH user.";
    };

    identityFile = mkOption {
      type = types.str;
      default = "~/.ssh/hermes";
      description = "SSH private key for the hermes user.";
    };

    session = mkOption {
      type = types.str;
      default = "hermes";
      description = "Zellij session name on the remote host.";
    };
  };

  config = mkIf cfg.enable {
    home.packages = [
      (pkgs.writeShellScriptBin "hermes-remote" ''
        # hermes-remote — SSH into m3-hermes as the hermes user and
        # attach/create a Zellij session with the Hermes CLI.
        exec ssh -t -i ${cfg.identityFile} ${cfg.user}@${cfg.host} \
          "zellij attach -c ${cfg.session} || zellij -s ${cfg.session}"
      '')
    ];
  };
}
