From 7cb8d61844c3f8b4c3a19d13865039e74dc6ea8b Mon Sep 17 00:00:00 2001 From: Richard Sperry Date: Thu, 17 Apr 2025 12:49:42 -0700 Subject: [PATCH] devenv --- .../s6-overlay/s6-rc.d/init-code-server/run | 16 ++- .../s6-overlay/s6-rc.d/init-custom-bash/run | 7 +- .../etc/s6-overlay/s6-rc.d/init-user/run | 110 ++++++++++-------- vscode/rootfs/etc/s6-overlay/s6-rc.d/paths.sh | 5 + .../defaults/core/custom-template.sh | 2 + 5 files changed, 90 insertions(+), 50 deletions(-) diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run index be5e852..80360d8 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run @@ -97,6 +97,21 @@ setup_code_workspace() { bashio::log.warning "CODE_SERVER_VSCODE_TASKS does not exist. Creating..." cp "$DEFAULT_FILES_PATH/vscode/tasks.json" "$CODE_SERVER_VSCODE_TASKS" fi + + # custom tasks paths file + CUSTOM_BASH_SCRIPTS_PATH_SYMLINK="$CUSTOM_BASH_SCRIPTS_PATH/PATHS.sh" + if [ ! -e "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ]; then + bashio::log.warning "CUSTOM_BASH_SCRIPTS_PATH_ does not exist. Creating..." + ln -sn "/etc/s6-overlay/s6-rc.d/paths.sh" "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" || + bashio::log.warning "Failed linking PATHS.sh" + elif [ ! -L "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ]; then + bashio::log.warning "Failed path.sh link: Removing and recreating..." + rm -f"$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" + ln -sn "/etc/s6-overlay/s6-rc.d/paths.sh" "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" || + bashio::log.warning "Failed linking PATHS.sh" + else + bashio::log.info "Custom scripts symlink has a good link..." + fi } setup_config_path() { @@ -201,7 +216,6 @@ setup_user_settings() { if ! bashio::fs.file_exists "$user_path"/workspaces.json; then cp "$DEFAULT_FILES_PATH/vscode/workspaces.json" "$user_path/workspaces.json" fi - } run diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run index 50615cd..2908592 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run @@ -5,9 +5,9 @@ # Sets up code-server. # ============================================================================== bashio::log.info "Initalizing code-server configs" - +pathsfile="/etc/s6-overlay/s6-rc.d/paths.sh" # shellcheck source=../paths.sh -source "/etc/s6-overlay/s6-rc.d/paths.sh" +source "${pathsfile}" # List of previous config hashes, to allow upgrade "default" configs. @@ -29,7 +29,8 @@ run() { fi if [ "$(ls -A "$CUSTOM_BASH_SCRIPTS_PATH")" ]; then - for script in "${CUSTOM_BASH_SCRIPTS_PATH}"/*.sh; do + for script in "${CUSTOM_BASH_SCRIPTS_PATH}"/*.sh/!"$pathsfile"; do + echo "Running custom script: $script" chmod +x "$script" "$script" diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-user/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-user/run index 9023b2d..ffa227b 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-user/run +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-user/run @@ -9,59 +9,77 @@ readonly SSH_USER_PATH=/data/.ssh readonly ZSH_HISTORY_FILE=/root/.zsh_history readonly ZSH_HISTORY_PERSISTANT_FILE=/data/.zsh_history -# Store SSH settings in add-on data folder -if ! bashio::fs.directory_exists "${SSH_USER_PATH}"; then - mkdir -p "${SSH_USER_PATH}" || - bashio::exit.nok 'Failed to create a persistent .ssh folder' +run() { + setup_ssh + setup_zsh + setup_git + setup_config_packages + exec_config_cmds +} - chmod 700 "${SSH_USER_PATH}" || - bashio::exit.nok \ - 'Failed setting permissions on persistent .ssh folder' -fi -ln -sn "${SSH_USER_PATH}" ~/.ssh || bashio::log.warning "Failed linking .ssh" +setup_ssh() { + # Store SSH settings in add-on data folder + if ! bashio::fs.directory_exists "${SSH_USER_PATH}"; then + mkdir -p "${SSH_USER_PATH}" || + bashio::exit.nok 'Failed to create a persistent .ssh folder' -# Sets up ZSH shell -touch "${ZSH_HISTORY_PERSISTANT_FILE}" || - bashio::exit.nok 'Failed creating a persistent ZSH history file' + chmod 700 "${SSH_USER_PATH}" || + bashio::exit.nok \ + 'Failed setting permissions on persistent .ssh folder' + fi + ln -sn "${SSH_USER_PATH}" ~/.ssh || bashio::log.warning "Failed linking .ssh" +} -chmod 600 "$ZSH_HISTORY_PERSISTANT_FILE" || - bashio::exit.nok \ - 'Failed setting the correct permissions to the ZSH history file' +setup_zsh() { + # Sets up ZSH shell + touch "${ZSH_HISTORY_PERSISTANT_FILE}" || + bashio::exit.nok 'Failed creating a persistent ZSH history file' -ln -s -f "$ZSH_HISTORY_PERSISTANT_FILE" "$ZSH_HISTORY_FILE" || - bashio::exit.nok 'Failed linking the persistant ZSH history file' + chmod 600 "$ZSH_HISTORY_PERSISTANT_FILE" || + bashio::exit.nok 'Failed setting the correct permissions to the ZSH history file' -# Store user GIT settings in add-on data folder -if ! bashio::fs.directory_exists "${GIT_USER_PATH}"; then - mkdir -p "${GIT_USER_PATH}" || - bashio::exit.nok 'Failed to create a persistent git folder' + ln -s -f "$ZSH_HISTORY_PERSISTANT_FILE" "$ZSH_HISTORY_FILE" || + bashio::exit.nok 'Failed linking the persistant ZSH history file' +} - chmod 700 "${GIT_USER_PATH}" || - bashio::exit.nok \ - 'Failed setting permissions on persistent git folder' -fi +setup_git() { + # Store user GIT settings in add-on data folder + if ! bashio::fs.directory_exists "${GIT_USER_PATH}"; then + mkdir -p "${GIT_USER_PATH}" || + bashio::exit.nok 'Failed to create a persistent git folder' -if ! bashio::fs.file_exists "${GIT_USER_PATH}/.gitconfig"; then - touch "${GIT_USER_PATH}/.gitconfig" || - bashio::exit.nok 'Failed to create .gitconfig' -fi -ln -s "${GIT_USER_PATH}/.gitconfig" ~/.gitconfig || bashio::log.warning "Failed linking .gitconfig" + chmod 700 "${GIT_USER_PATH}" || + bashio::exit.nok 'Failed setting permissions on persistent git folder' + fi -# Install user configured/requested packages -if bashio::config.has_value 'packages'; then - apt update || - bashio::exit.nok 'Failed updating Ubuntu packages repository indexes' + if ! bashio::fs.file_exists "${GIT_USER_PATH}/.gitconfig"; then + touch "${GIT_USER_PATH}/.gitconfig" || + bashio::exit.nok 'Failed to create .gitconfig' + fi + ln -s "${GIT_USER_PATH}/.gitconfig" ~/.gitconfig || bashio::log.warning "Failed linking .gitconfig" +} - for package in $(bashio::config 'packages'); do - apt-get install -y "$package" || - bashio::exit.nok "Failed installing package ${package}" - done -fi +setup_config_packages() { + # Install user configured/requested packages + if bashio::config.has_value 'packages'; then + apt update || + bashio::exit.nok 'Failed updating Ubuntu packages repository indexes' -# Executes user configured/requested commands on startup -if bashio::config.has_value 'init_commands'; then - while read -r cmd; do - eval "${cmd}" || - bashio::exit.nok "Failed executing init command: ${cmd}" - done <<<"$(bashio::config 'init_commands')" -fi + for package in $(bashio::config 'packages'); do + apt-get install -y "$package" || + bashio::exit.nok "Failed installing package ${package}" + done + fi +} + +exec_config_cmds() { + # Executes user configured/requested commands on startup + if bashio::config.has_value 'init_commands'; then + while read -r cmd; do + eval "${cmd}" || + bashio::exit.nok "Failed executing init command: ${cmd}" + done <<<"$(bashio::config 'init_commands')" + fi +} + +run diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/paths.sh b/vscode/rootfs/etc/s6-overlay/s6-rc.d/paths.sh index 3111e94..bbc8de9 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/paths.sh +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/paths.sh @@ -14,3 +14,8 @@ readonly CODE_SERVER_VSCODE_TASKS="$CODE_SERVER_VSCODE_DIR/tasks.json" readonly CUSTOM_BASH_SCRIPTS_PATH="/data/vscode/custom_boot_scripts" readonly -a DIRECTORIES=(backup config media share ssl) + +readonly GIT_USER_PATH=/data/git +readonly SSH_USER_PATH=/data/.ssh +readonly ZSH_HISTORY_FILE=/root/.zsh_history +readonly ZSH_HISTORY_PERSISTANT_FILE=/data/.zsh_history diff --git a/vscode/rootfs/var/lib/code-server/defaults/core/custom-template.sh b/vscode/rootfs/var/lib/code-server/defaults/core/custom-template.sh index 46562f8..d9c2159 100644 --- a/vscode/rootfs/var/lib/code-server/defaults/core/custom-template.sh +++ b/vscode/rootfs/var/lib/code-server/defaults/core/custom-template.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash ENABLE=false +# shellcheck source=../paths.sh +source "/etc/s6-overlay/s6-rc.d/paths.sh" if [ "$ENABLE" = true ]; then echo "Custom Script"