Compare commits
3
Commits
main
..
649cfe25b3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
649cfe25b3 | ||
|
|
12fad1e849 | ||
|
|
3af209a689 |
No files matched your search
@@ -51,6 +51,7 @@ hosts:
|
||||
tools:
|
||||
- sops
|
||||
- age
|
||||
- cargo:rage
|
||||
configs: {}
|
||||
# Termux (application de terminal pour android)
|
||||
termux-debian:
|
||||
|
||||
@@ -26,7 +26,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
|
||||
@@ -54,8 +54,6 @@ tools:
|
||||
- claude
|
||||
- gemini-cli
|
||||
- codex
|
||||
- copilot
|
||||
- opencode
|
||||
|
||||
# # Password managers
|
||||
# # vault = "latest"
|
||||
|
||||
@@ -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 ] #####
|
||||
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -11,7 +11,7 @@ gui:
|
||||
- bold
|
||||
nerdFontsVersion: "3"
|
||||
git:
|
||||
diffRenderers:
|
||||
pagers:
|
||||
- colorArg: always
|
||||
command: delta --paging=never
|
||||
pager: delta --paging=never
|
||||
parseEmoji: true
|
||||
@@ -1,4 +1,4 @@
|
||||
{{ includeTemplate "chezmoi-managed-header" . }}
|
||||
{{ template "chezmoi-managed-header" . }}
|
||||
|
||||
[settings]
|
||||
experimental = true
|
||||
@@ -9,7 +9,7 @@ binstall = true
|
||||
######################### [ Bootstrap ] #########################
|
||||
|
||||
[bootstrap.packages]
|
||||
{{ includeTemplate "mise-bootstrap-packages" . }}
|
||||
{{ template "mise-bootstrap-packages" . }}
|
||||
|
||||
# coreutils grep less
|
||||
# tig
|
||||
@@ -35,9 +35,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"
|
||||
|
||||
@@ -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"
|
||||
format = '[ $time ]($style)'
|
||||
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 = ""
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user