AquaticOS/modules/programs/aquatic/aquatic-ai/hermes.nix
2026-07-26 15:16:31 -04:00

57 lines
1.8 KiB
Nix

{ inputs, ... }:
{
flake.modules.nixos.aquatic-ai =
{ config, ... }:
let
llama_model="unsloth/Qwen3.6-27B-GGUF:Q4_K_M";
in
{
age.secrets.hermesenv.file = ../../../../secrets/hermes-env.age;
imports = [ inputs.hermes-agent.nixosModules.default ];
services.hermes-agent = {
enable = true;
settings = {
model = {
provider = "custom";
base_url = "http://127.0.0.1:8080/v1";
default = "${llama_model}"; # from curl http://localhost:8080/v1/models
context_length = 120000;
supports_vision = true;
};
compression = {
enabled = true;
threshold = 0.85;
summary_model = "${llama_model}"; # same one from model.default
};
};
environmentFiles = [ config.age.secrets.hermesenv.path ];
addToSystemPackages = true;
};
systemd.services.hermes-dashboard = {
description = "Hermes Agent web dashboard";
after = [ "network.target" "hermes-agent.service" ];
wantedBy = [ "multi-user.target" ];
environment = {
HERMES_HOME = "${config.services.hermes-agent.stateDir}/.hermes";
};
serviceConfig = {
Type = "simple";
User = config.services.hermes-agent.user;
Group = config.services.hermes-agent.group;
ExecStart = "${config.services.hermes-agent.package}/bin/hermes dashboard --host 127.0.0.1 --port 9119 --no-open";
Restart = "always";
RestartSec = 5;
NoNewPrivileges = true;
ProtectSystem = "strict";
PrivateTmp = true;
ReadWritePaths = [ config.services.hermes-agent.stateDir ];
};
};
};
}