Compare commits

..
13 Commits
Author SHA1 Message Date
xavier a4e2eadbe9 feat(mise): Allow to declare bootstrap package per host
Whitout this, you can only specify packages per os (distrib).
2026-08-03 22:28:22 +02:00
xavier 06fb51ab5e feat: Add template to add an header to managed files more easily 2026-08-03 22:26:55 +02:00
xavier 28183fd943 fix(mise): Fix dependency for broot 2026-08-03 22:25:49 +02:00
xavier da24623dca feat(starship): Improve configuration for starship.rs 2026-07-17 21:48:03 +02:00
xavier 9c757fc1c8 feat(starship): Improve configuration for starship.rs 2026-07-17 21:34:27 +02:00
xavier 7932d9cc61 feat(starship): Improve configuration for starship.rs 2026-07-17 21:28:38 +02:00
xavier cc95831397 feat(starship): Improve configuration for starship.rs 2026-07-17 20:38:48 +02:00
xavier f44c6c47f3 fix(data): Fix username for the cloud server in chezmoi data
(xavier -> ubuntu)
2026-07-17 20:16:32 +02:00
xavier c0a03acfd6 feat(mise): Add dev-tools toolbox for root on all hosts 2026-07-17 01:25:24 +02:00
xavier 1d2ae95800 feat(starship): Improve prompt 2026-07-17 00:25:36 +02:00
xavier 115cc9f6b7 feat(mise): Review config for hosts/users/tools 2026-07-16 22:35:50 +02:00
xavierandClaude Sonnet 5 dd229593aa feat(mise): Support tools with custom mise params (e.g. tea)
Replace the hardcoded 'tea' special case in mise-tools with a generic
mechanism: a tool entry in tools.yaml/hosts.yaml can now be either a
plain string ("latest") or a map keyed by tool name whose value holds
mise params (version, url, asset_pattern, ...). This generalizes to
any future tool needing more than "latest", instead of requiring a
new hardcoded branch per tool.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 22:23:26 +02:00
xavierandClaude Sonnet 5 bbda4fdbcb 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>
2026-07-16 22:09:18 +02:00
7 changed files with 269 additions and 146 deletions
+71 -35
View File
@@ -2,43 +2,79 @@
hosts:
# PC perso
intel-nuc-hades-canyon:
toolboxes:
- terminal
- dev-tools
- dev-languages
- ai
tools:
- vivid
- pipx:vit
- pipx:speedtest-cli
- pipx:asciinema
configs: {}
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
- dev-languages
- ai
tools:
- pipx:vit
- pipx:speedtest-cli
- pipx:asciinema
configs: {}
# Serveur dédié
cloud:
toolboxes:
- terminal
- dev-tools
- dev-languages
- ai
tools:
- pipx:vit
configs: {}
users:
root:
toolboxes:
- terminal
- dev-tools
ubuntu:
toolboxes:
- terminal
- dev-tools
- dev-languages
- ai
tools:
- pipx:vit
configs: {}
# Container de dev
devenv:
toolboxes:
- terminal
- dev-tools
- dev-languages
- devops
- ai
tools:
- sops
- age
- cargo:rage
configs: {}
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
- dev-languages
- devops
- ai
tools:
- sops
- age
- cargo:rage
configs: {}
# Termux (application de terminal pour android)
termux-debian:
toolboxes:
- terminal
- dev-tools
tools: {}
configs: {}
packages:
- apt:zsh
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
termux-ubuntu:
packages:
- apt:zsh
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
+14 -12
View File
@@ -5,6 +5,7 @@ tools:
- starship # Fancy prompt
- powerline-go # Fancy prompt
- lsd # Fancy ls replacement
- vivid # Fancy ls colors
- bat # Fancy cat replacement
- ripgrep # Fancy grep replacement
- fd # Fancy find replacement
@@ -15,15 +16,17 @@ tools:
- zoxide # Quickly jump to previouously visited directories
- broot # Navigate easily inside the file system
- glow # Render markdown on the CLI
- cargo-binstall # Needed for broot
dev-tools:
- lazygit
- delta
- gh
- tea
# tea = { version = "0.14.2", url = 'https://gitea.com/gitea/tea/releases/download/v{{- "{{" }} version {{ "}}" -}}/tea-{{- "{{" }} version {{ "}}" -}}-{{- "{{" }} os() {{ "}}" -}}-{{- "{{" }} arch(x64="amd64") {{ "}}" -}}.xz' }
- jq
- yq
- shellcheck
- lazygit
- delta
- gh
- tea:
url: "https://gitea.com/gitea/tea/releases/download/v{{ version }}/tea-{{ version }}-{{ os() }}-{{ arch(x64='amd64') }}.xz"
version: "0.14.2"
dev-languages:
- python
- uv
@@ -31,23 +34,22 @@ tools:
- node
- go
- rust
- cargo-binstall
devops:
- docker-cli
- podman
- lazydocker
- kubectl
- krew
- k9s
- helm
- flux2
- minikube
- kind
- crane
- kwok
- dive
- trivy
- podman
- minikube
- kwok
- crane
- cosign
- lazydocker
ai:
- claude
- gemini-cli
@@ -60,4 +62,4 @@ tools:
# # "cargo:rage" = "latest"
#
# # Desktop tools
# #obsidian = { version = "latest", asset_pattern = "Obsidian-{version}.AppImage" }
# obsidian = { version = "latest", asset_pattern = "Obsidian-{version}.AppImage" }
+4
View File
@@ -0,0 +1,4 @@
#
# Ce fichier est généré automatiquement par l'outil chezmoi.
# Préférez apporter vos modification depuis chezmoi que directement ici.
#
+12
View File
@@ -41,3 +41,15 @@
{{- end }}
{{- end }}
{{/* Host specific */}}
{{- $hostname := output "hostname" | trim -}}
{{- $currentHost := index .hosts $hostname -}}
{{- if $currentHost }}
{{- if hasKey $currentHost "packages" }}
# Paquets personnalisés pour l'hôte {{ $hostname }}
{{- range $currentHost.packages }}
"{{- . }}" = "latest"
{{- end }}
{{- end }}
{{- end }}
+24 -8
View File
@@ -3,18 +3,26 @@
{{- $username := .chezmoi.username }}
# Configuration personnalisée pour l'utilisateur {{ $username }} et l'hôte {{ $hostname }}
{{- $currentHost := index .hosts $hostname -}}
{{- $currentUser := "" -}}
{{- 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 */}}
{{- range $toolboxName := $currentHost.toolboxes }}
{{- range $toolboxName := $currentUser.toolboxes }}
{{- /* Récupérer la liste des outils pour cette toolbox dans tools.yaml */}}
{{- $toolsList := index $.tools.toolboxes $toolboxName }}
{{- if $toolsList }}
# Toolbox: {{ $toolboxName }}
{{- range $tool := $toolsList }}
{{- /* Gestion fine du cas particulier de 'tea' mis en commentaire dans votre yaml */}}
{{- if eq $tool "tea" }}
tea = { version = "0.14.2", url = "https://gitea.com/gitea/tea/releases/download/v{{`{{ version }}`}}/tea-{{`{{ version }}`}}-{{`{{ os() }}`}}-{{`{{ arch(x64='amd64') }}`}}.xz" }
{{- /* Un outil est soit une chaîne ("nom"), soit un objet { nom: {version, ...params mise} } */}}
{{- if kindIs "map" $tool }}
{{- range $toolName, $params := $tool }}
{{ $toolName }} = { version = "{{ $params.version | default "latest" }}"{{ range $key, $value := omit $params "version" }}, {{ $key }} = "{{ $value }}"{{ end }} }
{{- end }}
{{- else }}
"{{ $tool }}" = "latest"
{{- end }}
@@ -22,16 +30,24 @@ tea = { version = "0.14.2", url = "https://gitea.com/gitea/tea/releases/download
{{- end }}
{{- end }}
{{- /* 2. Parcourir les outils individuels (la liste 'tools:' du host) */}}
{{- if hasKey $currentHost "tools" }}
{{- if $currentHost.tools }}
{{- /* 2. Parcourir les outils individuels (la liste 'tools:' de l'utilisateur) */}}
{{- if hasKey $currentUser "tools" }}
{{- if $currentUser.tools }}
# Outils individuels
{{- range $tool := $currentHost.tools }}
{{- range $tool := $currentUser.tools }}
{{- if kindIs "map" $tool }}
{{- range $toolName, $params := $tool }}
{{ $toolName }} = { version = "{{ $params.version | default "latest" }}"{{ range $key, $value := omit $params "version" }}, {{ $key }} = "{{ $value }}"{{ end }} }
{{- end }}
{{- else }}
"{{ $tool }}" = "latest"
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- else if $currentHost }}
# Aucun profil trouvé dans hosts.yaml pour l'utilisateur {{ $username }} sur la machine : {{ $hostname }}
{{- else }}
# Aucun profil trouvé dans hosts.yaml pour la machine : {{ $hostname }}
{{- end }}
+1 -2
View File
@@ -1,5 +1,4 @@
# Ce fichier est généré automatiquement par l'outil chezmoi
# Préférez apporter vos modification depuis chezmoi que directement ici
{{ template "chezmoi-managed-header" . }}
[settings]
experimental = true
+143 -89
View File
@@ -7,10 +7,12 @@ $container\
$os\
[](fg:#394260 bg:#a3aed2)\
$username\
$shell\
[](fg:#a3aed2 bg:#769ff0)\
$directory\
[](fg:#769ff0 bg:#394260)\
$git_branch\
$git_commit\
$git_status\
$direnv\
$mise\
@@ -30,6 +32,147 @@ right_format = """
[](fg:#212736 bg:#1d2230)\
\n$time\
"""
[hostname]
disabled = false
ssh_only = false
style = "bg:#212736 fg:#a3aed2"
format = '[$ssh_symbol]($style)[  $hostname ]($style)'
# detect_env_vars = ['!TMUX', 'SSH_CONNECTION']
# trim_at = '.companyname.com'
# aliases = { "Max's MacBook Pro" = "home" }
[container]
style = "bg:#212736 fg:#a3aed2"
format = '[ $symbol $name ]($style)'
[os]
disabled = false
style = "bg:#394260 fg:#a3aed2"
format = "[ $symbol ]($style)"
[username]
show_always = true
style_user = "bg:#a3aed2 fg:#212736"
style_root = "bg:#a3aed2 fg:#990000 bold"
format = '[  $user ]($style)'
[shell]
disabled = false
bash_indicator = ' '
zsh_indicator = ' '
fish_indicator = '󰈺 '
powershell_indicator = '_'
unknown_indicator = 'unknown shell'
style = "bg:#a3aed2 fg:#212736"
format = '[[](fg:#394260 bg:#a3aed2) $indicator]($style)'
[sudo]
disabled = false
[directory]
disabled = false
style = "fg:#e3e5e5 bg:#769ff0"
format = "[  $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[git_branch]
disabled = false
symbol = ""
style = "fg:#769ff0 bg:#394260"
format = '[ $symbol $branch ]($style)'
[git_commit]
disabled = false
tag_disabled = false
tag_symbol = '  '
only_detached = true
style = "fg:#769ff0 bg:#394260"
format = '[ $hash $tag ]($style)'
[git_status]
disabled = false
style = "fg:#769ff0 bg:#394260"
format = '[$all_status$ahead_behind]($style)'
ahead = '⇡${count}'
behind = '⇣${count}'
diverged = '⇕⇡${ahead_count}⇣${behind_count}'
up_to_date = ''
modified = '[$count󰷉 ](fg:yellow bg:#394260)'
staged = '[$count ](fg:green bg:#394260)'
deleted = '[$count ](fg:red bg:#394260)'
renamed = '[$count󱀱 ](fg:blue bg:#394260)'
untracked = '[$count󱀶 ](fg:gray bg:#394260)'
conflicted = '[$count󱪘 ](fg:red bg:#394260)'
stashed = '$count📦' # 󱁺 
[direnv]
disabled = false
[mise]
disabled = true
[nodejs]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[bun]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[rust]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[golang]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[php]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[python]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[docker_context]
disabled = false
only_with_files = false
symbol = " "
style = "fg:#2560ff bg:#ffffff"
format = '[[](fg:#212736 bg:#ffffff) $symbol $context [](fg:#ffffff bg:#212736)]($style)'
[kubernetes]
disabled = false
symbol = " "
style = "bg:#316ce6 fg:#a3aed2"
format = '[[](fg:#212736 bg:#316ce6) $symbol $context (\($namespace\))[](fg:#316ce6 bg:#212736)]($style)'
[terraform]
disabled = false
symbol = " "
style = "bg:#1b1028 fg:#7b42bc"
format = '[[](fg:#212736 bg:#1b1028) [$symbol](fg:#7b42bc bg:#1b1028) $workspace [](fg:#1b1028 bg:#212736)]($style)'
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "fg:#a3aed2"
format = '[  $time ]($style)'
# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[character]
success_symbol = '[ ](bold green) '
error_symbol = '[󰚽 ](bold red) '
[os.symbols]
Windows = "󰍲"
Ubuntu = "󰕈"
@@ -64,95 +207,6 @@ Pop = ""
"Téléchargements" = " "
"Developer" = "󰲋 "
[git_branch]
symbol = ""
style = "bg:#394260"
format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)'
[git_status]
style = "bg:#394260"
format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)'
[nodejs]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[bun]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[rust]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[golang]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[php]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[hostname]
ssh_only = false
style = "bg:#212736 fg:#a3aed2"
format = '[$ssh_symbol]($style)[  $hostname ]($style)'
# detect_env_vars = ['!TMUX', 'SSH_CONNECTION']
# trim_at = '.companyname.com'
# aliases = { "Max's MacBook Pro" = "home" }
disabled = false
[os]
style = "bg:#394260 fg:#a3aed2"
format = "[ $symbol ]($style)"
disabled = false
[username]
show_always = true
style_user = "bg:#a3aed2 fg:#212736"
style_root = "bg:#a3aed2 fg:red bold"
format = '[  $user ]($style)'
[sudo]
disabled = false
[directory]
style = "fg:#e3e5e5 bg:#769ff0"
format = "[  $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[direnv]
disabled = false
[mise]
disabled = false
[docker_context]
disabled = false
[kubernetes]
disabled = false
[terraform]
disabled = false
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "fg:#a3aed2"
format = '[  $time ]($style)'
# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[character]
success_symbol = '[ ](bold green) '
error_symbol = '[󰚽 ](bold red) '
# Nerdfont symbols
# 󰚽 󰗖 󰗠 󰅙 󰀨  󰅚
#   ✓ ✗ ✔ ✘