2025-02-21 03:24:38 +00:00
|
|
|
#! /usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2025-03-11 12:08:29 +00:00
|
|
|
env | grep -E 'chezmoi|^CZ'
|
2025-02-21 03:24:38 +00:00
|
|
|
cd "$CHEZMOI_SOURCE_DIR"
|
2025-03-11 12:08:29 +00:00
|
|
|
#CZ_MODEL="$(ioreg -l | grep "product-name" | sed -Ee 's/^.*\<"(.*)\"\>.*$/\1/')"
|
2025-02-21 03:24:38 +00:00
|
|
|
set | grep '^CZ_'
|
|
|
|
printf 'System detected as %s/%s, setting up .chezmoiroot and initializing...\n' "$CZ_SYS" "$CZ_CHASSIS"
|
2025-03-12 14:17:55 +00:00
|
|
|
set -x
|
2025-02-21 03:24:38 +00:00
|
|
|
if [ -r "base.chezmoiroot.$CZ_SYS.$CZ_CHASSIS" ]; then
|
|
|
|
ln -s "base.chezmoiroot.$CZ_SYS.$CZ_CHASSIS" .chezmoiroot
|
|
|
|
elif [ -r "base.chezmoiroot.$CZ_SYS" ]; then
|
|
|
|
ln -s "base.chezmoiroot.$CZ_SYS" .chezmoiroot
|
|
|
|
elif [ -r "base.chezmoiroot.$CZ_CHASSIS" ]; then
|
|
|
|
ln -s "base.chezmoiroot.$CZ_CHASSIS" .chezmoiroot
|
|
|
|
else
|
|
|
|
printf 'Failed to find a matching .chezmoiroot. Aborting!\n'
|
|
|
|
false
|
|
|
|
fi
|
|
|
|
|
2025-04-10 15:30:55 +00:00
|
|
|
# Function to get relative path without realpath or python
|
|
|
|
relpath() {
|
|
|
|
local target=$1
|
|
|
|
local base=$2
|
|
|
|
local target_abs=$(cd "$(dirname "$target")" && pwd)/$(basename "$target")
|
|
|
|
local base_abs=$(cd "$base" && pwd)
|
|
|
|
local common_part="$base_abs"
|
|
|
|
local back=""
|
|
|
|
|
|
|
|
while [[ "${target_abs#$common_part}" == "$target_abs" ]]; do
|
|
|
|
common_part=$(dirname "$common_part")
|
|
|
|
back="../$back"
|
|
|
|
done
|
|
|
|
|
|
|
|
echo "${back}${target_abs#$common_part/}"
|
|
|
|
}
|
|
|
|
|
|
|
|
safe_backup() {
|
|
|
|
local BASE="${BASE:-$HOME/.cache/chezmoi/init_backup}"
|
|
|
|
while [ -n "${1}" ]; do
|
|
|
|
local relp="./$(relpath "${1}" ~)"
|
|
|
|
[ -r "${1}" ] && mkdir -p "${BASE}/${relp%/*}" && cp ${CPOPTS:-} "${1}" "${BASE}/${relp}"
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
}
|
|
|
|
if ! [ -d ~/.cache/chezmoi/init_backup ]; then
|
|
|
|
safe_backup ~/.zshrc ~/.zsh_history ~/.zprofile ~/.bashrc ~/.bash_history ~/.profile
|
|
|
|
fi
|
|
|
|
|
2025-02-21 03:24:38 +00:00
|
|
|
# Brute force remove chezmoistate lock and restart init --apply
|
|
|
|
exec sh -c 'rm ~/.config/chezmoi/chezmoistate.boltdb && chezmoi init --apply'
|