feat(mise): Add per-user toolsets to hosts.yaml

Nest each host's toolboxes/tools/configs under users.<username> so
root and xavier can have different tool selections on the same
machine, instead of sharing one profile per host.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 22:09:18 +02:00
co-authored by Claude Sonnet 5
parent d5a4a0d9dd
commit bbda4fdbcb
2 changed files with 76 additions and 40 deletions
+63 -35
View File
@@ -2,43 +2,71 @@
hosts: hosts:
# PC perso # PC perso
intel-nuc-hades-canyon: intel-nuc-hades-canyon:
toolboxes: users:
- terminal xavier:
- dev-tools toolboxes:
- dev-languages - terminal
- ai - dev-tools
tools: - dev-languages
- vivid - ai
- pipx:vit tools:
- pipx:speedtest-cli - vivid
- pipx:asciinema - pipx:vit
configs: {} - pipx:speedtest-cli
- pipx:asciinema
configs: {}
root:
toolboxes:
- terminal
tools: []
configs: {}
# Serveur dédié # Serveur dédié
cloud: cloud:
toolboxes: users:
- terminal xavier:
- dev-tools toolboxes:
- dev-languages - terminal
- ai - dev-tools
tools: - dev-languages
- pipx:vit - ai
configs: {} tools:
- pipx:vit
configs: {}
root:
toolboxes:
- terminal
tools: []
configs: {}
# Container de dev # Container de dev
devenv: devenv:
toolboxes: users:
- terminal xavier:
- dev-tools toolboxes:
- dev-languages - terminal
- devops - dev-tools
- ai - dev-languages
tools: - devops
- sops - ai
- age tools:
- cargo:rage - sops
configs: {} - age
- cargo:rage
configs: {}
root:
toolboxes:
- terminal
tools: []
configs: {}
termux-debian: termux-debian:
toolboxes: users:
- terminal xavier:
- dev-tools toolboxes:
tools: {} - terminal
configs: {} - dev-tools
tools: {}
configs: {}
root:
toolboxes:
- terminal
tools: []
configs: {}
+13 -5
View File
@@ -3,9 +3,15 @@
{{- $username := .chezmoi.username }} {{- $username := .chezmoi.username }}
# Configuration personnalisée pour l'utilisateur {{ $username }} et l'hôte {{ $hostname }} # Configuration personnalisée pour l'utilisateur {{ $username }} et l'hôte {{ $hostname }}
{{- $currentHost := index .hosts $hostname -}} {{- $currentHost := index .hosts $hostname -}}
{{- $currentUser := "" -}}
{{- if $currentHost }} {{- if $currentHost }}
{{- if hasKey $currentHost.users $username }}
{{- $currentUser = index $currentHost.users $username -}}
{{- end }}
{{- end }}
{{- if $currentUser }}
{{- /* 1. Parcourir les toolboxes associées à cet hôte */}} {{- /* 1. Parcourir les toolboxes associées à cet hôte */}}
{{- range $toolboxName := $currentHost.toolboxes }} {{- range $toolboxName := $currentUser.toolboxes }}
{{- /* Récupérer la liste des outils pour cette toolbox dans tools.yaml */}} {{- /* Récupérer la liste des outils pour cette toolbox dans tools.yaml */}}
{{- $toolsList := index $.tools.toolboxes $toolboxName }} {{- $toolsList := index $.tools.toolboxes $toolboxName }}
{{- if $toolsList }} {{- if $toolsList }}
@@ -22,16 +28,18 @@ tea = { version = "0.14.2", url = "https://gitea.com/gitea/tea/releases/download
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- /* 2. Parcourir les outils individuels (la liste 'tools:' du host) */}} {{- /* 2. Parcourir les outils individuels (la liste 'tools:' de l'utilisateur) */}}
{{- if hasKey $currentHost "tools" }} {{- if hasKey $currentUser "tools" }}
{{- if $currentHost.tools }} {{- if $currentUser.tools }}
# Outils individuels # Outils individuels
{{- range $tool := $currentHost.tools }} {{- range $tool := $currentUser.tools }}
"{{ $tool }}" = "latest" "{{ $tool }}" = "latest"
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- else if $currentHost }}
# Aucun profil trouvé dans hosts.yaml pour l'utilisateur {{ $username }} sur la machine : {{ $hostname }}
{{- else }} {{- else }}
# Aucun profil trouvé dans hosts.yaml pour la machine : {{ $hostname }} # Aucun profil trouvé dans hosts.yaml pour la machine : {{ $hostname }}
{{- end }} {{- end }}