2026-09-19 23:27:44 -06:00
|
|
|
setup.config() {
|
|
|
|
|
echo.status 'starting application configuration'
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.generate-initial-local-config
|
2024-08-14 19:11:52 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.zsh || return 2
|
|
|
|
|
setup.config._.vim || return 3
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.system || return 4
|
2024-08-13 12:46:20 -06:00
|
|
|
|
|
|
|
|
SCWRYPTS generate i3 config || return 5
|
2024-05-08 23:33:06 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
echo.success 'finished application configuration'
|
2022-08-16 18:42:57 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
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
|
2024-08-14 19:11:52 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
mkdir -p "${DOTWRYN_PATH}/bin/${local_hostname}"
|
2024-08-14 19:11:52 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
local env_dir="${DOTWRYN_PATH}/config/scwrypts/environments"
|
|
|
|
|
local group
|
|
|
|
|
for group in $(find "${env_dir}" -type f -name \*env.yaml | sed -n 's|.*/local\.\([^.]*\)\.env\.yaml|\1|p')
|
2024-08-14 19:11:52 -06:00
|
|
|
do
|
2026-09-19 23:27:44 -06:00
|
|
|
[ -f "${env_dir}/local.${local_hostname}.${group}.env.yaml" ] && continue
|
2025-02-19 22:02:26 -07:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
if [ -f "${env_dir}/local.altaria.${group}.env.yaml" ]
|
|
|
|
|
then
|
|
|
|
|
cp "${env_dir}/local.altaria.${group}.env.yaml" "${env_dir}/local.${local_hostname}.${group}.env.yaml"
|
|
|
|
|
else
|
|
|
|
|
cp "${env_dir}/local.${group}.env.yaml" "${env_dir}/local.${local_hostname}.${group}.env.yaml"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
unset group
|
|
|
|
|
|
|
|
|
|
local local_override
|
|
|
|
|
for local_override in \
|
2025-02-19 22:02:26 -07:00
|
|
|
i3/local.yaml \
|
|
|
|
|
polybar/local.ini \
|
|
|
|
|
alacritty/local.toml \
|
|
|
|
|
;
|
|
|
|
|
do
|
2026-09-19 23:27:44 -06:00
|
|
|
mkdir -p -- "${DOTWRYN_PATH}/config/${local_hostname}/user/$(dirname -- "${local_override}")"
|
|
|
|
|
touch -- "${DOTWRYN_PATH}/config/${local_hostname}/user/${local_override}"
|
2025-02-19 22:02:26 -07:00
|
|
|
done
|
2026-09-19 23:27:44 -06:00
|
|
|
unset local_override
|
2024-08-14 19:11:52 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.zsh() {
|
|
|
|
|
setup.config._.env zsh || return 1
|
|
|
|
|
setup.config._.rc zsh || return 2
|
|
|
|
|
setup.config._.set-default-shell || return 3
|
2022-08-16 18:42:57 -06:00
|
|
|
}
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.set-default-shell() {
|
|
|
|
|
local default_shell="$(awk -F: -v user="${USER}" '$1 == user {print $NF}' /etc/passwd)"
|
|
|
|
|
[[ "${default_shell}" =~ zsh ]] && return 0
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
[[ "${FORCE_ROOT}" == true ]] && return 0
|
2022-08-18 20:41:14 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
echo.status 'setting zsh as default shell'
|
|
|
|
|
sudo chsh -s "$(which zsh)" "$(whoami)" 2>&1 \
|
|
|
|
|
&& echo.success "set zsh as default shell for '${USER}'" \
|
|
|
|
|
|| utils.fail 1 'failed to set zsh as default shell' \
|
2022-08-16 18:42:57 -06:00
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.vim() {
|
|
|
|
|
setup.config._.rc vim || return 1
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
echo.status 'starting vim setup'
|
2025-02-19 22:02:26 -07:00
|
|
|
SCWRYPTS dotwryn vundle update || return 2
|
2024-08-14 19:11:52 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.vim.link-superuser-rc
|
2024-08-14 19:11:52 -06:00
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.vim.link-superuser-rc() {
|
|
|
|
|
sudo [ -f /root/.vimrc ] && return 0
|
2024-08-14 19:11:52 -06:00
|
|
|
|
2025-02-19 22:02:26 -07:00
|
|
|
echo "let \$DOTWRYN=\"${DOTWRYN_PATH}\"\nsource \"${DOTWRYN_PATH}/vim/rc.vim\"" \
|
2024-08-14 19:11:52 -06:00
|
|
|
| sudo tee /root/.vimrc >/dev/null
|
|
|
|
|
|
|
|
|
|
sudo mkdir -p /root/.vim
|
2026-09-19 23:27:44 -06:00
|
|
|
sudo ln -s "${HOME}/.vim/bundle" /root/.vim/bundle
|
2022-08-16 18:42:57 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.system() {
|
2024-08-14 19:11:52 -06:00
|
|
|
SCWRYPTS dotwryn system setup
|
2024-08-13 12:46:20 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
setup.config._.env() {
|
|
|
|
|
local config_type="${1}"
|
|
|
|
|
local default_config="${DOTWRYN_PATH}/${config_type}/env.${config_type}"
|
|
|
|
|
local local_config="${HOME}/.config/wryn/env.${config_type}"
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
[ -f "${local_config}" ] && {
|
|
|
|
|
case "${OVERWRITE_EXISTING}" in
|
|
|
|
|
( false ) return 0 ;;
|
|
|
|
|
( true )
|
|
|
|
|
echo.warning "local ${config_type} configuration exists (${local_config})"
|
|
|
|
|
utils.yN 'overwrite this configuration?' || return 0
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
mv "${local_config}" "${local_config}.bak" >/dev/null 2>&1 \
|
|
|
|
|
&& echo.status "created backup of local configuration (${local_config}.bak)"
|
|
|
|
|
;;
|
2023-11-19 12:00:51 -07:00
|
|
|
esac
|
2022-08-16 18:42:57 -06:00
|
|
|
}
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
echo.status "setting up ${config_type} configuration (${local_config})"
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
local comment
|
|
|
|
|
case "${config_type}" in
|
|
|
|
|
( zsh ) comment='#' ;;
|
2022-08-16 18:42:57 -06:00
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
{
|
2026-09-19 23:27:44 -06:00
|
|
|
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" \
|
|
|
|
|
|| utils.fail 1 "unable to create ${config_type} configuration" \
|
2022-08-16 18:42:57 -06:00
|
|
|
;
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
EDITOR=vim VISUAL=vim utils.io.edit "${local_config}"
|
2022-08-16 18:42:57 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
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}")"
|
2024-08-16 09:41:26 -06:00
|
|
|
[ -f "${HOME}/.vimrc" ] \
|
|
|
|
|
&& cat "${HOME}/.vimrc" >> "${XDG_CONFIG_HOME:-${HOME}/.config}/vim/vimrc" \
|
|
|
|
|
&& rm "${HOME}/.vimrc" \
|
|
|
|
|
;
|
|
|
|
|
;;
|
2026-09-19 23:27:44 -06:00
|
|
|
( * ) rc="${HOME}/.${config_type}rc" ;;
|
2022-08-16 18:42:57 -06:00
|
|
|
esac
|
|
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
local source_line
|
|
|
|
|
case "${config_type}" in
|
|
|
|
|
( zsh ) source_line="source ${DOTWRYN_PATH}/zsh/rc" ;;
|
|
|
|
|
( vim ) source_line="source ${DOTWRYN_PATH}/vim/rc.vim" ;;
|
2024-08-16 09:41:26 -06:00
|
|
|
esac
|
2022-08-16 18:42:57 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
grep -q "^${source_line}$" "${rc}" \
|
|
|
|
|
|| echo "${source_line}" >> "${rc}"
|
2024-08-16 09:41:26 -06:00
|
|
|
|
2026-09-19 23:27:44 -06:00
|
|
|
grep -q "^${source_line}$" "${rc}" \
|
|
|
|
|
&& echo.success "${config_type}rc is configured correctly" \
|
|
|
|
|
|| utils.fail 1 "failed to configure ${config_type}rc" \
|
2022-08-16 18:42:57 -06:00
|
|
|
;
|
|
|
|
|
}
|