diff --git a/modules/nixos/herdr/config.toml b/modules/nixos/herdr/config.toml new file mode 100644 index 0000000..7ac4cc7 --- /dev/null +++ b/modules/nixos/herdr/config.toml @@ -0,0 +1,22 @@ +# Config herdr (multiplexeur d'agents, github:ogulcancelik/herdr). +# But : voir le modele Hermes de chaque pane dans la sidebar, sans rien taper. +# +# Principe : le TUI hermes ecrit son titre OSC sous la forme +# . . (⚠ bloqué, ⏳ travaille, ✓ idle) +# herdr lit ce titre (il s'en sert deja pour l'etat blocked/working/done, cf +# ~/.local/state/herdr/agent-detection/remote/hermes.toml) et l'expose aux +# lignes de la sidebar via le token terminal_title_stripped. +[ui] +# Label d'agent sur les bordures de panes splittees (le titre du pane porte deja le modele). +show_agent_labels_on_pane_borders = true +# Titre ecrit dans le terminal hote : les barres d'onglets du WM suivent le pane actif. +window_title = "{hostname}: {workspace} · {terminal_title}" + +# Rows par agent : par defaut herdr n'affiche pas le titre du terminal, seulement +# l'agent ("hermes"), ce qui ne dit pas quel modele tourne dans le pane. +[ui.sidebar.agents.rows_by_agent] +hermes = [ + ["state_icon", "machine", "tab"], + ["terminal_title_stripped"], + ["agent"], +] diff --git a/modules/nixos/herdr/default.nix b/modules/nixos/herdr/default.nix new file mode 100644 index 0000000..229ed5a --- /dev/null +++ b/modules/nixos/herdr/default.nix @@ -0,0 +1,26 @@ +{ + config, + pkgs, + lib, + ... +}: { + # --- herdr : config de marc posee par le systeme --- + # herdr (multiplexeur d'agents) n'a pas d'option NixOS ; sa config vit dans + # ~/.config/herdr/config.toml et sert a afficher le MODELE hermes de chaque + # pane dans la sidebar (cf modules/nixos/herdr/config.toml). + # + # Marc est en home-manager STANDALONE (users/marc/home.nix, `HM=marc just home`, + # que hermes n'active pas) : on pose donc le fichier cote systeme, sous forme de + # symlink vers le store, exactement ce que ferait xdg.configFile. Un `just nixos` + # suffit, sans attendre une generation home-manager. + # (Le module home-manager `programs.herdr` n'existe pas dans le home-manager + # epingle : xdg.configFile serait la seule alternative, meme mecanisme.) + # + # Effet a chaud : `herdr server reload-config` (ou relance du client). Le fichier + # est en lecture seule (store) : une edition manuelle de ~/.config/herdr/config.toml + # ne tient pas, c'est ce fichier-ci qui fait foi. + systemd.tmpfiles.rules = [ + "d /home/marc/.config/herdr 0755 marc users -" + "L+ /home/marc/.config/herdr/config.toml - - - - ${./config.toml}" + ]; +} diff --git a/profiles/tower/configuration.nix b/profiles/tower/configuration.nix index 747102c..152bc12 100644 --- a/profiles/tower/configuration.nix +++ b/profiles/tower/configuration.nix @@ -7,6 +7,9 @@ imports = [ ../../hosts/tower/disko.nix ../../hosts/laptop/hardware-configuration.nix + # config herdr de marc (~/.config/herdr/config.toml) : affiche le modele + # hermes de chaque pane dans la sidebar. Voir modules/nixos/herdr/. + ../../modules/nixos/herdr ]; boot.kernelParams = ["panic=10"]; # reboot 10 s après un kernel panic, le dump reste dans pstore diff --git a/services/hermes/default.nix b/services/hermes/default.nix index b30e99b..bb156d7 100644 --- a/services/hermes/default.nix +++ b/services/hermes/default.nix @@ -115,8 +115,28 @@ }; # --- Coût estimé dans la status bar CLI/TUI --- + # interface = "tui" : le REPL classique n'écrit AUCUN titre de terminal + # (aucun module terminal_title dans la version installée), alors que le TUI + # publie son titre en OSC 0/1/2 : " · · ". + # C'est ce titre que herdr lit pour l'etat (blocked/working/done) ET pour + # afficher le modele de chaque pane dans sa sidebar (modules/nixos/herdr). + # Sans ce reglage, les panes hermes n'exposent pas leur modele a herdr. display = { show_cost = true; + interface = "tui"; + }; + + # --- Plugin herdr : volontairement desactive --- + # `herdr integration install hermes` ecrit plugins.enabled = + # ["herdr-agent-state"] dans config.yaml, et le merge de l'activation + # conserve les cles non declarees ici : sans cette liste vide, l'entree + # reste et pointe un plugin absent (fichiers retires). + # Le plugin herdr sort immediatement si HERDR_ENV != 1, or le lancement + # habituel (`sudo su -l hermes hermes chat`) efface l'environnement herdr : + # il ne peut pas fonctionner en l'etat. A installer pour de bon (fichiers + # declaratifs + lancement qui conserve HERDR_*) si ce besoin revient. + plugins = { + enabled = []; }; auxiliary = {