From 94031228886bcc09bba8f081e0379b1ac44cd028 Mon Sep 17 00:00:00 2001 From: Erik Simon Date: Wed, 19 Aug 2026 23:00:55 +0200 Subject: [PATCH] jupiter: fix Hermes cron scheduler defaulting to UTC The container has no host /etc/localtime bind-mount, so hermes_time.py's timezone resolution fell through to UTC. HERMES_TIMEZONE is its highest-priority source (checked before config.yaml's timezone key). Co-Authored-By: Claude Sonnet 5 --- hosts/jupiter/hermes-agent.nix | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/hosts/jupiter/hermes-agent.nix b/hosts/jupiter/hermes-agent.nix index e04674a..057cbcf 100644 --- a/hosts/jupiter/hermes-agent.nix +++ b/hosts/jupiter/hermes-agent.nix @@ -1,9 +1,9 @@ { config, ... }: -# Hermes Agent — a SEPARATE, isolated instance from terra's -# (services/desktop/hermes-agent.nix). Locked down harder than terra given -# jupiter's much bigger blast radius (irreplaceable immich photos on an -# unredundant RAID0, gitea/CI tokens, the whole media stack): +# Hermes Agent — jupiter's own instance (terra no longer runs one; see +# 713d91d). Locked down given jupiter's much bigger blast radius +# (irreplaceable immich photos on an unredundant RAID0, gitea/CI tokens, the +# whole media stack): # # - Own dedicated "hermes" system user (module default: user/group "hermes", # createUser = true) — NOT darman. darman is in jupiter's "docker" group @@ -44,15 +44,21 @@ stateDir = "/mnt/data/AppData/hermes"; workingDirectory = "/mnt/data/AppData/hermes/workspaces"; + # HERMES_TIMEZONE is the highest-priority source hermes_time.py checks + # (ahead of config.yaml's `timezone` key) — the container has no host + # /etc/localtime bind-mount, so it defaults to UTC otherwise. Not a + # secret, so `environment` (plain .env) rather than sops. + environment.HERMES_TIMEZONE = "Europe/Berlin"; + container = { enable = true; backend = "podman"; # jupiter already runs podman (services/containers.nix); # default "docker" would stand up a second daemon. }; - # Same OpenCode Go provider account as terra (services/desktop/hermes-agent.nix) - # — just an API key, not a stateful identity like the Telegram bot token, so - # sharing it across hosts is fine. + # OpenCode Go provider account (same key originally used for terra's now- + # removed instance, copied into secrets/jupiter.yaml — just an API key, + # not a stateful identity like the Telegram bot token). settings.model = { provider = "opencode-go"; base_url = "https://opencode.ai/zen/go/v1";