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:
Generated
+17
@@ -471,6 +471,22 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -1559,6 +1575,7 @@
|
||||
"disko": "disko",
|
||||
"firefox-devtools-mcp": "firefox-devtools-mcp",
|
||||
"hermes-agent": "hermes-agent",
|
||||
"hermes-menagerie": "hermes-menagerie",
|
||||
"hermes-webui": "hermes-webui",
|
||||
"home-manager": "home-manager_4",
|
||||
"jovian": "jovian",
|
||||
|
||||
@@ -60,6 +60,12 @@
|
||||
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
|
||||
# nixpkgs-droid.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||
|
||||
|
||||
@@ -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
|
||||
);
|
||||
};
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
# ../../modules/home/librewolf
|
||||
|
||||
../../modules/home-mac/aerospace
|
||||
../../modules/home-mac/hermes-skins
|
||||
# ../../modules/home-mac/autossh
|
||||
];
|
||||
|
||||
@@ -116,6 +117,9 @@
|
||||
|
||||
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é.
|
||||
my.et = {
|
||||
enable = true;
|
||||
|
||||
Reference in New Issue
Block a user