Les sessions hermes ouvertes dans un pane herdr tournent sous marc, pas sous le compte de service : HERMES_HOME=/var/lib/hermes/.hermes (users/marc/home.nix) pour qu'elles lisent et écrivent le même état (sessions, mémoire, lazy-python) que le service hermes-agent. Accès : groupe secondaire hermes pour marc (users.nix) et ACL tmpfiles sur /var/lib/hermes (traversée) puis .hermes et .hermes/plugins (rwx + défauts ACL), pour que les fichiers créés par marc restent lisibles côté service. C'est ce qui rend le plugin herdr-agent-state utilisable : il parle au socket herdr de marc.
66 lines
3.1 KiB
Nix
66 lines
3.1 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}: {
|
|
imports = [
|
|
../../hosts/tower/disko.nix
|
|
../../hosts/laptop/hardware-configuration.nix
|
|
];
|
|
|
|
# Profil home-manager de marc pilote par le SYSTEME sur tower : `just nixos`
|
|
# active ses dotfiles, dont ~/.config/herdr/config.toml (modules/home/herdr)
|
|
# qui fait afficher le modele hermes de chaque pane dans la sidebar herdr.
|
|
# Meme fichier que `HM=marc just home` : ne plus melanger les deux ici, le
|
|
# dernier switch ecrit les liens. Scope tower volontairement (le laptop n'est
|
|
# pas activable depuis ici) ; deplacer dans profiles/common pour l'etendre.
|
|
home-manager.users.marc = ../../users/marc/home.nix;
|
|
# 1re bascule standalone -> HM systeme : les fichiers presents qui ne sont pas
|
|
# des liens home-manager-files (ex. ancien symlink systemd.tmpfiles) sont
|
|
# deplaces en .hm-backup au lieu de faire echouer l'activation
|
|
# (check-link-targets sort sinon en exit 1).
|
|
home-manager.backupFileExtension = "hm-backup";
|
|
|
|
# Sessions hermes lancees par marc (panes herdr, HERMES_HOME partage, cf
|
|
# users/marc/home.nix) : elles ecrivent dans /var/lib/hermes/.hermes. Le
|
|
# groupe hermes (users.nix) plus les chmod g+rw du module hermes couvrent
|
|
# l'existant ; ces ACL garantissent la traversee de /var/lib/hermes (2770) et
|
|
# que les fichiers crees par marc restent lisibles par le service.
|
|
# Pattern repris de services/firefox-mcp et amazon-mcp.
|
|
systemd.tmpfiles.rules = [
|
|
"a /var/lib/hermes - - - - u:marc:--x,m::rwx"
|
|
"a /var/lib/hermes/.hermes - - - - u:marc:rwx,d:u:marc:rwx,m::rwx,d:m::rwx"
|
|
"a /var/lib/hermes/.hermes/plugins - - - - u:marc:rwx,d:u:marc:rwx,m::rwx,d:m::rwx"
|
|
];
|
|
|
|
boot.kernelParams = ["panic=10"]; # reboot 10 s après un kernel panic, le dump reste dans pstore
|
|
systemd.settings.Manager.RuntimeWatchdogSec = "30s"; # reboot si la machine gèle (si `sudo wdctl` trouve un watchdog)
|
|
# vkms = écran virtuel. Sans écran branché (DP-1/DP-2/HDMI-A-1 en disconnected sur
|
|
# le Renoir), niri n'a AUCUNE sortie vidéo : wayvnc sort en "No output found" et
|
|
# il n'y a rien à afficher en VNC. vkms crée une sortie virtuelle que niri adopte.
|
|
boot.kernelModules = ["vkms"];
|
|
# boot.initrd.clevis.enable = true;
|
|
# boot.initrd.clevis.devices."zroot/root".secretFile = ./zfs.jwe; # ton encryptionroot
|
|
# boot.initrd.availableKernelModules = ["tpm_crb"]; # driver du fTPM AMD
|
|
boot.initrd.secrets."/etc/secrets/zfs-root.key" = "/etc/secrets/zfs-root.key"; # entre guillemets, sinon la clé finit dans le /nix/store lisible par tous
|
|
|
|
networking.firewall = {
|
|
enable = true;
|
|
|
|
allowedTCPPorts = [
|
|
2022
|
|
8083 # Pangolin / Apps
|
|
8050
|
|
5432 # PostgreSQL
|
|
6080 # noVNC (client VNC web de la session niri) ; wayvnc reste sur loopback
|
|
];
|
|
};
|
|
|
|
# Clé ed25519 du Mac de marc : connexion Hermes Desktop de type SSH
|
|
# (user@host = hermes@tower, auth par clé, pas de mot de passe).
|
|
# Déclaratif exprès : /var/lib/hermes est en 2770 (écriture groupe, requis par
|
|
# le partage hermes/marc) et sshd (StrictModes, cf services/hermes) ignore
|
|
# alors %h/.ssh/authorized_keys. Cette option écrit /etc/ssxToken = true;
|
|
}
|