Compare commits

..
37 Commits
Author SHA1 Message Date
xavier 55af3f3539 Merge pull request 'feat(mise): Generate toolbox conf.d files dynamically from tools.yaml' (#1) from feat/mise-dynamic-toolboxes into dev
Reviewed-on: https://gitea.cloud.logerais.com/xavier/config-chezmoi/pulls/1
2026-08-31 00:52:24 +02:00
xavier fafcf283a8 feat(lazygit): Update config to follow new syntax 2026-08-31 00:51:38 +02:00
xavierandClaude Sonnet 5 1c817a92a6 feat(mise): Add toolbox name header in generated conf.d files
Addresses PR feedback: each conf.d/<toolbox>.toml now starts with a
"# Toolbox: <name>" comment, matching the previous inline config.toml
layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GA4dAzARMnLz1G9AmQkYYn
2026-08-31 00:48:13 +02:00
xavierandClaude Sonnet 5 17e579e16c feat(mise): Generate toolbox conf.d files dynamically from tools.yaml
Toolboxes declared in .chezmoidata/tools.yaml no longer need a matching
source file under private_dot_config/mise/conf.d/. The run_onchange
install script now loops over tools.yaml/hosts.yaml directly to
(re)generate ~/.config/mise/conf.d/<toolbox>.toml, and removes files for
toolboxes no longer assigned to the host/user, so mise config.toml stays
limited to individual, non-toolbox tools.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GA4dAzARMnLz1G9AmQkYYn
2026-08-31 00:40:40 +02:00
xavier 3a8dca1fcb feat(chezmoi/mise): Add opencode AI agent to AI toolbox 2026-08-30 23:02:51 +02:00
xavier 5008a6c23d feat(mise) : Upgrade tea tool 2026-08-30 23:02:12 +02:00
xavier ca9629abf3 feat(external): Manage submodules for bash config repo 2026-08-22 15:49:43 +02:00
xavier 5d7933ac5a feat(starship): Improve configuration for starship.rs prompt for zsh 2026-08-19 21:34:11 +02:00
xavier e57f78c957 feat(starship): Improve configuration for starship.rs 2026-08-19 21:34:11 +02:00
xavier 48d328ea27 feat(starship): Fix symbol direction in zsh prompt 2026-08-19 21:34:11 +02:00
xavier 55b9a4e8c2 feat(starship): Cosmetic change for zsh prompt 2026-08-19 21:34:11 +02:00
xavier 990cd6b506 feat(zsh): Add support for zsh 2026-08-19 21:34:11 +02:00
xavier 24013acd34 test: Prepare for cloning password store 2026-08-19 21:34:11 +02:00
xavier 5076e78819 feat: Add TODO.md 2026-08-19 21:34:11 +02:00
xavierandClaude Sonnet 5 5987036389 feat(tools): Add copilot to the ai toolbox
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 23:07:01 +02:00
xavierandClaude Sonnet 5 75ae00ce12 fix(mise): Trigger mise install when templated config data changes
run_onchange_after_mise-install.sh.tmpl hashed the raw contents of
config.toml.tmpl to detect changes, but that file only pulls in real
content through named templates ({{ template "..." }}) fed by
.chezmoidata. Editing that data left the raw .tmpl text (and thus the
hash) unchanged, so mise install silently stopped firing.

Switch the named-template calls to includeTemplate, which chezmoi can
resolve outside the normal source-state parsing pass (unlike the
template action, see https://github.com/twpayne/chezmoi/issues/3334).
This lets the run_onchange script hash the actual rendered output via
includeTemplate instead of the static source text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 23:00:36 +02:00
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
xavier d5a4a0d9dd feat: Improve starship prompt 2026-07-16 20:03:46 +02:00
xavier a73546bcec feat: Add config file for starship prompt utility
See https://starship.rs/config/
2026-07-16 19:10:55 +02:00
xavier 94969e12fe feat(mise): Add starship prompt utility to the terminal toolbox 2026-07-16 19:08:41 +02:00
xavier 3b3f7e60a6 chore: Small improvments... 2026-07-16 13:08:13 +02:00
xavier 80afa299b4 fix(mise): Fix script to autoinstall tools when mise config change 2026-07-16 12:54:00 +02:00
xavier 6a4e3f2699 feat: Some adaptations for termux 2026-07-16 08:29:15 +00:00
xavier c1af60939e feat(mise): Add a script to automatically run a mise install when mise config changes 2026-07-15 20:53:12 +02:00
xavier 8c82c74f58 fix(mise): Fix tool options for tea (quoting) 2026-07-15 16:06:26 +02:00
12 changed files with 144 additions and 60 deletions
+4
View File
@@ -55,6 +55,8 @@ hosts:
configs: {} configs: {}
# Termux (application de terminal pour android) # Termux (application de terminal pour android)
termux-debian: termux-debian:
packages:
- apt:zsh
users: users:
root: root:
toolboxes: toolboxes:
@@ -65,6 +67,8 @@ hosts:
- terminal - terminal
- dev-tools - dev-tools
termux-ubuntu: termux-ubuntu:
packages:
- apt:zsh
users: users:
root: root:
toolboxes: toolboxes:
+4 -2
View File
@@ -16,6 +16,7 @@ tools:
- zoxide # Quickly jump to previouously visited directories - zoxide # Quickly jump to previouously visited directories
- broot # Navigate easily inside the file system - broot # Navigate easily inside the file system
- glow # Render markdown on the CLI - glow # Render markdown on the CLI
- cargo-binstall # Needed for broot
dev-tools: dev-tools:
- jq - jq
- yq - yq
@@ -25,7 +26,7 @@ tools:
- gh - gh
- tea: - tea:
url: "https://gitea.com/gitea/tea/releases/download/v{{ version }}/tea-{{ version }}-{{ os() }}-{{ arch(x64='amd64') }}.xz" url: "https://gitea.com/gitea/tea/releases/download/v{{ version }}/tea-{{ version }}-{{ os() }}-{{ arch(x64='amd64') }}.xz"
version: "0.14.2" version: "0.15.1"
dev-languages: dev-languages:
- python - python
- uv - uv
@@ -33,7 +34,6 @@ tools:
- node - node
- go - go
- rust - rust
- cargo-binstall
devops: devops:
- docker-cli - docker-cli
- podman - podman
@@ -54,6 +54,8 @@ tools:
- claude - claude
- gemini-cli - gemini-cli
- codex - codex
- copilot
- opencode
# # Password managers # # Password managers
# # vault = "latest" # # vault = "latest"
+6
View File
@@ -4,6 +4,12 @@
".config/bash": ".config/bash":
type: git-repo type: git-repo
url: https://gitea.cloud.logerais.com/xavier/config-bash.git url: https://gitea.cloud.logerais.com/xavier/config-bash.git
clone:
args:
- --recurse-submodules
pull:
args:
- --recurse-submodules
refreshPeriod: 24h # Vérifie toutes les 24h refreshPeriod: 24h # Vérifie toutes les 24h
##### [ VIM ] ##### ##### [ VIM ] #####
+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 }}
{{- 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 }}
+17
View File
@@ -0,0 +1,17 @@
{{/* .chezmoitemplates/mise-toolbox-conf */}}
{{/* Expects data: (merge (dict "toolboxName" "<name>") .) */}}
{{- $toolboxName := .toolboxName -}}
{{ includeTemplate "chezmoi-managed-header" . }}
# Toolbox: {{ $toolboxName }}
[tools]
{{- $toolsList := index .tools.toolboxes $toolboxName }}
{{- range $tool := $toolsList }}
{{- 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 }}
+6 -24
View File
@@ -10,14 +10,12 @@
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if $currentUser }} {{- if $currentUser }}
{{- /* 1. Parcourir les toolboxes associées à cet hôte */}} {{- /* Les outils individuels (la liste 'tools:' de l'utilisateur) */}}
{{- range $toolboxName := $currentUser.toolboxes }} {{- if hasKey $currentUser "tools" }}
{{- /* Récupérer la liste des outils pour cette toolbox dans tools.yaml */}} {{- if $currentUser.tools }}
{{- $toolsList := index $.tools.toolboxes $toolboxName }}
{{- if $toolsList }}
# Toolbox: {{ $toolboxName }} # Outils individuels
{{- range $tool := $toolsList }} {{- range $tool := $currentUser.tools }}
{{- /* Un outil est soit une chaîne ("nom"), soit un objet { nom: {version, ...params mise} } */}} {{- /* Un outil est soit une chaîne ("nom"), soit un objet { nom: {version, ...params mise} } */}}
{{- if kindIs "map" $tool }} {{- if kindIs "map" $tool }}
{{- range $toolName, $params := $tool }} {{- range $toolName, $params := $tool }}
@@ -29,23 +27,7 @@
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- /* Les toolboxes de cet utilisateur sont générées séparément dans ~/.config/mise/conf.d/<toolbox>.toml */}}
{{- /* 2. Parcourir les outils individuels (la liste 'tools:' de l'utilisateur) */}}
{{- if hasKey $currentUser "tools" }}
{{- if $currentUser.tools }}
# Outils individuels
{{- 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 }} {{- else if $currentHost }}
# Aucun profil trouvé dans hosts.yaml pour l'utilisateur {{ $username }} sur la machine : {{ $hostname }} # Aucun profil trouvé dans hosts.yaml pour l'utilisateur {{ $username }} sur la machine : {{ $hostname }}
{{- else }} {{- else }}
+2 -2
View File
@@ -11,7 +11,7 @@ gui:
- bold - bold
nerdFontsVersion: "3" nerdFontsVersion: "3"
git: git:
pagers: diffRenderers:
- colorArg: always - colorArg: always
pager: delta --paging=never command: delta --paging=never
parseEmoji: true parseEmoji: true
+5 -5
View File
@@ -1,5 +1,4 @@
# Ce fichier est généré automatiquement par l'outil chezmoi {{ includeTemplate "chezmoi-managed-header" . }}
# Préférez apporter vos modification depuis chezmoi que directement ici
[settings] [settings]
experimental = true experimental = true
@@ -10,7 +9,7 @@ binstall = true
######################### [ Bootstrap ] ######################### ######################### [ Bootstrap ] #########################
[bootstrap.packages] [bootstrap.packages]
{{ template "mise-bootstrap-packages" . }} {{ includeTemplate "mise-bootstrap-packages" . }}
# coreutils grep less # coreutils grep less
# tig # tig
@@ -36,8 +35,9 @@ chezmoi = "latest"
neovim = "latest" neovim = "latest"
tree-sitter = "latest" tree-sitter = "latest"
# Tools automated with chezmoi # Individual tools automated with chezmoi
{{ template "mise-tools" . }} # (toolboxes from .chezmoidata/tools.yaml live in ~/.config/mise/conf.d/<toolbox>.toml)
{{ includeTemplate "mise-tools" . }}
# Password managers # Password managers
# vault = "latest" # vault = "latest"
+32 -22
View File
@@ -6,23 +6,22 @@ $directory\
$git_branch\ $git_branch\
$git_commit\ $git_commit\
$git_status\ $git_status\
$git_state\
$direnv\ $direnv\
$mise\ $mise\
[](fg:#394260 bg:#212736)\ [](fg:#394260 bg:#212736)\
$golang\
$rust\ $rust\
$golang\
$python\ $python\
$nodejs\ $nodejs\
$docker_context\ $docker_context\
$kubernetes\ $kubernetes\
$terraform\ $terraform\
[](fg:#212736)\ [](fg:#212736)\
$character""" \n$character\
"""
right_format = """ right_format = """
[](fg:#a3aed2)\
$time\
[ ](fg:#a3aed2)\
[](fg:#a3aed2)\ [](fg:#a3aed2)\
$shell\ $shell\
$username\ $username\
@@ -31,20 +30,24 @@ $os\
[](bg:#394260 fg:#a3aed2)\ [](bg:#394260 fg:#a3aed2)\
$container\ $container\
$hostname\ $hostname\
[ ](fg:#394260)\
[](fg:#a3aed2)\
$time\
[](fg:#a3aed2)\
""" """
[hostname] [hostname]
disabled = false disabled = false
ssh_only = false ssh_only = false
style = "bg:#394260 fg:#a3aed2" style = "bg:#394260 fg:#a3aed2"
format = '[$ssh_symbol]($style)[  $hostname]($style)' format = '[$ssh_symbol]($style)[  $hostname ]($style)'
# detect_env_vars = ['!TMUX', 'SSH_CONNECTION'] # detect_env_vars = ['!TMUX', 'SSH_CONNECTION']
# trim_at = '.companyname.com' # trim_at = '.companyname.com'
# aliases = { "Max's MacBook Pro" = "home" } # aliases = { "Max's MacBook Pro" = "home" }
[container] [container]
style = "bg:#394260 fg:#a3aed2" style = "bg:#394260 fg:#a3aed2"
format = '[ $symbol $name ]($style)' format = '[ $symbol $name ]($style)'
[os] [os]
disabled = false disabled = false
@@ -86,27 +89,32 @@ format = '[ $symbol $branch ]($style)'
[git_commit] [git_commit]
disabled = false disabled = false
style = "fg:#769ff0 bg:#394260"
tag_disabled = false tag_disabled = false
tag_symbol = '  ' tag_symbol = '  '
only_detached = true only_detached = true
style = "fg:#769ff0 bg:#394260"
format = '[ $hash $tag ]($style)' format = '[ $hash $tag ]($style)'
[git_status] [git_status]
disabled = false disabled = false
style = "fg:#769ff0 bg:#394260" style = "fg:#769ff0 bg:#394260"
format = '[$all_status$ahead_behind]($style)'
ahead = '⇡${count}' ahead = '⇡${count}'
behind = '⇣${count}' behind = '⇣${count}'
diverged = '⇕⇡${ahead_count}⇣${behind_count}' diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#FFA500 bg:#394260)'
up_to_date = '' up_to_date = ''
modified = '[$count󰷉 ](fg:yellow bg:#394260)' modified = '[$count 󰷉 ](fg:#FFFF00 bg:#394260)'
staged = '[$count ](fg:green bg:#394260)' staged = '[$count  ](fg:#00D000 bg:#394260)'
deleted = '[$count ](fg:red bg:#394260)' deleted = '[$count  ](fg:#FF0000 bg:#394260)'
renamed = '[$count󱀱 ](fg:blue bg:#394260)' renamed = '[$count 󱀱 ](fg:#87CEEB bg:#394260)'
untracked = '[$count󱀶 ](fg:gray bg:#394260)' untracked = '[$count 󱀶 ](fg:#CCCCCC bg:#394260)'
conflicted = '[$count󱪘 ](fg:red bg:#394260)' conflicted = '[$count 󱪘 ](fg:#FF0000 bg:#394260)'
stashed = '$count📦' # 󱁺  stashed = '[$count ](fg:#FFA500 bg:#394260)' # 󱁺 
format = '[$all_status$ahead_behind ]($style)'
[git_state]
disabled = false
style = "fg:#769ff0 bg:#394260"
format = ' [$state( $progress_current/$progress_total)]($style) '
[direnv] [direnv]
disabled = false disabled = false
@@ -165,14 +173,16 @@ format = '[[](fg:#212736 bg:#1b1028) [$symbol](fg:#7b42bc bg:#1b1028) $worksp
[time] [time]
disabled = false disabled = false
time_format = "%R" # Hour:Minute Format style = "fg:#212736 bg:#a3aed2"
style = "fg:#ffffff bg:#a3aed2" format = '[  $time ]($style)'
format = '[  $time ]($style)' time_format = '%T  󰃶 %A %e %B %Y'
# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)' # format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[character] [character]
success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) ' # success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) '
error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) ' # error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) '
success_symbol = '[  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) '
error_symbol = '[ 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) '
[os.symbols] [os.symbols]
Windows = "󰍲" Windows = "󰍲"
+1 -1
View File
@@ -15,7 +15,7 @@ if command -v mise &>/dev/null; then
mise bootstrap --yes mise bootstrap --yes
fi fi
# 3. Installer tous les outils déclarés dans ~/.config/mise/config.toml # 3. Installer tous les outils déclarés dans ~/.config/mise/config.toml et ~/.config/mise/conf.d/*.toml
if command -v mise &>/dev/null; then if command -v mise &>/dev/null; then
echo "⚡ Installation des outils via Mise (dont chezmoi si désiré)..." echo "⚡ Installation des outils via Mise (dont chezmoi si désiré)..."
mise install --yes mise install --yes
+51 -4
View File
@@ -1,12 +1,59 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Déclencheur automatique : ce script se réexécutera si le config.toml de mise change. # Déclencheur automatique : ce script régénère les toolboxes mise
# hash: {{ include "private_dot_config/mise/config.toml.tmpl" | sha256sum }} # (~/.config/mise/conf.d/<toolbox>.toml) à partir de .chezmoidata/tools.yaml
# et .chezmoidata/hosts.yaml, puis (ré)installe les outils.
# Il se réexécute automatiquement dès que ces données changent, car la boucle
# ci-dessous fait partie du contenu templaté (donc du hash) de ce script.
# hash config.toml: {{ includeTemplate "private_dot_config/mise/config.toml.tmpl" . | sha256sum }}
set -euo pipefail
export PATH="${HOME}/.local/bin:$PATH" export PATH="${HOME}/.local/bin:$PATH"
MISE_CONF_D="${HOME}/.config/mise/conf.d"
mkdir -p "$MISE_CONF_D"
{{- $hostname := output "hostname" | trim -}}
{{- $username := .chezmoi.username -}}
{{- $currentHost := index .hosts $hostname -}}
{{- $currentUser := "" -}}
{{- if $currentHost -}}
{{- if hasKey $currentHost.users $username -}}
{{- $currentUser = index $currentHost.users $username -}}
{{- end -}}
{{- end }}
echo "✏️ Génération des toolboxes mise pour {{ $username }}@{{ $hostname }}..."
declare -A active_toolboxes=(
{{- if $currentUser }}
{{- range $toolboxName := $currentUser.toolboxes }}
["{{ $toolboxName }}"]=1
{{- end }}
{{- end }}
)
# Suppression des toolboxes qui ne sont plus assignées à cet hôte/utilisateur
for f in "$MISE_CONF_D"/*.toml; do
[ -e "$f" ] || continue
name="$(basename "$f" .toml)"
if [ -z "${active_toolboxes[$name]:-}" ]; then
echo "🗑️ Toolbox obsolète supprimée : $name"
rm -f "$f"
fi
done
{{ if $currentUser }}
{{- range $toolboxName := $currentUser.toolboxes }}
{{- $toolsList := index $.tools.toolboxes $toolboxName }}
{{- if $toolsList }}
echo " → {{ $toolboxName }}.toml"
cat > "$MISE_CONF_D/{{ $toolboxName }}.toml" <<'MISE_TOOLBOX_EOF'
{{ includeTemplate "mise-toolbox-conf" (merge (dict "toolboxName" $toolboxName) $) }}
MISE_TOOLBOX_EOF
{{- end }}
{{- end }}
{{- end }}
if command -v mise &>/dev/null; then if command -v mise &>/dev/null; then
echo "✏️ Modification de la configuration mise détectée."
echo echo
echo "🚀 Mise bootstrap..." echo "🚀 Mise bootstrap..."
mise bootstrap --yes mise bootstrap --yes