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"
|
"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",
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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/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;
|
||||||
|
|||||||
Reference in New Issue
Block a user