setup update complete

This commit is contained in:
2026-09-21 06:48:49 -06:00
parent b67a76d0da
commit 7b2b01e022
38 changed files with 1376 additions and 848 deletions
+25
View File
@@ -0,0 +1,25 @@
#####################################################################
for setup_library in "${0:a:h}"/*.zsh
do
case "${setup_library:t}" in
( config.module.zsh ) ;; # self
( * ) source "${setup_library}" ;;
esac
done
unset setup_library
#####################################################################
setup.config() { : \
&& echo.status 'starting application configuration' \
&& : \
&& setup.config.generate-initial-local-config \
&& setup.config.zsh \
&& setup.config.vim \
&& setup.scwrypts dotwryn system setup \
&& setup.scwrypts generate i3 config \
&& : \
&& echo.success 'finished application configuration' \
|| echo.error 'application configuration failed (see above)' \
; }
+36
View File
@@ -0,0 +1,36 @@
#####################################################################
setup.config.env() {
local config_type="${1}"
local default_config="${DOTWRYN_SETUP__DOTWRYN}/${config_type}/env.${config_type}"
local local_config="${HOME}/.config/wryn/env.${config_type}"
if [[ -f "${local_config}" ]]
then
case "${DOTWRYN_SETUP__OVERWRITE_EXISTING}" in
( false ) return 0 ;;
( true )
echo.warning "local ${config_type} configuration exists (${local_config})"
utils.yN 'overwrite this configuration?' || return 0
mv -- "${local_config}" "${local_config}.bak" &>/dev/null \
&& echo.status "created backup of local configuration (${local_config}.bak)"
;;
esac
fi
echo.status "setting up ${config_type} configuration (${local_config})"
local comment='#'
{
echo "source ${default_config}"
echo -e "\\n${comment}\n${comment} .wryn configuration overrides\n${comment}\n"
sed "s/^[^${comment}].*/${comment}&/" "${default_config}"
} > "${local_config}" \
&& echo.success "created ${config_type} configuration" \
|| echo.error "unable to create ${config_type} configuration" \
|| return 1
EDITOR=vim VISUAL=vim utils.io.edit "${local_config}"
}
@@ -0,0 +1,30 @@
#####################################################################
setup.config.generate-initial-local-config() {
local local_hostname="$(hostnamectl --static 2>/dev/null || hostname 2>/dev/null | sed 's/\.local$//')"
[[ "${local_hostname}" ]] || return 0
mkdir -p -- "${DOTWRYN_SETUP__DOTWRYN}/config/local/${local_hostname}/bin"
local env_dir="${DOTWRYN_SETUP__DOTWRYN}/config/scwrypts/environments"
local group
for group in $(find "${env_dir}" -type f -name \*env.yaml | sed -n 's|.*/local\.\([^.]*\)\.env\.yaml|\1|p')
do
[[ -f "${env_dir}/local.${local_hostname}.${group}.env.yaml" ]] && continue
cp -- "${env_dir}/local.${group}.env.yaml" "${env_dir}/local.${local_hostname}.${group}.env.yaml"
done
unset group
local local_override
for local_override in \
i3/local.yaml \
polybar/local.ini \
alacritty/local.toml \
;
do
mkdir -p -- "${DOTWRYN_SETUP__DOTWRYN}/config/local/${local_hostname}/user/$(dirname -- "${local_override}")"
touch -- "${DOTWRYN_SETUP__DOTWRYN}/config/local/${local_hostname}/user/${local_override}"
done
unset local_override
}
+43
View File
@@ -0,0 +1,43 @@
#####################################################################
setup.config.rc() {
local config_type="${1}"
local rc
case "${config_type}" in
( vim )
rc="${XDG_CONFIG_HOME:-${HOME}/.config}/vim/vimrc"
mkdir -p -- "$(dirname -- "${rc}")"
[[ -f "${HOME}/.vimrc" ]] \
&& cat "${HOME}/.vimrc" >> "${rc}" \
&& rm -- "${HOME}/.vimrc" \
;
;;
( * ) rc="${HOME}/.${config_type}rc" ;;
esac
touch -- "${rc}"
local source_line comment
case "${config_type}" in
( zsh )
source_line="source ${DOTWRYN_SETUP__DOTWRYN}/zsh/rc"
comment='#'
;;
( vim )
source_line="source ${DOTWRYN_SETUP__DOTWRYN}/vim/rc.vim"
comment='"'
;;
( * )
echo.error "no rc source-line defined for '${config_type}'"
return 1
;;
esac
setup.filesystem.write-managed-block "${rc}" --comment "${comment}" --tag dotwryn-rc --one-line <<-EOF
${source_line}
EOF
grep -qF -- "${source_line}" "${rc}" \
&& echo.success "${config_type}rc is configured correctly" \
|| echo.error "failed to configure ${config_type}rc" \
|| return 1
}
+28
View File
@@ -0,0 +1,28 @@
#####################################################################
setup.config.vim() { : \
&& echo.status 'configuring vim rc' \
&& setup.config.rc vim \
&& : \
&& echo.status 'starting vim setup' \
&& setup.scwrypts dotwryn vundle update \
&& setup.config.vim._.link-superuser-rc \
; }
setup.config.vim._.link-superuser-rc() {
# already root (a container build) needs no sudo, and a machine
# without sudo at all can't get one
local sudo=sudo
[[ "${EUID}" -eq 0 ]] && sudo=''
[[ -n "${sudo}" ]] && ! command -v sudo &>/dev/null \
&& echo.warning 'sudo unavailable; skipping superuser vimrc' \
&& return 0
${sudo} test -f /root/.vimrc && return 0
echo "let \$DOTWRYN=\"${DOTWRYN_SETUP__DOTWRYN}\"\nsource \"${DOTWRYN_SETUP__DOTWRYN}/vim/rc.vim\"" \
| ${sudo} tee /root/.vimrc >/dev/null
${sudo} mkdir -p -- /root/.vim
${sudo} ln -s -- "${HOME}/.vim/bundle" /root/.vim/bundle
}
+22
View File
@@ -0,0 +1,22 @@
#####################################################################
setup.config.zsh() { : \
&& setup.config.env zsh \
&& setup.config.rc zsh \
&& setup.config._.set-default-shell \
; }
setup.config._.set-default-shell() {
local default_shell="$(awk -F: -v user="${USER}" '$1 == user {print $NF}' /etc/passwd)"
[[ "${default_shell}" =~ zsh ]] && return 0
[[ "${DOTWRYN_SETUP__FORCE_ROOT}" == true ]] && return 0
: \
&& echo.status 'setting zsh as default shell' \
&& sudo chsh -s "$(command -v zsh)" "${USER}" 2>&1 \
&& echo.success "set zsh as default shell for '${USER}'" \
|| echo.error 'failed to set zsh as default shell' \
|| return 1 \
;
}