Compare commits

..
21 Commits
Author SHA1 Message Date
xavier 7d7c3fdebc feat(zsh): Add support for zsh 2026-07-22 23:47:16 +02:00
xavier d382d8228d feat(starship): Improve configuration for starship.rs 2026-07-22 23:47:16 +02:00
xavier 970401923d feat(starship): Improve configuration for starship.rs 2026-07-22 23:47:16 +02:00
xavier 683686a185 feat(starship): Improve configuration for starship.rs 2026-07-22 23:47:16 +02:00
xavier e0246c8e83 feat(starship): Improve configuration for starship.rs 2026-07-22 23:47:16 +02:00
xavier 47432de531 fix(data): Fix username for the cloud server in chezmoi data
(xavier -> ubuntu)
2026-07-22 23:47:16 +02:00
xavier 41d4fa339e feat(mise): Add dev-tools toolbox for root on all hosts 2026-07-22 23:47:16 +02:00
xavier db95e506a8 feat(starship): Improve prompt 2026-07-22 23:47:16 +02:00
xavier f12650940d feat(mise): Review config for hosts/users/tools 2026-07-22 23:47:16 +02:00
xavierandClaude Sonnet 5 9de10617a2 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-22 23:47:16 +02:00
xavierandClaude Sonnet 5 4bb26d8b93 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-22 23:47:16 +02:00
xavier be06aca720 feat: Improve starship prompt 2026-07-22 23:47:16 +02:00
xavier 64b541fb7c feat: Add config file for starship prompt utility
See https://starship.rs/config/
2026-07-22 23:47:16 +02:00
xavier d9407a5bf2 feat(mise): Add starship prompt utility to the terminal toolbox 2026-07-22 23:47:16 +02:00
xavier cabfd027da chore: Small improvments... 2026-07-22 23:47:16 +02:00
xavier b11ff013fa fix(mise): Fix script to autoinstall tools when mise config change 2026-07-22 23:47:16 +02:00
xavier 406efd6b29 feat: Some adaptations for termux 2026-07-22 23:47:16 +02:00
xavier 1bbafd43ce feat(mise): Add a script to automatically run a mise install when mise config changes 2026-07-22 23:47:16 +02:00
xavier df2dd4077e fix(mise): Fix tool options for tea (quoting) 2026-07-22 23:47:16 +02:00
xavier ee71747211 test: Prepare for cloning password store 2026-07-15 15:55:21 +02:00
xavier 72e37651e9 feat: Add TODO.md 2026-07-15 15:54:58 +02:00
17 changed files with 137 additions and 458 deletions

No files matched your search

