Compare commits

73 Commits
Author SHA1 Message Date
xavier 4f004fee15 feat(rc): Improve fzf configuration 2026-07-22 23:29:41 +02:00
xavier 2d8b9a5309 feat(profile): use existing helpers to manage profile files (just like rc ones) 2026-07-22 22:19:07 +02:00
xavier ee5e92e0a4 feat(profile): change LANG value to something more standard 2026-07-22 22:17:50 +02:00
xavier 32c0b021c5 feat(rc): Add preference for starship prompt over powerline-go 2026-07-16 19:00:51 +02:00
xavier f2c78152cc feat(rc): Add support for vivid tool to beautify LS_COLORS 2026-07-16 18:54:01 +02:00
xavier 7e007b5b0d feat(rc): Fix prompt choice 2026-07-16 18:47:44 +02:00
xavier 76ce8a4758 feat(rc): Add support for vivid tool 2026-07-15 19:36:34 +02:00
xavier e8eba3619a feat: Move prefered apps logic from profile.d to rc.d
Without this, mise is not yet activated when evaluating the prefered
apps scripts and mise installed apps are considered not installed (for
exemple nvim for the EDITOR variable)
2026-07-14 18:20:41 +02:00
xavier d6290589cf feat: Remove inputrc file that is now managed by chezmoi 2026-07-14 00:31:42 +02:00
xavier e40045aa99 feat: Improve way to determine and set the path containing the bash config
Before this:
The bash config repo needed to be cloned in ~/.bash/ to work properly

