From: Christian Heller Date: Thu, 21 Aug 2025 09:13:23 +0000 (+0200) Subject: Fixes. X-Git-Url: https://plomlompom.com/repos/blog?a=commitdiff_plain;h=8c22a0d3c2d18d5066315f6df985a578485f11c7;p=config Fixes. --- diff --git a/bookworm/scripts/lib/copy_dirtrees_of_tags.sh b/bookworm/scripts/lib/copy_dirtrees_of_tags.sh index 24f927e..575adcc 100644 --- a/bookworm/scripts/lib/copy_dirtrees_of_tags.sh +++ b/bookworm/scripts/lib/copy_dirtrees_of_tags.sh @@ -1,46 +1,58 @@ . lib/tagdir_parsing.sh copy_dirtrees_of_tags() { + local PATHS_WRITTEN= + _copy_dirtree() { - for _PATH_REL in $(tagdir_parsing__relpaths); do - _FILENAME="$(basename ${_PATH_REL})" - _PATH_TARGET_PARENT=/$(dirname "${_PATH_REL}") + local PATH_REL + for PATH_REL in $(tagdir_parsing__relpaths); do + local FILENAME + local PATH_TARGET_PARENT + local CREATION_SUMMARY + local CREATED_PATHS + + FILENAME=$(basename "${PATH_REL}") + PATH_TARGET_PARENT=/$(dirname "${PATH_REL}") # ensure directory by mkdir -p; to avoid later chowning pre-existing directories, # collect only what's returned by the command as actually newly created - _CREATION_SUMMARY=$(mkdir -pv "${_PATH_TARGET_PARENT}") - _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed -E "s/^mkdir: created directory '//g") - _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}" + CREATION_SUMMARY=$(mkdir -pv "${PATH_TARGET_PARENT}") + CREATED_PATHS=$(echo "${CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed -E "s/^mkdir: created directory '//g") + PATHS_WRITTEN="${CREATED_PATHS}\n${PATHS_WRITTEN}" # handle dirtree creation instruction files - if tagdir_parsing__is_killme "${_FILENAME}"; then + if tagdir_parsing__is_killme "${FILENAME}"; then continue fi - if tagdir_parsing__is_linkme "${_FILENAME}"; then - _PARSED=$(tagdir_parsing__parse_linkme "${_PATH_REL}") - _PATH_LINK=$(echo "${_PARSED}" | head -1) - _LINK_TARGET=$(echo "${_PARSED}" | tail -1) - ln -sf "${_LINK_TARGET}" "${_PATH_LINK}" - _PATHS_WRITTEN="${_PATH_LINK}\n${_PATHS_WRITTEN}" + if tagdir_parsing__is_linkme "${FILENAME}"; then + local PARSED + local PATH_LINK + local LINK_TARGET + PARSED=$(tagdir_parsing__parse_linkme "${PATH_REL}") + PATH_LINK=$(echo "${PARSED}" | head -1) + LINK_TARGET=$(echo "${PARSED}" | tail -1) + ln -sf "${LINK_TARGET}" "${PATH_LINK}" + PATHS_WRITTEN="${PATH_LINK}\n${PATHS_WRITTEN}" continue fi # actual file copying - _CREATION_SUMMARY=$(cp -avL "${_PATH_REL}" "${_PATH_TARGET_PARENT}") - _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | grep -v -E '^removed ' | sed -E "s/'\$//g" | sed "s/.*' -> '//g") - _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}" + CREATION_SUMMARY=$(cp -avL "${PATH_REL}" "${PATH_TARGET_PARENT}") + _CREATED_PATHS=$(echo "${CREATION_SUMMARY}" | grep -v -E '^removed ' | sed -E "s/'\$//g" | sed "s/.*' -> '//g") + PATHS_WRITTEN="${CREATED_PATHS}\n${PATHS_WRITTEN}" done } - _PATHS_WRITTEN= tagdir_parsing__for_tagdir '_copy_dirtree' $@ - _PATHS_WRITTEN=$(echo "${_PATHS_WRITTEN}" | grep -v -E '^ *$') + PATHS_WRITTEN=$(echo "${PATHS_WRITTEN}" | grep -v -E '^ *$') ## for all paths written into user home directories, chown to respective users - for _PATH in ${_PATHS_WRITTEN}; do - if [ $(echo "${_PATH}" | grep -E '^/home/' | wc -l) -gt 0 ]; then - _USERNAME=$(echo "${_PATH}" | sed -E 's/^\/home\///' | sed -E 's/\/.*//') - chown -R "${_USERNAME}:${_USERNAME}" "${_PATH}" + local PATH + for PATH in ${PATHS_WRITTEN}; do + if [ $(echo "${PATH}" | grep -E '^/home/' | wc -l) -gt 0 ]; then + local USERNAME + USERNAME=$(echo "${PATH}" | sed -E 's/^\/home\///' | sed -E 's/\/.*//') + chown -R "${USERNAME}:${USERNAME}" "${PATH}" fi done } diff --git a/bookworm/scripts/lib/tagdir_parsing.sh b/bookworm/scripts/lib/tagdir_parsing.sh index 6047e40..cf87312 100644 --- a/bookworm/scripts/lib/tagdir_parsing.sh +++ b/bookworm/scripts/lib/tagdir_parsing.sh @@ -3,16 +3,17 @@ tagdir_parsing__is_killme() { } tagdir_parsing__for_tagdir() { - _COMMAND=$1 + local COMMAND=$1 shift 1 - _TAGS=$@ - for _TAG in ${_TAGS}; do - _PATH_TAG="../copy/${_TAG}" - if [ ! -d "${_PATH_TAG}" ]; then + local TAGS=$@ + local TAG + for TAG in ${TAGS}; do + local PATH_TAG="../copy/${TAG}" + if [ ! -d "${PATH_TAG}" ]; then continue fi - cd "${_PATH_TAG}" - ${_COMMAND} + cd "${PATH_TAG}" + ${COMMAND} cd - > /dev/null done } @@ -26,13 +27,17 @@ tagdir_parsing__is_linkme() { } tagdir_parsing__parse_linkme() { - _PATH_REL_LINKME=$1 - _PATH_REL_LINKME_PARENT=$(dirname "${_PATH_REL_LINKME}") - _LINK_TARGET=$(cat "${_PATH_REL_LINKME}" | head -1) - _LINK_NAME=$(cat "${_PATH_REL_LINKME}" | tail -1) - if [ -z "${_LINK_NAME}" ]; then - _LINK_NAME=$(basename "${_LINK_TARGET}") + local PATH_REL_LINKME=$1 + local PATH_REL_LINKME_PARENT + local LINK_TARGET + local LINK_NAME + local PATH_ABS + PATH_REL_LINKME_PARENT=$(dirname "${PATH_REL_LINKME}") + LINK_TARGET=$(cat "${PATH_REL_LINKME}" | head -1) + LINK_NAME=$(cat "${PATH_REL_LINKME}" | tail -1) + if [ -z "${LINK_NAME}" ]; then + _LINK_NAME=$(basename "${LINK_TARGET}") fi - _PATH_ABS="/${_PATH_REL_LINKME_PARENT}/${_LINK_NAME}" - printf '%s\n%s' "${_PATH_ABS}" "${_LINK_TARGET}" + PATH_ABS="/${PATH_REL_LINKME_PARENT}/${LINK_NAME}" + printf '%s\n%s' "${PATH_ABS}" "${LINK_TARGET}" } diff --git a/trixie/copy/all/home b/trixie/copy/all/home deleted file mode 120000 index 0016e74..0000000 --- a/trixie/copy/all/home +++ /dev/null @@ -1 +0,0 @@ -../../../bookworm/copy/all/home \ No newline at end of file diff --git a/trixie/copy/all/root b/trixie/copy/all/root deleted file mode 120000 index ab75fb1..0000000 --- a/trixie/copy/all/root +++ /dev/null @@ -1 +0,0 @@ -../../../bookworm/copy/all/root \ No newline at end of file diff --git a/trixie/copy/desktop/home/plom/.local/bin/backlight b/trixie/copy/desktop/home/plom/.local/bin/backlight index d2c1711..e83ff4e 100755 --- a/trixie/copy/desktop/home/plom/.local/bin/backlight +++ b/trixie/copy/desktop/home/plom/.local/bin/backlight @@ -1,8 +1,8 @@ #!/bin/sh set -e cd $(dirname "$0") -. lib/abort -. lib/print_usage +. lib/abort.sh +. lib/print_usage.sh ARG_HELP=--help USAGE_DESCRIPTION='Set backlight to maximum, or [INTEGER] percentage of it.' diff --git a/trixie/copy/desktop/home/plom/.local/bin/borgplom b/trixie/copy/desktop/home/plom/.local/bin/borgplom index ff4ca61..251b4e1 100755 --- a/trixie/copy/desktop/home/plom/.local/bin/borgplom +++ b/trixie/copy/desktop/home/plom/.local/bin/borgplom @@ -1,13 +1,13 @@ #!/bin/sh set -e cd $(dirname "$0") -. lib/abort -. lib/constants_borg # PATH_BORG_CONF -. lib/expect_n_args -. lib/get_passphrase -. lib/path_tmp_timestamped -. lib/print_usage -. lib/retry_until +. lib/abort.sh +. lib/constants_borg.sh # PATH_BORG_CONF +. lib/expect_n_args.sh +. lib/get_passphrase.sh +. lib/path_tmp_timestamped.sh +. lib/print_usage.sh +. lib/retry_until.sh cd - > /dev/null USAGE_DESCRIPTION='Wrapper around certain borgbackup usages.\n\nAvailable commands:' diff --git a/trixie/copy/desktop/home/plom/.local/bin/make_secrets b/trixie/copy/desktop/home/plom/.local/bin/make_secrets index 6b29b00..f3a5fe9 100755 --- a/trixie/copy/desktop/home/plom/.local/bin/make_secrets +++ b/trixie/copy/desktop/home/plom/.local/bin/make_secrets @@ -2,14 +2,14 @@ set -e cd $(dirname "$0") -. lib/abort_if_exists -. lib/constants_borg # NAME_BORGAPP, PATH_BORG_CONF -. lib/constants_secrets # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS, PATH_SECRETS_KDBX, PATH_USER_KDBX -. lib/constants_ssh # PATH_USER_SSH -. lib/constants_user # USERNAME -. lib/copy_and_unmount_secrets -. lib/mount_secrets -. lib/prefixed_msg +. lib/abort_if_exists.sh +. lib/constants_borg.sh # NAME_BORGAPP, PATH_BORG_CONF +. lib/constants_secrets.sh # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS, PATH_SECRETS_KDBX, PATH_USER_KDBX +. lib/constants_ssh.sh # PATH_USER_SSH +. lib/constants_user.sh # USERNAME +. lib/copy_and_unmount_secrets.sh +. lib/mount_secrets.sh +. lib/prefixed_msg.sh prefixed_msg_init diff --git a/trixie/copy/desktop/home/plom/.local/bin/vol b/trixie/copy/desktop/home/plom/.local/bin/vol index 3481e01..fa06b9a 100755 --- a/trixie/copy/desktop/home/plom/.local/bin/vol +++ b/trixie/copy/desktop/home/plom/.local/bin/vol @@ -1,9 +1,9 @@ #!/bin/sh set -e cd $(dirname "$0") -. lib/abort -. lib/audio_dev_is_mute -. lib/print_usage +. lib/abort.sh +. lib/audio_dev_is_mute.sh +. lib/print_usage.sh MAX_LOUDNESS=150 diff --git a/trixie/copy/t490s/home/plom/.nonpath_bins/status.sh b/trixie/copy/t490s/home/plom/.nonpath_bins/status.sh index 950a6ba..7cb3691 100755 --- a/trixie/copy/t490s/home/plom/.nonpath_bins/status.sh +++ b/trixie/copy/t490s/home/plom/.nonpath_bins/status.sh @@ -2,7 +2,7 @@ # see sway-bar(5) and swaybar-protocol(7) set -e -. "${HOME}/.plomlib/audio_dev_is_mute" +. "${HOME}/.plomlib/audio_dev_is_mute.sh" SYSCLASS_DIR=/sys/class diff --git a/trixie/scripts/lib/core_setup.sh b/trixie/scripts/lib/core_setup.sh index 114fe5f..1015f3d 100644 --- a/trixie/scripts/lib/core_setup.sh +++ b/trixie/scripts/lib/core_setup.sh @@ -5,42 +5,42 @@ . lib/prefixed_msg.sh core_setup() { -prefixed_msg_init 'core_setup' -prefixed_msg 'starting (performing standard installation setup steps)' + prefixed_msg_init 'core_setup' + prefixed_msg 'starting (performing standard installation setup steps)' -_HOSTNAME="$1" -_FQDN="$2" -_EXTERNAL_IP="$3" -_INSTALL_TAGS="$4" + local HOSTNAME="$1" + local FQDN="$2" + local EXTERNAL_IP="$3" + local INSTALL_TAGS="$4" -./minimize_installation.sh ${_INSTALL_TAGS} + ./minimize_installation.sh ${INSTALL_TAGS} -prefixed_msg 'And now: dist-upgrade …' -apt_digested -q -q dist-upgrade + prefixed_msg 'And now: dist-upgrade …' + apt_digested -q -q dist-upgrade -prefixed_msg "Setting up user: ${USERNAME}" -adduser --quiet --disabled-password --gecos "" "${USERNAME}" -usermod -a -G sudo "${USERNAME}" + prefixed_msg "Setting up user: ${USERNAME}" + adduser --quiet --disabled-password --gecos "" "${USERNAME}" + usermod -a -G sudo "${USERNAME}" -prefixed_msg 'Copying over files, directories …' -copy_dirtrees_of_tags ${_INSTALL_TAGS} + prefixed_msg 'Copying over files, directories …' + copy_dirtrees_of_tags ${INSTALL_TAGS} -prefixed_msg 'Setting hostname …' -hostnamectl hostname "${_HOSTNAME}" + prefixed_msg 'Setting hostname …' + hostnamectl hostname "${HOSTNAME}" -prefixed_msg "Adapting ${_PATH_HOSTS} …" -_PATH_HOSTS="${PATH_ETC}/hosts" -if [ -z "${_FQDN}" ]; then - sed -i 's/REPLACE_WITH_FQDN/REPLACE_WITH_HOSTNAME.local REPLACE_WITH_HOSTNAME.localdomain/g' "${_PATH_HOSTS}" -else - sed -i 's/REPLACE_WITH_FQDN/'"${_FQDN}"'/g' "${_PATH_HOSTS}" - sed -i "s/#REPLACE_WITH_EXTERNAL_IP/${_EXTERNAL_IP}/g" "${_PATH_HOSTS}" -fi -sed -i 's/REPLACE_WITH_HOSTNAME/'"${_HOSTNAME}"'/g' "${_PATH_HOSTS}" + local PATH_HOSTS="${PATH_ETC}/hosts" + prefixed_msg "Adapting ${PATH_HOSTS} …" + if [ -z "${FQDN}" ]; then + sed -i 's/REPLACE_WITH_FQDN/REPLACE_WITH_HOSTNAME.local REPLACE_WITH_HOSTNAME.localdomain/g' "${PATH_HOSTS}" + else + sed -i 's/REPLACE_WITH_FQDN/'"${FQDN}"'/g' "${PATH_HOSTS}" + sed -i "s/#REPLACE_WITH_EXTERNAL_IP/${EXTERNAL_IP}/g" "${PATH_HOSTS}" + fi + sed -i 's/REPLACE_WITH_HOSTNAME/'"${HOSTNAME}"'/g' "${PATH_HOSTS}" -prefixed_msg 'Syncing clock …' -ntpdate-debian -s + prefixed_msg 'Syncing clock …' + ntpdate-debian -s -prefixed_msg 'finished' -prefixed_msg_exit + prefixed_msg 'finished' + prefixed_msg_exit } diff --git a/trixie/scripts/update_preseed.sh b/trixie/scripts/update_preseed.sh index e23c201..00d1f97 100755 --- a/trixie/scripts/update_preseed.sh +++ b/trixie/scripts/update_preseed.sh @@ -1,6 +1,7 @@ #!/bin/sh set -e -cd $(dirname "$0") +ROOT=$(dirname "$0") +cd "${ROOT}" . lib/abort_if_command_unknown.sh . lib/constants_installer.sh # FILENAME_PRESEED_CFG, PATH_PRESEED_CFG . lib/expect_n_args.sh @@ -12,13 +13,13 @@ prefixed_msg_init abort_if_command_unknown pmount -expect_n_args 1 4 'DEVICE (e.g. "sdb1") ROOT_PASSWORD WIFI_ESSID WIFI_PASSWORD' $@ +expect_n_args 1 4 'DEVICE (e.g. "sdb1") ROOT_PASSWORD WIFI_ESSID WIFI_PASSWORD' "$@" DEVICE_NAME="$1" ROOT_PASSWORD="$2" WIFI_ESSID="$3" WIFI_PASSWORD="$4" -PATH_DEVICE="$(get_mountable_device_path ${DEVICE_NAME})" +PATH_DEVICE=$(get_mountable_device_path "${DEVICE_NAME}") UMOUNT_MSG=$(prefixed_msg "Unmounting ${PATH_DEVICE} …") PATH_MOUNTED_PRESEED_CFG="/media/${DEVICE_NAME}/${FILENAME_PRESEED_CFG}" @@ -32,11 +33,13 @@ prefixed_msg "Copying ${PATH_PRESEED_CFG} …" cp "${PATH_PRESEED_CFG}" "${PATH_MOUNTED_PRESEED_CFG}" replace_if_provided() { - _VAR_NAME="$1" + local VAR_NAME="$1" val_of_var_of_name() { eval printf '"%s"' '"${'"$1"'}"'; } - if [ ! -z "$(val_of_var_of_name ${_VAR_NAME})" ]; then - prefixed_msg "Replacing ${_VAR_NAME} …" - sed -i "s/REPLACE_WITH_${_VAR_NAME}/$(val_of_var_of_name ${_VAR_NAME})/g" "${PATH_MOUNTED_PRESEED_CFG}" + local REPLACEMENT + REPLACEMENT=$(val_of_var_of_name "${VAR_NAME}") + if [ -n "${REPLACEMENT}" ]; then + prefixed_msg "Replacing ${VAR_NAME} …" + sed -i "s/REPLACE_WITH_${VAR_NAME}/${REPLACEMENT}/g" "${PATH_MOUNTED_PRESEED_CFG}" fi } replace_if_provided ROOT_PASSWORD