Compare commits

..

2 Commits

Author SHA1 Message Date
fb16e2a259 docs: add Workflow section to AGENTS.md + update compose submodule
- Add Workflow conventions section to infra AGENTS.md
- Update compose submodule to feat/hermes-workers (adds compose AGENTS.md)
2026-05-19 15:27:27 -04:00
6a2db08a58 feat: add Hermes worker provisioning for Paperclip employees
- Update compose submodule to feat/hermes-workers branch
- Adds x-hermes-worker anchor template for isolated CPU-only
  Hermes containers
- Adds scripts/provision-hermes-worker.sh for automated worker
  creation with unique port, API key, and volume setup
- Workers connect via Discord only, use OpenCode Go provider
2026-05-19 14:13:13 -04:00
3 changed files with 10 additions and 40 deletions

View File

@@ -25,3 +25,12 @@ This document outlines the development conventions for this NixOS-based infrastr
- **Secrets:** Secrets are managed with `agenix`. Edit encrypted files with `agenix -e <file>`.
- **Modularity:** Structure configurations into logical, reusable modules under `modules/`. New modules should be registered in `modules/nixos/default.nix` to be available to all hosts.
- **Error Handling:** Ensure Nix expressions are robust and handle potential evaluation errors gracefully.
## Workflow
- New feature → clean branch from `origin/master` → push → PR on Gitea
- Branch naming: `feat/description` (features), `fix/description` (bugs/docs)
- Always branch from `origin/master`, never from another feature branch
- Submodule changes: commit submodule update in parent repo (the parent commit pins the submodule commit)
- PR title should describe the change; body should explain motivation + summary
- After PR merge, delete the feature branch

View File

@@ -207,7 +207,6 @@
ai = {
path = self + "/assets/compose/ai";
envFile = config.age.secrets.containers_env.path;
ports = [ 22000 ]; # Syncthing TCP sync
};
cloudstorage = {
@@ -342,44 +341,6 @@
HIP_VISIBLE_DEVICES = "0,1";
};
# ── UPS (Uninterruptible Power Supply) ──────────────────────────────
# APC Back-UPS BVK1200M2 connected via USB (vendor 051d, product 0002)
power.ups = {
enable = true;
mode = "standalone";
ups = {
apc-backups = {
driver = "usbhid-ups";
port = "auto";
description = "APC Back-UPS BVK1200M2";
};
};
upsd = {
listen = [{
address = "127.0.0.1";
}];
};
users = {
nutmon = {
passwordFile = pkgs.writeText "ups-nutmon-password" "ups-nutmon-2025";
upsmon = "primary";
};
};
upsmon = {
monitor = {
apc-backups = {
system = "apc-backups@localhost";
user = "nutmon";
type = "master";
};
};
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];