feat(hermes-skins): pack Hermes Menagerie pour le Mac

Input brut hermes-menagerie (github:ZakiChair/hermes-catppuccin),
module home-mac/hermes-skins qui installe les palettes dans
~/.hermes/skins, active dans la home de marc@macos.
This commit is contained in:
Hermes Agent
2026-10-19 02:07:18 -04:00
parent 9abcab4e00
commit 161cd8e4d9
4 changed files with 101 additions and 0 deletions
Generated
+17
View File
@@ -471,6 +471,22 @@
"type": "github" "type": "github"
} }
}, },
"hermes-menagerie": {
"flake": false,
"locked": {
"lastModified": 1788415525,
"narHash": "sha256-HlRJHxVmTOJ553sYHsZYSW0/FwYFveFjdCMQWG6gFyg=",
"owner": "ZakiChair",
"repo": "hermes-catppuccin",
"rev": "0a72fd4159463b7dc598216a10b599e2d29c99ea",
"type": "github"
},
"original": {
"owner": "ZakiChair",
"repo": "hermes-catppuccin",
"type": "github"
}
},
"hermes-webui": { "hermes-webui": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -1559,6 +1575,7 @@
"disko": "disko", "disko": "disko",
"firefox-devtools-mcp": "firefox-devtools-mcp", "firefox-devtools-mcp": "firefox-devtools-mcp",
"hermes-agent": "hermes-agent", "hermes-agent": "hermes-agent",
"hermes-menagerie": "hermes-menagerie",
"hermes-webui": "hermes-webui", "hermes-webui": "hermes-webui",
"home-manager": "home-manager_4", "home-manager": "home-manager_4",
"jovian": "jovian", "jovian": "jovian",
+6
View File
@@ -60,6 +60,12 @@
flake = false; # The repo isn't a flake; use as raw source flake = false; # The repo isn't a flake; use as raw source
}; };
# Pack de skins Hermes (26 palettes) : source brute, cf. modules/home-mac/hermes-skins.
hermes-menagerie = {
url = "github:ZakiChair/hermes-catppuccin";
flake = false; # The repo isn't a flake; use as raw source
};
# On crée une entrée SPÉCIALE pour le téléphone # On crée une entrée SPÉCIALE pour le téléphone
# nixpkgs-droid.url = "github:NixOS/nixpkgs/nixos-24.05"; # nixpkgs-droid.url = "github:NixOS/nixpkgs/nixos-24.05";
+74
View File
@@ -0,0 +1,74 @@
# Skins Hermes : pose les YAML du pack « Hermes Menagerie » dans ~/.hermes/skins/,
# dossier que l'engine lit tel quel (hermes_cli/skin_engine.py, lecture seule côté
# Hermes). Le pack est une source brute, pas un flake (flake input
# `hermes-menagerie`, flake = false).
#
# Les fichiers sont des symlinks vers /nix/store, donc read-only : `hermes skin set
# <clé> <hex>` ne peut pas réécrire ces YAML sur place. Pour itérer sur une couleur,
# forker le skin dans un fichier séparé, ou pointer une entrée vers un clone local
# (config.lib.file.mkOutOfStoreSymlink). L'activation reste impérative, config.yaml
# n'étant pas géré par Nix :
# hermes config set display.skin catpuccin-mocha
{
lib,
config,
inputs,
...
}:
let
cfg = config.my.hermesSkins;
packDir = cfg.pack + "/skins";
# Le pack écrit « catpuccin » (deux p, un seul c) : catpuccin-mocha, catpuccin-latte.
available = builtins.filter (n: builtins.match ".+\\.yaml" n != null) (
builtins.attrNames (builtins.readDir packDir)
);
selected = if cfg.skins == [ ] then available else map (s: "${s}.yaml") cfg.skins;
unknown = lib.subtractLists available selected;
in {
options.my.hermesSkins = {
enable = lib.mkEnableOption "les skins Hermes Menagerie dans ~/.hermes/skins";
pack = lib.mkOption {
type = lib.types.path;
default = inputs.hermes-menagerie;
defaultText = lib.literalExpression "inputs.hermes-menagerie";
description = "Racine du pack (flake input `hermes-menagerie`, flake = false).";
};
skins = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = [ "catpuccin-mocha" "fox-ember" ];
description = "Skins à installer (nom sans .yaml) ; vide = tout le pack (26).";
};
dir = lib.mkOption {
type = lib.types.str;
default = ".hermes/skins";
description = ''
Dossier des skins, relatif à $HOME. Un profil Hermes utilise
`.hermes/profiles/<nom>/skins`.
'';
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = unknown == [ ];
message = "my.hermesSkins.skins : skin(s) absent(s) du pack : ${toString unknown}";
}
];
home.file = builtins.listToAttrs (
map (f: {
name = "${cfg.dir}/${f}";
value.source = packDir + "/${f}";
}) selected
);
};
}
+4
View File
@@ -22,6 +22,7 @@
# ../../modules/home/librewolf # ../../modules/home/librewolf
../../modules/home-mac/aerospace ../../modules/home-mac/aerospace
../../modules/home-mac/hermes-skins
# ../../modules/home-mac/autossh # ../../modules/home-mac/autossh
]; ];
@@ -116,6 +117,9 @@
programs.zsh.enable = true; programs.zsh.enable = true;
# Skins Hermes (pack Hermes Menagerie) -> ~/.hermes/skins/
my.hermesSkins.enable = true;
# Connexions Eternal Terminal vers les hôtes NixOS : `et tower` = zellij enregistré. # Connexions Eternal Terminal vers les hôtes NixOS : `et tower` = zellij enregistré.
my.et = { my.et = {
enable = true; enable = true;