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 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 23:00:55 +02:00
co-authored by Claude Sonnet 5
parent 713d91d5fc
commit 9403122888
+13 -7
View File
@@ -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";