+1 -4
View File
@@ -51,11 +51,10 @@ hosts:
tools:
- sops
- age
- cargo:rage
configs: {}
# Termux (application de terminal pour android)
termux-debian:
packages:
- apt:zsh
users:
root:
toolboxes:
@@ -66,8 +65,6 @@ hosts:
- terminal
- dev-tools
termux-ubuntu:
packages:
- apt:zsh
users:
root:
toolboxes:
+2 -4
View File
@@ -16,7 +16,6 @@ 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:
- jq
- yq
@@ -26,7 +25,7 @@ tools:
- gh
- tea:
url: "https://gitea.com/gitea/tea/releases/download/v{{ version }}/tea-{{ version }}-{{ os() }}-{{ arch(x64='amd64') }}.xz"
version: "0.15.1"
version: "0.14.2"
dev-languages:
- python
- uv
@@ -34,6 +33,7 @@ tools:
- node
- go
- rust
- cargo-binstall
devops:
- docker-cli
- podman
@@ -54,8 +54,6 @@ tools:
- claude
- gemini-cli
- codex
- copilot
- opencode
# # Password managers
# # vault = "latest"
-6
View File
@@ -4,12 +4,6 @@
".config/bash":
type: git-repo
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
##### [ VIM ] #####
-4
View File
@@ -1,4 +0,0 @@
#
# 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,15 +41,3 @@
{{- 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
@@ -1,17 +0,0 @@
{{/* .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 }}
+24 -6
View File
@@ -10,12 +10,14 @@
{{- end }}
{{- end }}
{{- if $currentUser }}
{{- /* Les outils individuels (la liste 'tools:' de l'utilisateur) */}}
{{- if hasKey $currentUser "tools" }}
{{- if $currentUser.tools }}
{{- /* 1. Parcourir les toolboxes associées à cet hôte */}}
{{- range $toolboxName := $currentUser.toolboxes }}
{{- /* Récupérer la liste des outils pour cette toolbox dans tools.yaml */}}
{{- $toolsList := index $.tools.toolboxes $toolboxName }}
{{- if $toolsList }}
# Outils individuels
{{- range $tool := $currentUser.tools }}
# Toolbox: {{ $toolboxName }}
{{- range $tool := $toolsList }}
{{- /* Un outil est soit une chaîne ("nom"), soit un objet { nom: {version, ...params mise} } */}}
{{- if kindIs "map" $tool }}
{{- range $toolName, $params := $tool }}
@@ -27,7 +29,23 @@
{{- 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 }}
# Aucun profil trouvé dans hosts.yaml pour l'utilisateur {{ $username }} sur la machine : {{ $hostname }}
{{- else }}
-13
View File
@@ -46,19 +46,6 @@ shell-integration-features = sudo
gtk-titlebar-hide-when-maximized = true
maximize
# Ouvre les nouvelles fenêtres avec un répertoire de travail dans $HOME
window-inherit-working-directory = false
# Ouvre les nouveaux onglets avec un répertoire de travail dans $HOME
tab-inherit-working-directory = false
# mais les nouveaux splits dans le répertoire courant
split-inherit-working-directory = true
# Permet d'ouvrir un nouvel onglet en conservant le répertoire de travail courant
# keybind = shift+alt+t=new_tab:current
keybind = ctrl+b>n=new_window
keybind = ctrl+b>t=new_tab
keybind = ctrl+b>z=toggle_split_zoom
keybind = ctrl+b>`=toggle_quick_terminal
# Systemd and D-Bus Integration
quit-after-last-window-closed = true
quit-after-last-window-closed-delay = 5m
+47
View File
@@ -0,0 +1,47 @@
[core]
excludesfile = ~/.config/git/ignore
attributesfile = ~/.config/git/attributes
pager = delta
[user]
name = Xavier Logerais
email = xavier@logerais.com
[credential]
helper = cache
[credential "https://gitea.logerais.com"]
helper = cache
helper = !tea login helper
[credential "https://gitea.cloud.logerais.com"]
helper = cache
helper = !tea login helper
[init]
defaultBranch = main
[rerere]
enabled = 1
[merge]
conflictstyle = diff3
[page]
diff = delta
show = delta
log = delta
blame = delta
reflog = delta
[delta]
navigate = true
side-by-side = true
dark = true
syntax-theme = Coldark-Dark
[interactive]
diffFilter = delta --color-only
[alias]
tree = !git ls-files | tree --fromfile -C
-70
View File
@@ -1,70 +0,0 @@
{{- $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 -}}
{{- $gitConfig := dict -}}
{{- if and $currentUser (hasKey $currentUser "configs") -}}
{{- if hasKey $currentUser.configs "git" -}}
{{- $gitConfig = $currentUser.configs.git -}}
{{- end -}}
{{- end -}}
{{- $gitName := "Xavier Logerais" -}}
{{- $gitEmail := "xavier@logerais.com" -}}
{{- if hasKey $gitConfig "name" -}}
{{- $gitName = $gitConfig.name -}}
{{- end -}}
{{- if hasKey $gitConfig "email" -}}
{{- $gitEmail = $gitConfig.email -}}
{{- end -}}
[core]
excludesfile = ~/.config/git/ignore
attributesfile = ~/.config/git/attributes
pager = delta
[user]
name = {{ $gitName }}
email = {{ $gitEmail }}
[credential]
helper = cache
[credential "https://gitea.logerais.com"]
helper = cache
helper = !tea login helper
[credential "https://gitea.cloud.logerais.com"]
helper = cache
helper = !tea login helper
[init]
defaultBranch = main
[rerere]
enabled = 1
[merge]
conflictstyle = diff3
[page]
diff = delta
show = delta
log = delta
blame = delta
reflog = delta
[delta]
navigate = true
side-by-side = true
dark = true
syntax-theme = Coldark-Dark
[interactive]
diffFilter = delta --color-only
[alias]
tree = !git ls-files | tree --fromfile -C
+2 -2
View File
@@ -11,7 +11,7 @@ gui:
- bold
nerdFontsVersion: "3"
git:
diffRenderers:
pagers:
- colorArg: always
command: delta --paging=never
pager: delta --paging=never
parseEmoji: true
+5 -5
View File
@@ -1,4 +1,5 @@
{{ includeTemplate "chezmoi-managed-header" . }}
# Ce fichier est généré automatiquement par l'outil chezmoi
# Préférez apporter vos modification depuis chezmoi que directement ici
[settings]
experimental = true
@@ -9,7 +10,7 @@ binstall = true
######################### [ Bootstrap ] #########################
[bootstrap.packages]
{{ includeTemplate "mise-bootstrap-packages" . }}
{{ template "mise-bootstrap-packages" . }}
# coreutils grep less
# tig
@@ -35,9 +36,8 @@ chezmoi = "latest"
neovim = "latest"
tree-sitter = "latest"
# Individual tools automated with chezmoi
# (toolboxes from .chezmoidata/tools.yaml live in ~/.config/mise/conf.d/<toolbox>.toml)
{{ includeTemplate "mise-tools" . }}
# Tools automated with chezmoi
{{ template "mise-tools" . }}
# Password managers
# vault = "latest"
+43 -43
View File
@@ -1,48 +1,55 @@
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[ ](fg:#769ff0)\
$directory\
[](bg:#394260 fg:#769ff0)\
[](fg:#769ff0 bg:#394260)\
$git_branch\
$git_commit\
$git_status\
$git_state\
$mise\
$direnv\
$mise\
[](fg:#394260 bg:#212736)\
$rust\
$golang\
$rust\
$python\
$nodejs\
$docker_context\
$kubernetes\
$terraform\
[](fg:#212736)\
\n$character\
"""
$character"""
right_format = """
[](fg:#a3aed2)$time[](fg:#a3aed2)\
[](fg:#a3aed2)\
$time\
[ ](fg:#a3aed2)\
[](fg:#a3aed2)\
$shell\
$username\
[](fg:#394260 bg:#a3aed2)\
$os\
[](bg:#394260 fg:#a3aed2)\
$container\
$hostname\
"""
[hostname]
disabled = false
ssh_only = false
style = "bg:#394260 fg:#a3aed2"
format = '[$ssh_symbol]($style)[  $hostname ]($style)'
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:#394260 fg:#a3aed2"
format = '[ $symbol $name ]($style)'
format = '[ $symbol $name ]($style)'
[os]
disabled = false
style = "bg:#394260 fg:#a3aed2"
format = "[ $symbol $name ]($style)"
format = "[ $symbol ]($style)"
[username]
show_always = true
@@ -52,67 +59,60 @@ format = '[  $user ]($style)'
[shell]
disabled = false
bash_indicator = ' bash'
zsh_indicator = ' zsh'
fish_indicator = '󰈺 fish'
powershell_indicator = '_ Powershell'
bash_indicator = ' '
zsh_indicator = ' '
fish_indicator = '󰈺 '
powershell_indicator = '_'
unknown_indicator = 'unknown shell'
format = '[ $indicator ]($style)'
style = "bg:#a3aed2 fg:#212736"
format = '[ $indicator[](fg:#394260 bg:#a3aed2)]($style)'
[sudo]
disabled = false
[directory]
disabled = false
style = "fg:#e3e5e5 bg:#769ff0"
format = "[  $path ]($style)"
truncation_length = 5
truncation_symbol = "…/"
truncate_to_repo = false
style = "fg:#e3e5e5 bg:#769ff0"
format = "[  $path ]($style)"
[git_branch]
disabled = false
symbol = ""
style = "fg:#769ff0 bg:#394260 bold"
style = "fg:#769ff0 bg:#394260"
format = '[ $symbol $branch ]($style)'
[git_commit]
disabled = false
only_detached = true
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}](fg:#FFA500 bg:#394260)'
diverged = '⇕⇡${ahead_count}⇣${behind_count}'
up_to_date = ''
modified = '[$count󰷉 ](fg:#FFFF00 bg:#394260)'
staged = '[$count ](fg:#00D000 bg:#394260)'
deleted = '[$count ](fg:#FF0000 bg:#394260)'
renamed = '[$count󱀱 ](fg:#87CEEB bg:#394260)'
untracked = '[$count󱀶 ](fg:#CCCCCC bg:#394260)'
conflicted = '[$count󱪘 ](fg:#FF0000 bg:#394260)'
stashed = '[$count ](fg:#FFA500 bg:#394260)' # 󱁺 
style = "fg:#769ff0 bg:#394260"
format = '[$all_status$ahead_behind ]($style)'
[git_state]
disabled = false
style = "fg:#769ff0 bg:#394260"
format = '[ $state ($progress_current/$progress_total)]($style)'
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
style = "bg:#212736 fg:white"
format = '[$symbol$health]($style)'
[nodejs]
symbol = ""
@@ -153,7 +153,7 @@ format = '[[](fg:#212736 bg:#ffffff) $symbol $context [](fg:#ffffff bg:#21
[kubernetes]
disabled = false
symbol = ""
symbol = " "
style = "bg:#316ce6 fg:#a3aed2"
format = '[[](fg:#212736 bg:#316ce6) $symbol $context (\($namespace\))[](fg:#316ce6 bg:#212736)]($style)'
@@ -165,14 +165,14 @@ format = '[[](fg:#212736 bg:#1b1028) [$symbol](fg:#7b42bc bg:#1b1028) $worksp
[time]
disabled = false
time_format = '%T  󰃶 %A %e %B %Y'
style = "fg:#212736 bg:#a3aed2"
time_format = "%R" # Hour:Minute Format
style = "fg:#ffffff bg:#a3aed2"
format = '[  $time ]($style)'
# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[character]
success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) '
error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) '
vimcmd_symbol = '[[](fg:#007f00)  ViM mode [](fg:#007f00)](bg:#007f00) '
success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) '
error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) '
[os.symbols]
Windows = "󰍲"
+8 -5
View File
@@ -25,10 +25,12 @@ $docker_context\
$kubernetes\
$terraform\
[](fg:#212736)\
\n$character"""
\n$time\
$character"""
right_format = """
[](fg:#a3aed2)$time[](fg:#a3aed2)\
[](fg:#212736 bg:#1d2230)\
\n$time\
"""
[hostname]
@@ -163,12 +165,13 @@ format = '[[](fg:#212736 bg:#1b1028) [$symbol](fg:#7b42bc bg:#1b1028) $worksp
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "fg:#212736 bg:#a3aed2"
style = "fg:#a3aed2"
format = '[  $time ]($style)'
# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[character]
success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) '
error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) '
success_symbol = '[❯](bold green) '
error_symbol = '[󰚽 ❯](bold red) '
[os.symbols]
Windows = "󰍲"
-215
View File
@@ -1,215 +0,0 @@
#!/usr/bin/env bash
set -u
FAILED=0
STATUS_APT="not_detected"
STATUS_BREW="not_detected"
STATUS_CHEZMOI="not_detected"
STATUS_MISE="not_detected"
STATUS_NEOVIM="not_detected"
# Couleurs
BLUE='\e[00;34;49m'
GRAY='\e[02;37;49m'
RESET='\e[39;49;00m'
# Affiche un message stylisé sur la sortie standard
echo_bold() {
printf '\e[1m%s\e[0m\n' "$*"
}
# Affiche un message informatif stylisé sur la sortie d'erreur
echo_info() {
printf >&2 "\n${BLUE}󰋼 %s${RESET}\n\n" "$*"
}
echo_success() {
printf >&2 "\e[00;01;32;49m %s${RESET}\n" "$*"
}
echo_failed() {
printf >&2 "\e[00;01;31;49m✖ %s${RESET}\n" "$*"
}
echo_skipped() {
printf >&2 "${GRAY}󰜺 %s${RESET}\n" "$*"
}
run() {
local section="$1"
local name="$2"
shift 2
local start=$SECONDS
printf '⏳ [%s] %s...' "$section" "$name"
if "$@"; then
printf '\r\033[K'
echo_success "[$section] $name ($((SECONDS - start))s)"
else
printf '\r\033[K'
echo_failed "[$section] $name ($((SECONDS - start))s)"
# Marque la section comme échouée
eval "STATUS_${section^^}=failed"
FAILED=1
return 1
fi
}
echo
echo_bold "🚀 Mise à jour quotidienne"
echo
# ----------------------------------------------------------------------
# Debian / Ubuntu
# ----------------------------------------------------------------------
if [[ -f /etc/os-release ]]; then
. /etc/os-release
if [[ "$ID" == "debian" || "$ID" == "ubuntu" ]]; then
STATUS_APT="success"
if ((EUID == 0)); then
APT=(apt)
else
APT=(sudo apt)
fi
echo_info "APT"
run APT "Mise à jour des paquets" \
"${APT[@]}" update || true
run APT "Mise à niveau des paquets" \
"${APT[@]}" upgrade -y || true
run APT "Suppression des paquets inutiles" \
"${APT[@]}" autoremove -y || true
run APT "Nettoyage du cache" \
"${APT[@]}" autoclean || true
fi
fi
# ----------------------------------------------------------------------
# Homebrew
# ----------------------------------------------------------------------
if command -v brew >/dev/null 2>&1; then
STATUS_BREW="success"
echo_info "Brew"
run BREW "Mise à jour" \
brew update || true
run BREW "Mise à niveau des paquets" \
brew upgrade || true
fi
# ----------------------------------------------------------------------
# chezmoi
# ----------------------------------------------------------------------
if command -v chezmoi >/dev/null 2>&1; then
STATUS_CHEZMOI="success"
echo_info "chezmoi"
run CHEZMOI "Récupération de la configuration" \
chezmoi git pull || true
run CHEZMOI "Application de la configuration" \
chezmoi apply -v || true
fi
# ----------------------------------------------------------------------
# mise
# ----------------------------------------------------------------------
if command -v mise >/dev/null 2>&1; then
STATUS_MISE="success"
echo_info "mise"
run MISE "Mise à jour de mise" \
mise self-update -y || true
run MISE "Mise à jour des outils" \
mise up || true
fi
# ----------------------------------------------------------------------
# Neovim / AstroNvim
# ----------------------------------------------------------------------
if command -v nvim >/dev/null 2>&1; then
STATUS_NEOVIM="success"
echo_info "Neovim / AstroNvim"
run NEOVIM "Mise à jour d'AstroNvim" \
nvim --headless \
-c 'autocmd User AstroUpdateCompleted quitall' \
-c 'AstroUpdate' \
2>&1 || true
fi
# ----------------------------------------------------------------------
# Récapitulatif
# ----------------------------------------------------------------------
echo
echo_info "Récapitulatif"
echo
echo -n " ► "
case "$STATUS_APT" in
success) echo_success "APT : réussi" ;;
failed) echo_failed "APT : échoué" ;;
not_detected) echo_skipped "APT : non détecté" ;;
esac
echo -n " ► "
case "$STATUS_BREW" in
success) echo_success "Brew : réussi" ;;
failed) echo_failed "Brew : échoué" ;;
not_detected) echo_skipped "Brew : non détecté" ;;
esac
echo -n " ► "
case "$STATUS_CHEZMOI" in
success) echo_success "chezmoi : réussi" ;;
failed) echo_failed "chezmoi : échoué" ;;
not_detected) echo_skipped "chezmoi : non détecté" ;;
esac
echo -n " ► "
case "$STATUS_MISE" in
success) echo_success "mise : réussi" ;;
failed) echo_failed "mise : échoué" ;;
not_detected) echo_skipped "mise : non détecté" ;;
esac
echo -n " ► "
case "$STATUS_NEOVIM" in
success) echo_success "Neovim : réussi" ;;
failed) echo_failed "Neovim : échoué" ;;
not_detected) echo_skipped "Neovim : non détecté" ;;
esac
echo
if ((FAILED)); then
echo_failed "Mise à jour terminée avec des erreurs"
exit 1
else
echo_success "Toutes les mises à jour sont terminées"
exit 0
fi
+1 -1
View File
@@ -15,7 +15,7 @@ if command -v mise &>/dev/null; then
mise bootstrap --yes
fi
# 3. Installer tous les outils déclarés dans ~/.config/mise/config.toml et ~/.config/mise/conf.d/*.toml
# 3. Installer tous les outils déclarés dans ~/.config/mise/config.toml
if command -v mise &>/dev/null; then
echo "⚡ Installation des outils via Mise (dont chezmoi si désiré)..."
mise install --yes
+4 -51
View File
@@ -1,59 +1,12 @@
#!/usr/bin/env bash
# Déclencheur automatique : ce script régénère les toolboxes mise
# (~/.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
# Déclencheur automatique : ce script se réexécutera si le config.toml de mise change.
# hash: {{ include "private_dot_config/mise/config.toml.tmpl" | sha256sum }}
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
echo "✏️ Modification de la configuration mise détectée."
echo
echo "🚀 Mise bootstrap..."
mise bootstrap --yes