After this:
The bash config repo can be move anywhere (for exemple in
~/.config/bash).
The create-links.bash helper is adapted to this new behaviour.
So you can clone anywhere and call create-links.bash from anywhere. Then
the symbolic links in your home should be good and the config would load
correctly.
2026-07-13 12:44:45 +02:00
Xavier Logerais 6f7aec9147 feat(libs): Improve colors lib 2025-11-21 19:44:12 +00:00
Xavier Logerais c4a93c7647 feat(rc): Smart titles for tmux windows 2025-11-21 19:43:35 +00:00
Xavier Logerais 8d98936961 feat: Add fzf-git as 3rd party module 2025-11-21 19:42:04 +00:00
xavier 5f8997f418 chore(rc): fzf integration config spacing rework 2025-11-03 01:34:40 +01:00
xavier 693d20f2cf feat(aliases): Improve aliases for kitty 2025-11-03 01:33:44 +01:00
xavier db981696b6 fix: activate mise early
because some tools set in rc.d (like fzf, ...) depends on it
2025-11-03 01:24:52 +01:00
xavier 594a212ebc chore(rc): rework fzf integration config 2025-11-01 12:53:41 +01:00
xavier 8fef2338eb feat(aliases): Add aliases for kitty 2025-10-24 12:48:22 +02:00
xavier ea9139f77f feat(completion): Add autocompletion for tea
`tea` is the command line tool for Gitea.
2025-10-02 22:41:47 +02:00
xavier 15a56af2c8 chores(completion): spaces 2025-10-02 22:40:57 +02:00
xavier a56929aa8b feat(aliases): Add some aliases for cd 2025-09-28 19:03:11 +02:00
xavier 526e6cae26 feat(functions): Add a function to start and log into the devenv container 2025-09-28 17:55:51 +02:00
xavier 1a003a9d72 feat(bashrc): Add management for functions 2025-09-28 17:55:51 +02:00
xavier 2b51dfd554 feat(bashrc): remove z.sh third party library
Better use zoxide (See https://github.com/ajeetdsouza/zoxide).
(It is available with mise. Just `mise use -g zoxide`.)
2025-09-28 17:52:54 +02:00
xavier d078a852df fix(profile): fix keychain inheritance 2025-09-28 17:50:30 +02:00
Xavier Logerais 2aaf279c9e feat(libs): Prise en compte de tmux dans la fonction term_change_title 2025-03-27 11:35:46 +00:00
Xavier Logerais 5b0012ffc1 feat(rc): Ajout du support de fzf 2025-03-21 09:37:27 +00:00
Xavier Logerais af4fb0e5fa feat(rc): Ajout de l'outil zoxide 2025-03-15 22:37:34 +00:00
xavier 8fc95d8e90 feat(completion): Ajout de la completion pour l'outil chezmoi 2025-03-13 00:20:24 +01:00
xavier a5dd0be77c feat(aliases): Ajout d'un alias pour lsd
Ajout de l'alias lt pour `lsd --tree` qui est un équivalent de la
commande `tree`.
2025-03-13 00:20:24 +01:00
xavier 981430eef1 feat(completion): Amélioration de la complétion pour mise 2025-03-13 00:20:24 +01:00
xavier c7be86ecb6 fix: fix submodule directory 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier 611bab8f2f feat: Add 3rd party libs 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier 333a7d8b46 feat: Ajout des répertoires rc.before.d et rc.after.d 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier c53e964ce9 feat: Améliore la gestion pour sourcer le contenu des sous-répertoires (*.d) 2025-03-13 00:20:24 +01:00
xavier 5cb8b5dfaf feat(rc): Amélioration de la gestion de tmux 2025-03-13 00:19:53 +01:00
Xavier Logerais 08916f80b6 feat(completion): Ajout du support de minikube 2025-01-17 09:07:56 +00:00
Xavier Logerais 9324547f92 feat(completion): Ajout du support de k3d 2025-01-17 09:07:23 +00:00
Xavier Logerais 1c34023066 feat(completion): Ajout du support de flux 2025-01-17 09:07:04 +00:00
Xavier Logerais cd341b7d80 feat(rc): Amélioration de la gestion de anyenv 2025-01-17 09:05:56 +00:00
Xavier Logerais af5d43fb36 feat(rc): Amélioration de la gestion de tmux 2025-01-17 09:05:09 +00:00
Xavier Logerais ddd9509d74 feat(rc): Amélioration de la gestion de mcfly 2025-01-17 09:04:46 +00:00
Xavier Logerais 30597e31ed feat(profile): Amélioration de la gestion de keychain 2025-01-17 09:03:53 +00:00
Xavier Logerais ebb0139dbe feat(profile): Amélioration de la gestions des applications par défaut 2025-01-17 09:03:19 +00:00
Xavier Logerais 3759b1b0ac feat: Amélioration des aliases pour kubectl 2025-01-17 08:59:20 +00:00
Xavier Logerais 5f0ab15c42 feat: Ajout d'un alias automatique pour bat (improved cat) 2025-01-17 08:55:27 +00:00
Xavier Logerais 9e5fcc649e feat: Modification completion aws 2024-07-29 08:19:18 +00:00
Xavier Logerais 5d71c2aa96 feat: Ajout completion pour glab 2024-07-29 08:18:30 +00:00
Xavier Logerais af4807ed97 feat: Amélioration de la librairie colors 2024-07-19 10:32:08 +00:00
Xavier Logerais f41e1c2411 fix: Meilleure gestion de Nix dans le bash_profile 2024-07-18 09:26:38 +00:00
Xavier Logerais c2c0a11402 feat: Corrections shellcheck 2024-06-28 10:28:56 +00:00
Xavier Logerais 268ad94470 feat: Désactivation de librairies obsolettes 2024-06-28 10:28:18 +00:00
Xavier Logerais a6905b9489 feat: Suppression completion ssh obsolete 2024-06-28 09:44:32 +00:00
Xavier Logerais 84ffaf33d2 feat: Ajout alias pour taskwarrior-tui 2024-06-28 09:00:56 +00:00
Xavier Logerais ce15f00b6f feat: Ajout automatique de la compltetion pour les aliases si _complete_alias est disponible 2024-06-28 08:32:11 +00:00
Xavier Logerais cb323ec6c0 feat: Utilise nullglob pour éviter les erreurs de répertoires vides 2024-06-28 08:31:10 +00:00
Xavier Logerais 0c749a5fd0 feat: Définit des aliases plus génériques pour cd 2024-06-28 08:29:40 +00:00
Xavier Logerais 1338369be7 feat: Ajout completion pour kind 2024-06-24 09:24:49 +00:00
Xavier Logerais 9535c409e7 feat: Ajout completion pour podman 2024-06-24 09:24:32 +00:00
Xavier Logerais a5671801de fix: Annulation déplacement de asdf et mise vers profile.d 2024-06-21 17:15:19 +00:00
Xavier Logerais df6de3cdbb feat: Réécriture gestion des prompts dans rc.d 2024-06-21 16:49:23 +00:00
Xavier Logerais f651195b22 fix: Correction activation ble.sh 2024-06-21 16:48:06 +00:00
Xavier Logerais 640df9986c fix: Correction gestion direnv lorsqu'il n'est pas installé via asdf 2024-06-21 16:47:07 +00:00
Xavier Logerais 2140f57862 feat: Ajout support ble.sh installé depuis Nix 2024-06-21 13:23:29 +00:00
Xavier Logerais 167be1c6a1 feat: Ajout support asdf-vm installé depuis Nix 2024-06-21 13:22:52 +00:00
Xavier Logerais 0b8bba8c9b feat: Meilleure gestion des applications par défaut 2024-06-21 13:21:56 +00:00
Xavier Logerais 8fcea3473a chore: Nettoyage configuration krew dans rc.d 2024-06-20 09:51:04 +00:00
Xavier Logerais aa9835f8bd feat: shellcheck 2024-06-19 09:19:05 +00:00
Xavier Logerais c9411bb43d feat: Ajout de krew dans $PATH si nécéssaire 2024-06-18 12:45:37 +00:00
Xavier Logerais c9bb673a15 feat: Ajout completion pour mise 2024-06-18 12:44:05 +00:00
Xavier Logerais ee3626059c feat: Déplacement initialisation mise de rc.d vers profile.d 2024-06-18 12:43:23 +00:00
Xavier Logerais 9fddab2e35 feat: Déplacement initialisation asdf de rc.d vers profile.d 2024-06-18 12:42:52 +00:00
Xavier Logerais 2fa4a55223 feat: Ajout d'aliases pour kubectl 2024-06-18 12:30:05 +00:00
59 changed files with 671 additions and 305 deletions
+9
View File
@@ -0,0 +1,9 @@
[submodule "3rd-party/z"]
path = 3rd-party/z
url = https://github.com/rupa/z.git
[submodule "3rd-party/complete-alias"]
path = 3rd-party/complete-alias
url = https://github.com/cykerway/complete-alias.git
[submodule "3rd-party/junegunn/fzf-git.sh"]
path = 3rd-party/junegunn/fzf-git.sh
url = https://github.com/junegunn/fzf-git.sh
Vendored Submodule
+1
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
function basedir() {
(cd "$(dirname \"$-2\")" && pwd)
}
function _source_file_if_exists() {
if [ -r "$1" ]; then
test -n "$DEBUG_BASHRC" && echo "-- Sourcing file $1"
source "$1"
fi
}
function _source_dir_files() {
if [ -d "$1" ]; then
test -n "$DEBUG_BASHRC" && echo "-- Sourcing files in directory $1"
# Safe loops for empty dirs
shopt -s nullglob
for file in "$1"/*; do
if [ -e "$file" ]; then
test -n "$DEBUG_BASHRC" && echo " * sourcing file $file"
source "$file"
fi
done
# Restore option nullglob to normal
shopt -u nullglob
fi
}
# Source : https://superuser.com/questions/39751/add-directory-to-path-if-its-not-already-there
_path_add() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
PATH="${PATH:+"$PATH:"}$1"
fi
}
_prompt_command_add() {
if [ -n "$1" ] && [[ ":$PROMPT_COMMAND:" != *":$1:"* ]]; then
PROMPT_COMMAND="${PROMPT_COMMAND:+"$PROMPT_COMMAND;"}$1"
fi
}
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v bat &>/dev/null); then
alias cat=bat
fi
+7 -6
View File
@@ -1,6 +1,7 @@
alias cdrepo='cd ~/repositories/' alias cdrepo='cd ~/Repositories/'
alias cddns='cd ~/repositories/dns && git pull' alias cdgithub='cd ~/Repositories/Github'
alias cdfai='cd ~/repositories/fai && git pull' alias cdgitlab='cd ~/Repositories/Gitlab'
alias cdpuppet='cd ~/repositories/puppet && git pull' alias cdgitea='cd ~/Repositories/Gitea'
alias cdhiera='cd ~/repositories/hiera && git pull' alias cdgh=cdgithub
alias cdshinken='cd ~/repositories/shinken && git pull' alias cdgl=cdgitlab
alias cdgt=cdgitea
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# [ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh"
if [ -n "${KITTY_INSTALLATION_DIR}" ]; then
alias ssh="kitty +kitten ssh"
alias icat="kitty +kitten icat"
fi
+15 -8
View File
@@ -1,14 +1,21 @@
#!/bin/bash #!/bin/bash
if (command -v kubectl &> /dev/null) if (command -v kubectl &>/dev/null); then
then
# create some usefull aliases
alias k="kubectl"
alias kg="kubectl get"
alias kd="kubectl describe"
# create a quick alias
alias k=kubectl
alias ks="kubectl --namespace kube-system" alias ks="kubectl --namespace kube-system"
alias ksg="kubectl --namespace kube-system get"
alias ksd="kubectl --namespace kube-system describe"
alias kga="kubectl get --all-namespaces"
alias kuc="kubectl config unset current-context"
alias kun="kubectl config set-context --current --namespace="
# add completion for the alias as well alias kgnodes="kubectl get nodes --label-columns topology.kubernetes.io/region,topology.kubernetes.io/zone"
complete -o default -F __start_kubectl k alias kgmasters="kubectl get nodes --selector 'node-role.kubernetes.io/control-plane' --label-columns topology.kubernetes.io/region,topology.kubernetes.io/zone"
complete -o default -F __start_kubectl ks alias kgworkers="kubectl get nodes --selector '!node-role.kubernetes.io/control-plane' --label-columns topology.kubernetes.io/region,topology.kubernetes.io/zone"
alias kgtaints="kubectl get nodes --output custom-columns=NAME:.metadata.name,TAINTS:.spec.taints"
fi fi
+2 -1
View File
@@ -2,5 +2,6 @@
if (command -v lsd &> /dev/null) if (command -v lsd &> /dev/null)
then then
alias ls=lsd alias ls='lsd'
alias lt='lsd --tree'
fi fi
+5
View File
@@ -9,3 +9,8 @@ then
alias td='task done' alias td='task done'
alias ts='task sync' alias ts='task sync'
fi fi
if (command -v taskwarrior-tui &> /dev/null)
then
alias tu='taskwarrior-tui'
fi
+45 -3
View File
@@ -1,8 +1,50 @@
#!/bin/bash #!/bin/bash
if [ -f $HOME/.bash/profile ]; then source $HOME/.bash/profile; fi if [ -f "${HOME}"/.nix-profile/etc/profile.d/hm-session-vars.sh ]; then
if [ -d $HOME/.bash/profile ]; then for file in $(ls $HOME/.bash/profile/*); do source $file; done; fi source "${HOME}"/.nix-profile/etc/profile.d/hm-session-vars.sh
if [ -d $HOME/.bash/profile.d ]; then for file in $(ls $HOME/.bash/profile.d/*); do source $file; done; fi fi
# Define the path to the directory of this file if not already set
if [ -z "${BASH_CONFIG_DIR}" ]; then
# Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
# Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
(cd "$(dirname "${target}")" && pwd -P)
}
BASH_CONFIG_DIR=$(get_script_dir)
fi
# Source some helpers functions
source "${BASH_CONFIG_DIR}/_helpers.bash"
_source_file_if_exists "${BASH_CONFIG_DIR}/profile"
_source_dir_files "${BASH_CONFIG_DIR}/profile"
_source_dir_files "${BASH_CONFIG_DIR}/profile.d"
# This file is sourced by bash for login shells. The following line # This file is sourced by bash for login shells. The following line
# runs your .bashrc and is recommended by the bash info pages. # runs your .bashrc and is recommended by the bash info pages.
+74 -11
View File
@@ -11,23 +11,86 @@ if [[ $- != *i* ]] ; then
return return
fi fi
# DEBUG_BASHRC=true
# Define the path to the directory of this file if not already set
if [ -z "${BASH_CONFIG_DIR}" ]; then
# Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
# Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
(cd "$(dirname "${target}")" && pwd -P)
}
BASH_CONFIG_DIR=$(get_script_dir)
fi
# Source some helpers functions
source "${BASH_CONFIG_DIR}/_helpers.bash"
# Source custom libs # Source custom libs
if [ -d $HOME/.bash/libs ]; then for lib in $(ls $HOME/.bash/libs/*.bash); do source $lib; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/libs
# Source 3rd party libs if they exists
_source_file_if_exists "${BASH_CONFIG_DIR}/3rd-party/complete-alias/complete_alias"
_source_file_if_exists "${BASH_CONFIG_DIR}/3rd-party/junegunn/fzf-git.sh/fzf-git.sh"
# Early customization
_source_dir_files "${BASH_CONFIG_DIR}"/rc.before.d
# Source rc.d/* # Source rc.d/*
if [ -d $HOME/.bash/rc.d ]; then for file in $(ls $HOME/.bash/rc.d/*); do source $file; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/rc
_source_dir_files "${BASH_CONFIG_DIR}"/rc.d
# Source functions definitions
_source_file_if_exists ~/.bash_functions
_source_file_if_exists "${BASH_CONFIG_DIR}"/functions
_source_dir_files "${BASH_CONFIG_DIR}"/functions
_source_dir_files "${BASH_CONFIG_DIR}"/functions.d
# Source alias definitions # Source alias definitions
if [ -f $HOME/.bash_aliases ]; then source $HOME/.bash_aliases; fi _source_file_if_exists ~/.bash_aliases
if [ -f $HOME/.bash/aliases ]; then source $HOME/.bash/aliases; fi _source_file_if_exists "${BASH_CONFIG_DIR}"/aliases
if [ -d $HOME/.bash/aliases ]; then for file in $(ls $HOME/.bash/aliases/*); do source $file; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/aliases
if [ -d $HOME/.bash/aliases.d ]; then for file in $(ls $HOME/.bash/aliases.d/*); do source $file; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/aliases.d
# Source bash completion definitions # Source bash completion definitions
for file in /etc/bash*completion /etc/profile.d/bash*completion* ; do source $file ; done # TODO: Améliorer cette partie pour éviter les erreurs quand aucun fichier n'existe
for file in /etc/bash*completion /etc/profile.d/bash*completion*; do source "$file"; done
if [ -f $HOME/.bash_completion ]; then source $HOME/.bash_completion; fi _source_file_if_exists ~/.bash_completion
if [ -f $HOME/.bash/completion ]; then source $HOME/.bash/completion; fi _source_file_if_exists "${BASH_CONFIG_DIR}"/completion
if [ -d $HOME/.bash/completion ]; then for file in $(ls $HOME/.bash/completion/*); do source $file; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/completion
if [ -d $HOME/.bash/completion.d ]; then for file in $(ls $HOME/.bash/completion.d/*); do source $file; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/completion.d
_source_dir_files ~/.nix-profile/share/bash-completion/completions
if (command -v _complete_alias &>/dev/null); then
for alias in $(alias -p | awk '{print $2}' | awk -F= '{print $1}'); do complete -o default -F _complete_alias "$alias"; done
fi
# Late customization
_source_dir_files "${BASH_CONFIG_DIR}"/rc.after.d
+1 -2
View File
@@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
if ( which aws && which aws_completer ) &> /dev/null if (command -v aws && command -v aws_completer) &>/dev/null; then
then
complete -C aws_completer aws complete -C aws_completer aws
fi fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v chezmoi &>/dev/null); then
source <(chezmoi completion bash)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v flux &>/dev/null); then
source <(flux completion bash)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v glab &>/dev/null); then
source <(glab completion)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v k3d &>/dev/null); then
source <(k3d completion bash)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v kind &>/dev/null); then
source <(kind completion bash)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v minikube &>/dev/null); then
source <(minikube completion bash)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v mise &>/dev/null); then
source <(mise completion bash --include-bash-completion-lib)
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v podman &>/dev/null); then
source <(podman completion bash)
fi
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
#SSH
if [ -e ~/.ssh/config ]; then
complete -W "$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i")" ssh
fi
if [ -e ~/.ssh/known_hosts ]; then
complete -W "$(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\[")" ssh
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v tea &>/dev/null); then
source <(tea completion bash)
fi
+38 -6
View File
@@ -1,11 +1,43 @@
#!/bin/bash #!/bin/bash
cd $HOME || exit 1 # Define the path to the directory of this file if not already set
if [ -z "${BASH_CONFIG_DIR}" ]; then
# Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
CONFDIR=.bash # Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
ln -sf $CONFDIR/bash_profile .bash_profile (cd "$(dirname "${target}")" && pwd -P)
ln -sf $CONFDIR/bashrc .bashrc }
ln -sf $CONFDIR/bash_logout .bash_logout BASH_CONFIG_DIR=$(get_script_dir)
fi
ln -sf $CONFDIR/inputrc .inputrc cd "${HOME}" || exit 1
ln -sf "${BASH_CONFIG_DIR}"/bash_profile .bash_profile
ln -sf "${BASH_CONFIG_DIR}"/bashrc .bashrc
ln -sf "${BASH_CONFIG_DIR}"/bash_logout .bash_logout
ln -sf "${BASH_CONFIG_DIR}"/inputrc .inputrc
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
function devenv() {
local status
# Get LXC container status
status=$(lxc info devenv | yq .Status)
# Start container if not running
if [ "${status}" != "RUNNING" ]; then lxc start devenv; fi
# Rename tmux window if inside tmux
if [ -n "$TMUX" ]; then tmux rename-window "devenv"; fi
# Login as user xavier
lxc exec devenv -- login -f xavier
}
-65
View File
@@ -1,65 +0,0 @@
# Include system config file
$include /etc/inputrc
# do not bell on tab-completion
set bell-style none
# Disable display of ^C
set echo-control-characters off
# Completion options
set show-all-if-ambiguous on
set show-all-if-unmodified on
# History
"\e[A": history-search-backward
"\e[B": history-search-forward
# backword/forward during search history
"\eq":backward-search-history
"\es":forward-search-history
# Alt+w Alt+x for beginning/end of line
"\ew":"\C-a"
"\ex":"\C-e"
# prepend "tail -f " with Ctrl+Alt+f
"\e\C-f":"\C-atail -f "
"\ef":"\C-atail -f "
# prepend "sudo " with Ctrl+Alt+s
"\e\C-s":"\C-asudo "
"\es":"\C-asudo "
# prepend "yes | " with Ctrl+Alt+y
"\e\C-y":"\C-ayes | "
"\ey":"\C-ayes | "
# append " | grep" with Ctrl+Alt+g
"\e\C-g":"\C-e | grep "
"\eg":"\C-e | grep "
# append " | head" with Ctrl+Alt+h
"\e\C-h":"\C-e | head"
"\eh":"\C-e | head"
# append " | tail" with Ctrl+Alt+t
"\e\C-t":"\C-e | tail"
"\et":"\C-e | tail"
# append " | more" with Ctrl+Alt+m
"\e\C-m":"\C-e | more"
"\em":"\C-e | more"
# append " | less" with Ctrl+Alt+l
"\e\C-l":"\C-e | less"
"\el":"\C-e | less"
# we can add \C-m add the end to validate command too
#"\e\C-m":"\C-e | less\C-m"
# prepend "man " with F1 and validate
"\e[11~":"\C-aman \C-m"
# Launch commands with <F2> then letter
"\e[12~i":"\C-k\C-uirssi\C-m"
"\e[12~m":"\C-k\C-umutt\C-m"
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
function basedir() { function basedir() {
echo $( cd $(dirname $0) && pwd ) (cd "$(dirname \"$-2\")" && pwd)
} }
+42 -43
View File
@@ -30,6 +30,12 @@
#48 Subscript #48 Subscript
#49 Superscript #49 Superscript
#bold_on=`escape 1m`
#bold_off=`escape 22m`
#blink_on=`escape 5m`
#blink_off=`escape 25m`
#reset=`escape 0m`
#T_ROWS=`tput lines` # Define current terminal dimension #T_ROWS=`tput lines` # Define current terminal dimension
#T_COLS=`tput cols` #+ in rows and columns. #T_COLS=`tput cols` #+ in rows and columns.
#_UNDERLINE_ON=`tput smul` # turn on underline #_UNDERLINE_ON=`tput smul` # turn on underline
@@ -42,53 +48,46 @@
#tput rev - Display inverse colors #tput rev - Display inverse colors
#tput sgr0 - Reset everything #tput sgr0 - Reset everything
default='\E[39;49;00m' # Affiche un message stylisé sur la sortie standard
bold='\E[1m' function echo_bold { echo -e "\e[1m${*}\e[0m"; }
italic='\E[3m' function echo_faint { echo -e "\e[2m${*}\e[0m"; }
underline='\E[4m' function echo_italic { echo -e "\e[3m${*}\e[0m"; }
blink='\E[5m' function echo_underline { echo -e "\e[4m${*}\e[0m"; }
function echo_blink { echo -e "\e[5m${*}\e[0m"; }
function echo_reverse { echo -e "\e[7m${*}\e[0m"; }
function echo_concealed { echo -e "\e[8m${*}\e[0m"; }
blackonwhite='\E[30;47m' # Affiche un message informatif stylisé sur la sortie d'erreur
function echo_info { >&2 echo -e "\e[00;34;49m󰋼 ${*}\e[39;49;00m"; }
function echo_warning { >&2 echo -e "\e[00;33;49m ${*}\e[39;49;00m"; }
function echo_error { >&2 echo -e "\e[00;01;31;49m ${*}\e[39;49;00m"; }
function echo_success { >&2 echo -e "\e[00;01;32;49m ${*}\e[39;49;00m"; }
function echo_failed { >&2 echo -e "\e[00;01;31;49m✖ ${*}\e[39;49;00m"; }
#reset=`escape 0m` function echo_verbose {
#black='\E[30;47m' if [ -n "${VERBOSE}" ]; then
#red='\E[31;47m' echo_faint "${*}" >&2
#green='\E[32;47m' fi
#yellow='\E[33;47m'
#blue='\E[34;47m'
#magenta='\E[35;47m'
#cyan='\E[36;47m'
#white='\E[37;47m'
#bold_on=`escape 1m`
#bold_off=`escape 22m`
#blink_on=`escape 5m`
#blink_off=`escape 25m`
function echo_reverse
{
echo -ne $blackonwhite
echo -ne "$*"
echo -e $default
} }
function echo_italic function echo_debug {
{ if [ -n "${DEBUG}" ]; then
echo -ne $italic echo_faint "🐛 ${*}" >&2
echo -ne "$*" fi
echo -e $default
} }
function echo_bold function echo_demo {
{ echo_bold bold
echo -ne $bold echo_faint faint
echo -ne "$*" echo_italic italic
echo -e $default echo_underline underline
} echo_blink blink
echo_reverse reverse
function echo_underline echo_concealed concealed
{ echo_info info
echo -ne $underline echo_warning warning
echo -ne "$*" echo_error error
echo -e $default echo_success success
echo_failed failed
DEBUG=true echo_debug debug
} }
+4 -4
View File
@@ -3,17 +3,17 @@
note() { note() {
# if file doesn't exist, create it # if file doesn't exist, create it
if [[ ! -f $HOME/.notes ]]; then if [[ ! -f $HOME/.notes ]]; then
touch $HOME/.notes touch "$HOME"/.notes
fi fi
if [[ $# -eq 0 ]]; then if [[ $# -eq 0 ]]; then
# no arguments, print file # no arguments, print file
cat $HOME/.notes cat "$HOME"/.notes
elif [[ "$1" == "-c" ]]; then elif [[ "$1" == "-c" ]]; then
# clear file # clear file
echo "" > $HOME/.notes echo "" >"$HOME"/.notes
else else
# add all arguments to file # add all arguments to file
echo "$@" >> $HOME/.notes echo "$@" >>"$HOME"/.notes
fi fi
} }
+4 -4
View File
@@ -2,8 +2,8 @@
encpasswd() { encpasswd() {
local password_clear=$1 local password_clear=$1
local password_md5hash=$(openssl passwd -1 $password_clear) local password_md5hash=$(openssl passwd -1 "$password_clear")
local password_sha1=$(echo -n $password_clear | openssl dgst -sha1) local password_sha1=$(echo -n "$password_clear" | openssl dgst -sha1)
echo "Password : $password_clear" echo "Password : $password_clear"
echo "MD5HASH : $password_md5hash" echo "MD5HASH : $password_md5hash"
echo "SHA1 : $password_sha1" echo "SHA1 : $password_sha1"
@@ -12,8 +12,8 @@ encpasswd() {
genpasswd() { genpasswd() {
local l=$1 local l=$1
[ "$l" == "" ] && l=12 [ "$l" == "" ] && l=12
local password_clear=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs) local password_clear=$(tr -dc A-Za-z0-9_ </dev/urandom | head -c "${l}" | xargs)
local password_md5hash=$(openssl passwd -1 $password_clear) local password_md5hash=$(openssl passwd -1 "$password_clear")
local password_sha1=$(echo -n "$password_clear" | openssl dgst -sha1) local password_sha1=$(echo -n "$password_clear" | openssl dgst -sha1)
local password_base64=$(echo -n "$password_clear" | base64) local password_base64=$(echo -n "$password_clear" | base64)
echo "Password : $password_clear" echo "Password : $password_clear"
+3 -5
View File
@@ -1,14 +1,12 @@
#!/bin/bash #!/bin/bash
function ssh_clean_known_hosts () function ssh_clean_known_hosts() {
{ if [ -z "$1" ]; then
if [ -z "$1" ]
then
echo "No arguments given. Cleaning ~/.ssh/known_hosts" echo "No arguments given. Cleaning ~/.ssh/known_hosts"
sed -i -e '/no hostip for proxy command/ d' ~/.ssh/known_hosts sed -i -e '/no hostip for proxy command/ d' ~/.ssh/known_hosts
else else
hostname=$1 hostname=$1
ip=$(ssh admin dig +short $1) ip=$(ssh admin dig +short "$1")
echo "Removing host ${hostname} from ~/.ssh/known_hosts" echo "Removing host ${hostname} from ~/.ssh/known_hosts"
sed -i -e "/${hostname}/ d" ~/.ssh/known_hosts sed -i -e "/${hostname}/ d" ~/.ssh/known_hosts
echo "Removing ip ${ip} from ~/.ssh/known_hosts" echo "Removing ip ${ip} from ~/.ssh/known_hosts"
+2 -3
View File
@@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
function term_change_title function term_change_title {
{
case $TERM in case $TERM in
# Change the window title of X terminals # Change the window title of X terminals
xterm* | rxvt* | urxvt* | Eterm) xterm* | rxvt* | urxvt* | Eterm)
@@ -9,7 +8,7 @@ function term_change_title
;; ;;
# Change the window title of screen terminals # Change the window title of screen terminals
screen*) screen* | tmux*)
echo -ne "\033k${1}\033\\" echo -ne "\033k${1}\033\\"
;; ;;
esac esac
-8
View File
@@ -1,8 +0,0 @@
#!/bin/bash
# Defined prefered applications
export TERMINAL=kitty
export PAGER=less
export EDITOR=nvim
export BROWSER=firefox
+2 -3
View File
@@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
if $(which keychain &> /dev/null) if (command -v keychain &>/dev/null); then
then eval "$(keychain --inherit any --quiet --noask ~/.ssh/id_{rsa,ed25519})"
eval $(keychain --agents ssh,gpg --eval)
fi fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v krew &>/dev/null); then
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
fi
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
# Define prefered LANG # Define prefered LANG
export LANG=fr_FR.utf8 export LANG=fr_FR.UTF-8
View File
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
# Defined prefered applications
# EDITOR
if (command -v nvim &>/dev/null); then
export EDITOR=nvim
fi
# PAGER
if (command -v less &>/dev/null); then
export PAGER=less
fi
# MANPAGER
if (command -v nvim &>/dev/null); then
export MANPAGER='nvim +Man!'
elif (command -v bat &>/dev/null); then
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
fi
# TERMINAL
if (command -v kitty &>/dev/null); then
export TERMINAL=kitty
fi
# BROWSER
if (command -v firefox &>/dev/null); then
export BROWSER=firefox
fi
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
[[ ${BLE_VERSION-} ]] && ble-attach
View File
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# ble.sh () installed from nix
if (command -v blesh-share &>/dev/null); then
source "$(blesh-share)"/ble.sh --attach=none # does not work currently
fi
View File
+1 -2
View File
@@ -4,7 +4,6 @@
# git clone https://github.com/riywo/anyenv $HOME/.anyenv # git clone https://github.com/riywo/anyenv $HOME/.anyenv
if ( which anyenv &> /dev/null ) if (which anyenv &>/dev/null); then
then
eval "$(anyenv init -)" eval "$(anyenv init -)"
fi fi
+6 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
if [ -f ~/.asdf/asdf.sh ] if [ -f ~/.asdf/asdf.sh ]; then
then
# activate asdf # activate asdf
source ~/.asdf/asdf.sh source ~/.asdf/asdf.sh
@@ -10,3 +9,8 @@ then
source ~/.asdf/completions/asdf.bash source ~/.asdf/completions/asdf.bash
fi fi
if [ -f "$HOME/.nix-profile/share/asdf-vm/asdf.sh" ]; then
. "$HOME/.nix-profile/share/asdf-vm/asdf.sh"
. "$HOME/.nix-profile/share/bash-completion/completions/asdf.bash"
fi
+2 -10
View File
@@ -1,11 +1,6 @@
#!/bin/bash #!/bin/bash
if ( which asdf &> /dev/null ) if (asdf which direnv &>/dev/null); then
then
if ( asdf which direnv &> /dev/null )
then
# Hook direnv into your shell. # Hook direnv into your shell.
eval "$(asdf exec direnv hook bash)" eval "$(asdf exec direnv hook bash)"
@@ -13,11 +8,8 @@ then
direnv() { asdf exec direnv "$@"; } direnv() { asdf exec direnv "$@"; }
return return
fi
elif ( which direnv &> /dev/null )
then
elif (command -v direnv &>/dev/null); then
# Hook direnv into your shell. # Hook direnv into your shell.
eval "$(direnv hook bash)" eval "$(direnv hook bash)"
+71
View File
@@ -0,0 +1,71 @@
#!/bin/bash
if (command -v fzf &>/dev/null); then
# Shell integration
source <(fzf --bash)
# Options par défaut
FZF_DEFAULT_OPTS="\
--height 60%
--border rounded
--layout reverse
--highlight-line \
--info=inline-right \
--ansi \
"
export FZF_DEFAULT_OPTS
# Navigation vers un répertoire
FZF_ALT_C_OPTS="$(
cat <<'EOF'
--prompt '󰥨 '
--pointer
--marker ✔
EOF
)"
export FZF_ALT_C_OPTS
# Selection de fichiers
FZF_CTRL_T_OPTS="$(
cat <<'EOF'
--prompt '󰈞 '
--pointer
--marker ✔
--preview="bat --color=always --style=-header {}"
EOF
)"
export FZF_CTRL_T_OPTS
# Navigation dans l'historique
FZF_CTRL_R_OPTS="$(
cat <<'EOF'
--prompt ' '
--pointer
--marker ✔
EOF
)"
export FZF_CTRL_R_OPTS
# Theme tokyonight
FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} \
--color=bg+:#283457 \
--color=bg:#16161e \
--color=border:#27a1b9 \
--color=fg:#c0caf5 \
--color=gutter:#16161e \
--color=header:#ff9e64 \
--color=hl+:#2ac3de \
--color=hl:#2ac3de \
--color=info:#545c7e \
--color=marker:#ff007c \
--color=pointer:#ff007c \
--color=prompt:#2ac3de \
--color=query:#c0caf5:regular \
--color=scrollbar:#27a1b9 \
--color=separator:#ff9e64 \
--color=spinner:#ff007c \
"
export FZF_DEFAULT_OPTS
fi
-6
View File
@@ -1,6 +0,0 @@
#!/bin/bash
if [ -d ~/.krew/bin ]
then
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
fi
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
if (which mcfly &>/dev/null); then if (command -v mcfly &>/dev/null); then
export MCFLY_PROMPT=" " export MCFLY_PROMPT=" "
export MCFLY_INTERFACE_VIEW=BOTTOM export MCFLY_INTERFACE_VIEW=BOTTOM
export MCFLY_RESULTS=50 export MCFLY_RESULTS=50
+33 -25
View File
@@ -2,42 +2,50 @@
# Customize the prompt # Customize the prompt
POWERLINE_LOCATION=$(command -v powerline-go || command -v powerline) &>/dev/null # Indicate your preference order for prompt tools
POWERLINE=$(basename "$POWERLINE_LOCATION") # The first one found available will be used
MY_PROMPTS="starship powerline-go"
if [ "${POWERLINE}" = "powerline-go" ]; then for prompt in $MY_PROMPTS; do
if (command -v "$prompt" &>/dev/null); then
USE_PROMPT="$prompt"
break
fi
done
echo "Using $POWERLINE" case "${USE_PROMPT}" in
function _update_ps1() {
PS1=$($POWERLINE -jobs "$(jobs -p | wc -l)" -error $? -modules "ssh,host,wsl,user,cwd,direnv,venv,perms,git,jobs,exit,root" -modules-right "docker,docker-context,kube,terraform-workspace,termtitle" -newline)
}
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_ps1" ; fi
elif [ "${POWERLINE}" = "powerline" ]; then
echo "Using $POWERLINE"
# Run powerline daemon
powerline-daemon -q
# Cache powerline location
# To locate this directory, run: pip show powerline-status
export POWERLINE_LOCATION="/home/xavier/.local/lib/python3.10//site-packages/powerline" # Set up powerline environment
export POWERLINE_CONFIG_COMMAND=powerline-config
export POWERLINE_BASH_CONTINUATION=1
export POWERLINE_BASH_SELECT=1# Invoke binding script
. "$POWERLINE_LOCATION/bindings/bash/powerline.sh"
# https://starship.rs/
"starship")
if (command -v starship &>/dev/null); then
eval "$(starship init bash)"
else else
echo "${USE_PROMPT} command not found"
fi
;;
# https://github.com/justjanne/powerline-go
"powerline-go")
if (command -v powerline-go &>/dev/null); then
function _update_ps1() {
PS1=$(powerline-go -jobs "$(jobs -p | wc -l)" -error $? -modules "ssh,host,wsl,user,cwd,direnv,venv,perms,git,jobs,exit,root" -modules-right "docker,docker-context,kube,terraform-workspace,termtitle" -newline)
}
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_ps1"; fi
else
echo "${USE_PROMPT} command not found"
fi
;;
*)
# Default simple prompt
if [ "$UID" -eq 0 ]; then if [ "$UID" -eq 0 ]; then
export PS1='\[\e[01;31m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] ' export PS1='\[\e[01;31m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '
else else
export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] ' export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '
fi fi
;;
fi esac
# Limit the path to 3 levels # Limit the path to 3 levels
PROMPT_DIRTRIM=3 PROMPT_DIRTRIM=3
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
# Function to update terminal/tmux title
_update_terminal_title() {
local kubecontext dir gitrepo gitremote icon title
# Detect Kubernetes context (if kubectl is available)
if [ -n "${KUBECONFIG}" ]; then
if command -v kubectl >/dev/null 2>&1; then
kubecontext=$(kubectl config current-context 2>/dev/null)
if [ -n "$kubecontext" ]; then
title="󱃾 ${kubecontext}"
fi
fi
fi
# If no title is already set, check if we're in $HOME
if [ -z "${title}" ] && [ "$PWD" = "$HOME" ]; then
title="󱂵 ~"
fi
# If we're in a git repo display repo name with a nice icon
if [ -z "${title}" ] && gitrepo=$(git rev-parse --show-toplevel 2>/dev/null); then
dir=$(basename "${gitrepo}")
# Detect host from remote URL
gitremote=$(git remote get-url origin 2>/dev/null)
case "${gitremote}" in
*github.com*) icon="" ;; # nf-fa-github
*gitlab.com*) icon="" ;; # nf-fa-gitlab
*gitea*) icon="" ;; # nf-linux-gitea
*) icon="" ;; # nf-dev-git
esac
title="${icon} ${dir}"
fi
# Set the title in tmux or terminal window
if [ -n "${title}" ]; then
if [ -n "$TMUX" ]; then
tmux rename-window "${title}"
else
printf '\033]0;%s\007' "${title}"
fi
fi
}
# Add the function to the PROMPT_COMMAND variable to have regular updates
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_terminal_title"; fi
+10 -14
View File
@@ -1,25 +1,21 @@
#!/bin/bash #!/bin/bash
# GNU Screen stuff # GNU Screen stuff
if ( which tmux &> /dev/null ) if (command -v tmux &>/dev/null); then
then if [ "$(pgrep -u "$UID" "tmux" | wc -l)" -gt 0 ]; then
if [ $(pgrep -u "$UID" "tmux" | wc -l) -gt 0 ] if [[ $TERM != screen* ]]; then
then
if [[ $TERM != screen* ]]
then
nb_sessions=$(tmux list-session | wc -l) nb_sessions=$(tmux list-session | wc -l)
nb_sessions_attached=$(tmux list-session | grep "attached" | wc -l) nb_sessions_attached=$(tmux list-session | grep -c "attached")
nb_sessions_detached=$(tmux list-session | grep -v "attached" | wc -l) nb_sessions_detached=$(tmux list-session | grep -c -v "attached")
echo_reverse "Found ${nb_sessions} tmux session(s)" echo_info "tmux : found ${nb_sessions} session(s)"
echo " * ${nb_sessions_attached} attached" echo " ${nb_sessions_attached} session(s) attached"
tmux list-sessions | grep "attached" | sed -e 's/^/ - /' tmux list-sessions | grep "attached" | sed -e 's/^/ /'
echo " * ${nb_sessions_detached} detached" echo " ${nb_sessions_detached} session(s) detached"
tmux list-sessions | grep -v "attached" | sed -e 's/^/ - /' tmux list-sessions | grep -v "attached" | sed -e 's/^/ /'
fi fi
fi fi
fi fi
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# INFO:
#  vivid is a generator for the LS_COLORS environment variable that controls the colorized output of ls, tree, fd, bfs, dust and many other tools.
# ➜ https://github.com/sharkdp/vivid
# 💡Use command `vivid themes` to see available themes
if (command -v vivid &>/dev/null); then
THEME=tokyonight-moon
LS_COLORS="$(vivid generate ${THEME})"
export LS_COLORS
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v zoxide &>/dev/null); then
eval "$(zoxide init bash)"
fi