refactor(herdr): config posée par home-manager, HM de marc activée sur tower
herdr n'a ni option NixOS ni module home-manager dans l'input épinglé : sa config (sidebar qui affiche le modèle hermes de chaque pane) passe par xdg.configFile dans modules/home/herdr, importé par users/marc/home.nix. force = true car le premier switch remplace le symlink posé avant par systemd.tmpfiles, que check-link-targets ne reconnaît pas comme un fichier home-manager-files (activation en status 1 sinon). tower active home-manager.users.marc = users/marc/home.nix, le même profil que `HM=marc just home` : herdr et le reste des dotfiles arrivent avec `just nixos`. backupFileExtension = hm-backup pour la première bascule. Entre `just nixos` et `just home`, c'est le dernier switch qui écrit les liens.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# Config herdr (multiplexeur d'agents, github:ogulcancelik/herdr).
|
||||
# But : voir le modele Hermes de chaque pane dans la sidebar, sans rien taper.
|
||||
# Declaree dans modules/home/herdr/default.nix (xdg.configFile), donc posee par
|
||||
# home-manager : ne pas editer ~/.config/herdr/config.toml a la main.
|
||||
#
|
||||
# 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
|
||||
# <etat> <session> . <modele> . <cwd> (⚠ bloqué, ⏳ travaille, ✓ idle)
|
||||
# herdr lit ce titre (il s'en sert deja pour l'etat blocked/working/done, cf
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# --- herdr : config de marc, posee par home-manager ---
|
||||
# herdr (multiplexeur d'agents, github:ogulcancelik/herdr) n'a pas d'option
|
||||
# NixOS et le module `programs.herdr` n'existe pas encore dans le
|
||||
# home-manager epingle (verifie : pas de modules/programs/herdr.nix dans
|
||||
# l'input), donc le fichier est declare ici et pose par xdg.configFile.
|
||||
#
|
||||
# Contenu : voir modules/home/herdr/config.toml (rows de sidebar qui
|
||||
# affichent le modele hermes de chaque pane, via le titre OSC ecrit par le
|
||||
# TUI ; cote hermes, cela suppose display.interface = "tui", cf
|
||||
# services/hermes/default.nix).
|
||||
#
|
||||
# Application a chaud apres un switch : `herdr server reload-config`
|
||||
# (ou menu global -> reload config). Un client deja lance garde son ancienne
|
||||
# config jusqu'au reload.
|
||||
# `force = true` : la 1re activation du HM systeme bute sinon sur l'ancien
|
||||
# symlink /home/marc/.config/herdr/config.toml laisse par la version
|
||||
# systemd.tmpfiles (il ne ressemble pas a un fichier home-manager-files, donc
|
||||
# check-link-targets le declare "would be clobbered" et l'activation echoue
|
||||
# en status=1). force saute ce controle et remplace le lien.
|
||||
xdg.configFile."herdr/config.toml" = {
|
||||
force = true;
|
||||
text = builtins.readFile ./config.toml;
|
||||
};
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
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}"
|
||||
];
|
||||
}
|
||||
@@ -7,15 +7,26 @@
|
||||
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
|
||||
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
|
||||
# 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 lisiblc 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;
|
||||
@@ -35,6 +46,21 @@
|
||||
];
|
||||
};
|
||||
|
||||
# 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/ssh/authorized_keys.d/
|
||||
# hermes en root 444, qui passe le contrôle, et survit aux rebuilds.
|
||||
users.users.hermes.openssh.authorizedKeys.keys = lib.mkAfter [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMdX5m7b8xWL/9ZUeFRxahB4YY0v2rAV5CCFv8xTOlUh marc@Air-de-Marc"
|
||||
];
|
||||
|
||||
networking.hostName = "tower";
|
||||
sops.defaultSopsFile = lib.mkForce ../../secrets/tower.yml;
|
||||
|
||||
# Token Matrix du bot @hermes : seul tower est destinataire du fichier sops
|
||||
# (secrets/hermes-matrix.yml). Les autres hôtes qui importent services/hermes
|
||||
# (laptop, anywhere) ne doivent PAS le déclarer. Voir services/hermes.
|
||||
services.hermes.enableMatrixToken = true;
|
||||
}
|
||||
|
||||
+2
-1
@@ -66,6 +66,7 @@
|
||||
../../modules/home/yt-collate
|
||||
../../modules/home/youtube-music-cli
|
||||
../../modules/home/geminicommit
|
||||
../../modules/home/herdr
|
||||
|
||||
../../modules/home/backtest
|
||||
../../modules/home/portfolio-optimizer
|
||||
@@ -90,7 +91,7 @@
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}";
|
||||
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}";
|
||||
DEFAULT_BROWSER = "${inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zen";
|
||||
BROWSER = "${inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zen";
|
||||
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
|
||||
|
||||
Reference in New Issue
Block a user