Compare commits

18 Commits
Author SHA1 Message Date
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
13 changed files with 420 additions and 77 deletions
+68 -30
View File
@@ -2,37 +2,75 @@
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:
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
termux-ubuntu:
users:
root:
toolboxes:
- terminal
- dev-tools
xavier:
toolboxes:
- terminal
- dev-tools
+21
View File
@@ -1,5 +1,26 @@
---
packages:
debian:
common:
- tar
- zip
- unzip
- manpages
- manpages-fr
- bash
- bash-completion
- screen
- tmux
- curl
- wget
- vim
- git
- tree
- build-essential
server: []
desktop:
- zsh
- fish
ubuntu:
common:
- tar
+26 -23
View File
@@ -2,27 +2,30 @@
tools:
toolboxes:
terminal:
- powerline-go
- lsd
- bat
- ripgrep
- fd
- gdu
- bottom
- dust
- fzf
- zoxide
- broot
- glow
- 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
- gdu # Fancy du replacement
- bottom # Fancy top replacement
- dust # Fancy du replacement
- fzf # Fuzzy finder
- zoxide # Quickly jump to previouously visited directories
- broot # Navigate easily inside the file system
- glow # Render markdown on the CLI
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
@@ -33,20 +36,20 @@ tools:
- 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
@@ -59,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" }
-6
View File
@@ -20,10 +20,4 @@
url: https://gitea.cloud.logerais.com/xavier/config-astronvim.git
refreshPeriod: 24h # Vérifie toutes les 24h
##### [ PASS ] #####
# ".password-store":
# type: git-repo
# url: https://gitea.cloud.logerais.com/xavier/pass.git
# refreshPeriod: 24h # Vérifie toutes les 24h
-1
View File
@@ -1,2 +1 @@
README.md
TODO.md
+10
View File
@@ -9,6 +9,16 @@
{{- end }}
{{- end -}}
{{/* Debian */}}
{{- if and (eq .chezmoi.os "linux") (hasKey .chezmoi "osRelease") (eq .chezmoi.osRelease.id "debian") -}}
# Debian common
{{- range .packages.debian.common }}
"apt:{{- . }}" = "latest"
{{- end }}
{{- end -}}
{{/* Ubuntu */}}
{{- if $isUbuntu }}
# Ubuntu common
+27 -10
View File
@@ -1,19 +1,28 @@
{{/* .chezmoitemplates/mise-tools */}}
{{- $hostname := .chezmoi.hostname -}}
{{- $hostname := output "hostname" | trim -}}
{{- $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 }}
@@ -21,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 }}
+3
View File
@@ -1,3 +1,6 @@
# Chezmoi
Ce dépôt contient ma configuration pour l'outil [chezmoi](https://www.chezmoi.io/) qui permet la gestion des fichiers dot files.
Pour lancer un bootstrap rapide de mon environnement complet, lancer la commande suivante :
`sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply https://gitea.cloud.logerais.com/xavier/config-chezmoi.git`
-6
View File
@@ -1,6 +0,0 @@
# TODO
- [ ] Review encryption workflow to manage git credentials (tea login helpers)
- [ ] Manage basic GPG Config (+ import of personnal public key)
- [ ] Integrate files from repo https://gitea.cloud.logerais.com/xavier/Ubuntu (with conditions)
- [ ] Manage fonts (See https://gitea.cloud.logerais.com/xavier/config-bootstrap/src/branch/master/fonts.bash)
+3
View File
@@ -1,3 +1,6 @@
# 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
+242
View File
@@ -0,0 +1,242 @@
"$schema" = 'https://starship.rs/config-schema.json'
format = """
$hostname\
$container\
[](fg:#212736 bg:#394260)\
$os\
[](fg:#394260 bg:#a3aed2)\
$username\
$shell\
[](fg:#a3aed2 bg:#769ff0)\
$directory\
[](fg:#769ff0 bg:#394260)\
$git_branch\
$git_commit\
$git_status\
$direnv\
$mise\
[](fg:#394260 bg:#212736)\
$golang\
$rust\
$python\
$nodejs\
$docker_context\
$kubernetes\
$terraform\
[](fg:#212736)\
\n$time\
$character"""
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 = "󰕈"
SUSE = ""
Raspbian = "󰐿"
Mint = "󰣭"
Macos = "󰀵"
Manjaro = ""
Linux = "󰌽"
Gentoo = "󰣨"
Fedora = "󰣛"
Alpine = ""
Amazon = ""
Android = ""
AOSC = ""
Arch = "󰣇"
Artix = "󰣇"
EndeavourOS = ""
CentOS = ""
Debian = "󰣚"
Redhat = "󱄛"
RedHatEnterprise = "󱄛"
Pop = ""
[directory.substitutions]
"Documents" = "󰈙 "
"Pictures" = " "
"Images" = " "
"Music" = " "
"Musique" = " "
"Downloads" = " "
"Téléchargements" = " "
"Developer" = "󰲋 "
# Nerdfont symbols
# 󰚽 󰗖 󰗠 󰅙 󰀨  󰅚
#   ✓ ✗ ✔ ✘
# ❬ ❭ ❮ ❯ ❰ ❱ ❲ ❳ ❴ ❵
# ➛ ➜ ➝ ➞ ➢ ➣ ➤
# Powerline colorsheme (from powerline source file colorsheme.py)
# 0x000000, 0xc00000, 0x008000, 0x804000, 0x0000c0, 0xc000c0, 0x008080, 0xc0c0c0, 0x808080, 0xff6060, # 0
# 0x00ff00, 0xffff00, 0x8080ff, 0xff40ff, 0x00ffff, 0xffffff, 0x000000, 0x00005f, 0x000087, 0x0000af, # 1
# 0x0000d7, 0x0000ff, 0x005f00, 0x005f5f, 0x005f87, 0x005faf, 0x005fd7, 0x005fff, 0x008700, 0x00875f, # 2
# 0x008787, 0x0087af, 0x0087d7, 0x0087ff, 0x00af00, 0x00af5f, 0x00af87, 0x00afaf, 0x00afd7, 0x00afff, # 3
# 0x00d700, 0x00d75f, 0x00d787, 0x00d7af, 0x00d7d7, 0x00d7ff, 0x00ff00, 0x00ff5f, 0x00ff87, 0x00ffaf, # 4
# 0x00ffd7, 0x00ffff, 0x5f0000, 0x5f005f, 0x5f0087, 0x5f00af, 0x5f00d7, 0x5f00ff, 0x5f5f00, 0x5f5f5f, # 5
# 0x5f5f87, 0x5f5faf, 0x5f5fd7, 0x5f5fff, 0x5f8700, 0x5f875f, 0x5f8787, 0x5f87af, 0x5f87d7, 0x5f87ff, # 6
# 0x5faf00, 0x5faf5f, 0x5faf87, 0x5fafaf, 0x5fafd7, 0x5fafff, 0x5fd700, 0x5fd75f, 0x5fd787, 0x5fd7af, # 7
# 0x5fd7d7, 0x5fd7ff, 0x5fff00, 0x5fff5f, 0x5fff87, 0x5fffaf, 0x5fffd7, 0x5fffff, 0x870000, 0x87005f, # 8
# 0x870087, 0x8700af, 0x8700d7, 0x8700ff, 0x875f00, 0x875f5f, 0x875f87, 0x875faf, 0x875fd7, 0x875fff, # 9
# 0x878700, 0x87875f, 0x878787, 0x8787af, 0x8787d7, 0x8787ff, 0x87af00, 0x87af5f, 0x87af87, 0x87afaf, # 10
# 0x87afd7, 0x87afff, 0x87d700, 0x87d75f, 0x87d787, 0x87d7af, 0x87d7d7, 0x87d7ff, 0x87ff00, 0x87ff5f, # 11
# 0x87ff87, 0x87ffaf, 0x87ffd7, 0x87ffff, 0xaf0000, 0xaf005f, 0xaf0087, 0xaf00af, 0xaf00d7, 0xaf00ff, # 12
# 0xaf5f00, 0xaf5f5f, 0xaf5f87, 0xaf5faf, 0xaf5fd7, 0xaf5fff, 0xaf8700, 0xaf875f, 0xaf8787, 0xaf87af, # 13
# 0xaf87d7, 0xaf87ff, 0xafaf00, 0xafaf5f, 0xafaf87, 0xafafaf, 0xafafd7, 0xafafff, 0xafd700, 0xafd75f, # 14
# 0xafd787, 0xafd7af, 0xafd7d7, 0xafd7ff, 0xafff00, 0xafff5f, 0xafff87, 0xafffaf, 0xafffd7, 0xafffff, # 15
# 0xd70000, 0xd7005f, 0xd70087, 0xd700af, 0xd700d7, 0xd700ff, 0xd75f00, 0xd75f5f, 0xd75f87, 0xd75faf, # 16
# 0xd75fd7, 0xd75fff, 0xd78700, 0xd7875f, 0xd78787, 0xd787af, 0xd787d7, 0xd787ff, 0xd7af00, 0xd7af5f, # 17
# 0xd7af87, 0xd7afaf, 0xd7afd7, 0xd7afff, 0xd7d700, 0xd7d75f, 0xd7d787, 0xd7d7af, 0xd7d7d7, 0xd7d7ff, # 18
# 0xd7ff00, 0xd7ff5f, 0xd7ff87, 0xd7ffaf, 0xd7ffd7, 0xd7ffff, 0xff0000, 0xff005f, 0xff0087, 0xff00af, # 19
# 0xff00d7, 0xff00ff, 0xff5f00, 0xff5f5f, 0xff5f87, 0xff5faf, 0xff5fd7, 0xff5fff, 0xff8700, 0xff875f, # 20
# 0xff8787, 0xff87af, 0xff87d7, 0xff87ff, 0xffaf00, 0xffaf5f, 0xffaf87, 0xffafaf, 0xffafd7, 0xffafff, # 21
# 0xffd700, 0xffd75f, 0xffd787, 0xffd7af, 0xffd7d7, 0xffd7ff, 0xffff00, 0xffff5f, 0xffff87, 0xffffaf, # 22
# 0xffffd7, 0xffffff, 0x080808, 0x121212, 0x1c1c1c, 0x262626, 0x303030, 0x3a3a3a, 0x444444, 0x4e4e4e, # 23
# 0x585858, 0x626262, 0x6c6c6c, 0x767676, 0x808080, 0x8a8a8a, 0x949494, 0x9e9e9e, 0xa8a8a8, 0xb2b2b2, # 24
# 0xbcbcbc, 0xc6c6c6, 0xd0d0d0, 0xdadada, 0xe4e4e4, 0xeeeeee # 25
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# 1. Installer Mise s'il n'est pas présent
if ! command -v mise &>/dev/null; then
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# 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"
if command -v mise &>/dev/null; then
echo "✏️ Modification de la configuration mise détectée."
echo
echo "🚀 Mise bootstrap..."
mise bootstrap --yes
echo
echo "⚡ Mise install..."
mise install --yes
else
echo "⚠️ mise n'est pas installé sur ce système. Impossible de lancer l'installation automatique des outils."
fi