setup update complete
This commit is contained in:
@@ -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)' \
|
||||
; }
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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 \
|
||||
;
|
||||
}
|
||||
Reference in New Issue
Block a user