diff --git a/overlay/entrypoint.sh b/overlay/entrypoint.sh index a2d66b7..0548efc 100644 --- a/overlay/entrypoint.sh +++ b/overlay/entrypoint.sh @@ -22,6 +22,26 @@ if [[ -f /version.txt ]]; then cat /version.txt fi +function print_header { + # Magenta + echo -e "\e[35m**** ${@} ****\e[0m" +} + +function print_step_header { + # Cyan + echo -e "\e[36m - ${@}\e[0m" +} + +function print_warning { + # Yellow + echo -e "\e[33mWARNING: ${@}\e[0m" +} + +function print_error { + # Red + echo -e "\e[31mERROR: ${@}\e[0m" +} + # Execute all container init scripts for init_script in /etc/cont-init.d/*.sh ; do echo @@ -59,9 +79,9 @@ touch /tmp/.first-run-user-init-scripts # Start supervisord echo -echo "**** Starting supervisord ****"; -echo "Logging all root services to '/var/log/supervisor/'" -echo "Logging all user services to '/home/${USER:?}/.cache/log/'" +print_header "Starting supervisord"; +print_step_header "Logging all root services to '/var/log/supervisor/'" +print_step_header "Logging all user services to '/home/${USER:?}/.cache/log/'" echo mkdir -p /var/log/supervisor chmod a+rw /var/log/supervisor diff --git a/overlay/etc/cont-init.d/10-setup_user.sh b/overlay/etc/cont-init.d/10-setup_user.sh index 16fb70c..a717d2a 100644 --- a/overlay/etc/cont-init.d/10-setup_user.sh +++ b/overlay/etc/cont-init.d/10-setup_user.sh @@ -14,18 +14,18 @@ PGID=${PGID:-100} UMASK=${UMASK:-000} USER_PASSWORD=${USER_PASSWORD:-password} -echo "**** Configure default user ****" +print_header "Configure default user" -echo "Setting default user uid=${PUID}(${USER}) gid=${PGID}(${USER})" +print_step_header "Setting default user uid=${PUID}(${USER}) gid=${PGID}(${USER})" usermod -o -u "${PUID}" ${USER} groupmod -o -g "${PGID}" ${USER} -echo "Adding default user to any additional required device groups" +print_step_header "Adding default user to any additional required device groups" additional_groups=( video audio input pulse ) for group_name in "${additional_groups[@]}"; do if [ $(getent group ${group_name:?}) ]; then - echo "Adding user '${USER}' to group: '${group_name}'" + print_step_header "Adding user '${USER}' to group: '${group_name}'" usermod -aG ${group_name:?} ${USER} fi done @@ -54,20 +54,20 @@ for dev in "${device_nodes[@]}"; do # Add group to user if [[ "${added_groups}" != *"${dev_group}"* ]]; then - echo "Adding user '${USER}' to group: '${dev_group}' for device: ${dev}" + print_step_header "Adding user '${USER}' to group: '${dev_group}' for device: ${dev}" usermod -aG ${dev_group} ${USER} added_groups=" ${added_groups} ${dev_group} " fi done -echo "Setting umask to ${UMASK}"; +print_step_header "Setting umask to ${UMASK}"; umask ${UMASK} # TODO: Move this to its own 'display' init script. It does not really belong here # Configure the 'XDG_RUNTIME_DIR' path -echo "Create the user XDG_RUNTIME_DIR path '${XDG_RUNTIME_DIR}'" +print_step_header "Create the user XDG_RUNTIME_DIR path '${XDG_RUNTIME_DIR}'" mkdir -p ${XDG_RUNTIME_DIR} # Ensure it is owned by the 'default' user chown -R ${PUID}:${PGID} ${XDG_RUNTIME_DIR} @@ -80,19 +80,19 @@ chmod a+r /etc/alternatives/desktop-background # Setup services log path -echo "Setting ownership of all log files in '${USER_HOME}/.cache/log'" +print_step_header "Setting ownership of all log files in '${USER_HOME}/.cache/log'" mkdir -p "${USER_HOME}/.cache/log" chown -R ${PUID}:${PGID} "${USER_HOME}/.cache/log" # Set the root and user password -echo "Setting root password" +print_step_header "Setting root password" echo "root:${USER_PASSWORD}" | chpasswd -echo "Setting user password" +print_step_header "Setting user password" echo "${USER}:${USER_PASSWORD}" | chpasswd # Set root XDG_RUNTIME_DIR path mkdir -p /tmp/runtime-root chown root:root /tmp/runtime-root -echo "DONE" \ No newline at end of file +echo -e "\e[34mDONE\e[0m" \ No newline at end of file diff --git a/overlay/etc/cont-init.d/11-setup_sysctl_values.sh b/overlay/etc/cont-init.d/11-setup_sysctl_values.sh index ae3e42e..761989e 100644 --- a/overlay/etc/cont-init.d/11-setup_sysctl_values.sh +++ b/overlay/etc/cont-init.d/11-setup_sysctl_values.sh @@ -1,26 +1,17 @@ -#!/usr/bin/env bash -### -# File: 11-setup_sysctl_values.sh -# Project: cont-init.d -# File Created: Friday, 1st September 2023 3:56:17 pm -# Author: Josh.5 (jsunnex@gmail.com) -# ----- -# Last Modified: Monday, 1st September 2023 3:56:17 pm -# Modified By: Console and webGui login account (jsunnex@gmail.com) -### -echo "**** Configure some system kernel parameters ****" +# Configure kernel parameters +print_header "Configure some system kernel parameters" if [ "$(cat /proc/sys/vm/max_map_count)" -ge 524288 ]; then if [ -w "/proc/sys/vm/max_map_count" ]; then - echo "Setting the maximum number of memory map areas a process can create to 524288" + print_step_header "Setting the maximum number of memory map areas a process can create to 524288" echo 524288 > /proc/sys/vm/max_map_count else - echo "WARNING: Unable to set max_map_count on unprivileged container" + print_warning "Unable to set vm.max_map_count on unprivileged container" fi else - echo "NOTE: vm.max_map_count is already greater than '524288'" + print_step_header "The vm.max_map_count is already greater than '524288'" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/30-configure_dbus.sh b/overlay/etc/cont-init.d/30-configure_dbus.sh index 9a2a7c2..a6b5790 100644 --- a/overlay/etc/cont-init.d/30-configure_dbus.sh +++ b/overlay/etc/cont-init.d/30-configure_dbus.sh @@ -1,14 +1,14 @@ # Configure dbus -echo "**** Configure container dbus ****"; +print_header "Configure container dbus" if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [[ "${HOST_DBUS}" == "true" ]]; then - echo "Container configured to use the host dbus"; + print_step_header "Container configured to use the host dbus"; # Disable supervisord script sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini else - echo "Container configured to run its own dbus"; + print_step_header "Container configured to run its own dbus"; # Enable supervisord script sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/dbus.ini # Configure dbus to run as USER @@ -25,8 +25,8 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then find /var/run/dbus -name "pid" -exec rm -f {} \; fi else - echo "Dbus service not available when container is run in 'secondary' mode." + print_step_header "Dbus service not available when container is run in 'secondary' mode." sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/30-configure_udev.sh b/overlay/etc/cont-init.d/30-configure_udev.sh index 7e189f5..aa78ee0 100644 --- a/overlay/etc/cont-init.d/30-configure_udev.sh +++ b/overlay/etc/cont-init.d/30-configure_udev.sh @@ -1,33 +1,26 @@ -#!/usr/bin/env bash -### -# File: 30-configure_udev.sh -# Project: cont-init.d -# File Created: Friday, 12th January 2022 8:54:01 am -# Author: Josh.5 (jsunnex@gmail.com) -# ----- -# Last Modified: Tuesday, 4th October 2022 11:20:48 am -# Modified By: Josh.5 (jsunnex@gmail.com) -### + +# Configure dbus +print_header "Configure udevd" # Since this container may also be run with CAP_SYS_ADMIN, ensure we can actually execute "udevadm trigger" run_dumb_udev="false" if [ ! -w /sys ]; then # Disable supervisord script since we are not able to write to sysfs - echo "**** Disable udevd - /sys is mounted RO ****"; + print_step_header "Disable udevd - /sys is mounted RO" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/udev.ini run_dumb_udev="true" elif [ ! -d /run/udev ]; then # Disable supervisord script since we are not able to write to udev/data path - echo "**** Disable udevd - /run/udev does not exist ****"; + print_step_header "Disable udevd - /run/udev does not exist" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/udev.ini run_dumb_udev="true" elif [ ! -w /run/udev ]; then # Disable supervisord script since we are not able to write to udev/data path - echo "**** Disable udevd - /run/udev is mounted RO ****"; + print_step_header "Disable udevd - /run/udev is mounted RO" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/udev.ini run_dumb_udev="false" elif udevadm trigger &> /dev/null; then - echo "**** Configure container to run udev management ****"; + print_step_header "Configure container to run udev management" # Enable supervisord script sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/udev.ini # Configure udev permissions @@ -37,22 +30,22 @@ elif udevadm trigger &> /dev/null; then run_dumb_udev="false" else # Disable supervisord script since we are not able to execute "udevadm trigger" - echo "**** Disable udev service due to privilege restrictions ****"; + print_step_header "Disable udev service due to privilege restrictions" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/udev.ini run_dumb_udev="true" fi if [ "${run_dumb_udev}" = "true" ]; then # Enable dumb-udev instead of udevd - echo "**** Enable dumb-udev service ****"; + print_step_header "Enable dumb-udev service" sed -i 's|^command.*=.*$|command=start-dumb-udev.sh|' /etc/supervisor.d/udev.ini sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/udev.ini fi if [[ -e /dev/uinput ]]; then - echo "**** Ensure the default user has permission to r/w on input devices ****"; + print_step_header "Ensure the default user has permission to r/w on input devices" chmod 0666 /dev/uinput fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/40-setup_locale.sh b/overlay/etc/cont-init.d/40-setup_locale.sh index e35214b..b11023c 100644 --- a/overlay/etc/cont-init.d/40-setup_locale.sh +++ b/overlay/etc/cont-init.d/40-setup_locale.sh @@ -1,9 +1,12 @@ +# Configure dbus +print_header "Configure local" + current_local=$(head -n 1 /etc/locale.gen) user_local=$(echo ${USER_LOCALES} | cut -d ' ' -f 1) if [ "${current_local}" != "${USER_LOCALES}" ]; then - echo "**** Configuring Locales to ${USER_LOCALES} ****"; + print_step_header "Configuring Locales to ${USER_LOCALES}" rm /etc/locale.gen echo -e "${USER_LOCALES}\nen_US.UTF-8 UTF-8" > "/etc/locale.gen" export LANGUAGE="${user_local}" @@ -13,7 +16,7 @@ if [ "${current_local}" != "${USER_LOCALES}" ]; then locale-gen update-locale LC_ALL="${user_local}" else - echo "**** Locales already set correctly to ${USER_LOCALES} ****"; + print_step_header "Locales already set correctly to ${USER_LOCALES}" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/50-configure_pulseaudio.sh b/overlay/etc/cont-init.d/50-configure_pulseaudio.sh index ab9dd06..9d146f6 100644 --- a/overlay/etc/cont-init.d/50-configure_pulseaudio.sh +++ b/overlay/etc/cont-init.d/50-configure_pulseaudio.sh @@ -1,18 +1,19 @@ -echo "**** Configure pulseaudio ****" +# Configure dbus +print_header "Configure pulseaudio" # Always enable the pulseaudio service -echo "Enable pulseaudio service." +print_step_header "Enable pulseaudio service." sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/pulseaudio.ini if [ "${MODE}" == "s" ] | [ "${MODE}" == "secondary" ]; then - echo "Configure pulseaudio as simple dummy audio" + print_step_header "Configure pulseaudio as simple dummy audio" sed -i 's|^; autospawn.*$|autospawn = no|' /etc/pulse/client.conf sed -i 's|^; daemon-binary.*$|daemon-binary = /bin/true|' /etc/pulse/client.conf sed -i 's|^; flat-volumes.*$|flat-volumes = yes|' /etc/pulse/daemon.conf else - echo "Configure pulseaudio to pipe audio to a socket" + print_step_header "Configure pulseaudio to pipe audio to a socket" # Ensure pulseaudio directories have the correct permissions mkdir -p \ @@ -37,4 +38,4 @@ else fi chown -R ${USER} /etc/pulse -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/60-configure_gpu_driver.sh b/overlay/etc/cont-init.d/60-configure_gpu_driver.sh index e884939..8c4be98 100644 --- a/overlay/etc/cont-init.d/60-configure_gpu_driver.sh +++ b/overlay/etc/cont-init.d/60-configure_gpu_driver.sh @@ -34,11 +34,11 @@ function download_driver { chown -R ${USER:?} "${USER_HOME:?}/Downloads" if [[ ! -f "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" ]]; then - echo "Downloading driver v${nvidia_host_driver_version:?}" + print_step_header "Downloading driver v${nvidia_host_driver_version:?}" wget -q --show-progress --progress=bar:force:noscroll \ -O /tmp/NVIDIA.run \ "http://download.nvidia.com/XFree86/Linux-x86_64/${nvidia_host_driver_version:?}/NVIDIA-Linux-x86_64-${nvidia_host_driver_version:?}.run" - [[ $? -gt 0 ]] && echo "Error downloading driver. Exit!" && return 1 + [[ $? -gt 0 ]] && print_error "Unable to download driver. Exit!" && return 1 mv /tmp/NVIDIA.run "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" fi @@ -52,7 +52,7 @@ function install_nvidia_driver { download_driver if (($(echo $nvidia_host_driver_version | cut -d '.' -f 1) > 500)); then - echo "Installing NVIDIA driver v${nvidia_host_driver_version:?} to match what is running on the host" + print_step_header "Installing NVIDIA driver v${nvidia_host_driver_version:?} to match what is running on the host" chmod +x "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" \ --silent \ @@ -73,7 +73,7 @@ function install_nvidia_driver { --no-install-libglvnd \ > "${USER_HOME:?}/Downloads/nvidia_gpu_install.log" 2>&1 else - echo "Installing Legacy NVIDIA driver v${nvidia_host_driver_version:?} to match what is running on the host" + print_step_header "Installing Legacy NVIDIA driver v${nvidia_host_driver_version:?} to match what is running on the host" chmod +x "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" "${USER_HOME:?}/Downloads/NVIDIA_${nvidia_host_driver_version:?}.run" \ --silent \ @@ -104,13 +104,13 @@ function patch_nvidia_driver { ( set +e if [ ! -f "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" ]; then - echo "Fetch NVIDIA NVENC patch" + print_step_header "Fetch NVIDIA NVENC patch" wget -q --show-progress --progress=bar:force:noscroll \ -O "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" \ "https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch.sh" fi if [ ! -f "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" ]; then - echo "Fetch NVIDIA NvFBC patch" + print_step_header "Fetch NVIDIA NvFBC patch" wget -q --show-progress --progress=bar:force:noscroll \ -O "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" \ "https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch-fbc.sh" @@ -119,13 +119,13 @@ function patch_nvidia_driver { "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" \ "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" - echo "Install NVIDIA driver patches" + print_step_header "Install NVIDIA driver patches" echo "/patched-lib" > /etc/ld.so.conf.d/000-patched-lib.conf mkdir -p "/patched-lib" PATCH_OUTPUT_DIR="/patched-lib" "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" PATCH_OUTPUT_DIR="/patched-lib" "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" - pushd "/patched-lib" &> /dev/null || { echo "Error: Failed to push directory to /patched-lib"; exit 1; } + pushd "/patched-lib" &> /dev/null || { print_error "Failed to push directory to /patched-lib"; exit 1; } for f in * ; do suffix="${f##*.so}" name="$(basename "$f" "$suffix")" @@ -133,21 +133,21 @@ function patch_nvidia_driver { [ -h "$name" ] || ln -sf "$f" "$name.1" done ldconfig - popd &> /dev/null || { echo "Error: Failed to pop directory out of /patched-lib"; exit 1; } + popd &> /dev/null || { print_error "Failed to pop directory out of /patched-lib"; exit 1; } ) else - echo "Leaving NVIDIA driver stock without patching" + print_step_header "Leaving NVIDIA driver stock without patching" fi } function install_deb_mesa { if [ ! -f /tmp/init-mesa-libs-install.log ]; then - echo " - Enable i386 arch" + print_step_header "Enable i386 arch" dpkg --add-architecture i386 - echo " - Add Debian SID sources" + print_step_header "Add Debian SID sources" echo "deb http://deb.debian.org/debian/ sid main" > /etc/apt/sources.list apt-get update &>> /tmp/init-mesa-libs-install.log - echo " - Install mesa vulkan drivers" + print_step_header "Install mesa vulkan drivers" echo "" >> /tmp/init-mesa-libs-install.log apt-get install -y --no-install-recommends \ libvulkan1 \ @@ -159,13 +159,13 @@ function install_deb_mesa { vulkan-tools \ &>> /tmp/init-mesa-libs-install.log else - echo " - Mesa has already been installed into this container" + print_step_header "Mesa has already been installed into this container" fi } function install_amd_gpu_driver { - echo "Install AMD Mesa driver" if command -v pacman &> /dev/null; then + print_step_header "Install AMD Mesa driver" pacman -Syu --noconfirm --needed \ lib32-vulkan-icd-loader \ lib32-vulkan-radeon \ @@ -177,8 +177,8 @@ function install_amd_gpu_driver { } function install_intel_gpu_driver { - echo "Install Intel Mesa driver" if command -v pacman &> /dev/null; then + print_step_header "Install Intel Mesa driver" pacman -Syu --noconfirm --needed \ lib32-vulkan-icd-loader \ lib32-vulkan-intel \ @@ -191,28 +191,28 @@ function install_intel_gpu_driver { # Intel Arc GPU or Intel CPU with possible iGPU if [ "${intel_gpu_model:-}X" != "X" ]; then - echo "**** Found Intel device '${intel_gpu_model:?}' ****" + print_header "Found Intel device '${intel_gpu_model:?}'" install_intel_gpu_driver elif [ "${intel_cpu_model:-}X" != "X" ]; then - echo "**** Found Intel device '${intel_cpu_model:?}' ****" + print_header "Found Intel device '${intel_cpu_model:?}'" install_intel_gpu_driver else - echo "**** No Intel device found ****" + print_header "No Intel device found" fi # AMD GPU if [ "${amd_gpu_model:-}X" != "X" ]; then - echo "**** Found AMD device '${amd_gpu_model:?}' ****" + print_header "Found AMD device '${amd_gpu_model:?}'" install_amd_gpu_driver else - echo "**** No AMD device found ****" + print_header "No AMD device found" fi # NVIDIA GPU if [ "${nvidia_pci_address:-}X" != "X" ]; then - echo "**** Found NVIDIA device '${nvidia_gpu_name:?}' ****" + print_header "Found NVIDIA device '${nvidia_gpu_name:?}'" install_nvidia_driver patch_nvidia_driver else - echo "**** No NVIDIA device found ****" + print_header "No NVIDIA device found" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/70-configure_desktop.sh b/overlay/etc/cont-init.d/70-configure_desktop.sh index f5974d5..5c139d6 100644 --- a/overlay/etc/cont-init.d/70-configure_desktop.sh +++ b/overlay/etc/cont-init.d/70-configure_desktop.sh @@ -1,22 +1,22 @@ -echo "**** Configure Desktop ****" +print_header "Configure Desktop" if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then - echo "Enable Desktop service." + print_step_header "Enable Desktop service." sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/desktop.ini else - echo "Desktop service not available when container is run in 'secondary' mode." + print_step_header "Desktop service not available when container is run in 'secondary' mode." sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/desktop.ini fi # Setup home directory if [[ ! -f /tmp/.home-directory-template-updated ]]; then - echo "Ensure home directory template is owned by the default user." + print_step_header "Ensure home directory template is owned by the default user." chown -R ${PUID}:${PGID} /templates/home_directory_template - echo "Installing default home directory template" + print_step_header "Installing default home directory template" mkdir -p "${USER_HOME:?}" rsync -aq /templates/home_directory_template/ "${USER_HOME:?}"/ touch /tmp/.home-directory-template-updated fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/70-configure_xorg.sh b/overlay/etc/cont-init.d/70-configure_xorg.sh index 7361ed4..15173ea 100644 --- a/overlay/etc/cont-init.d/70-configure_xorg.sh +++ b/overlay/etc/cont-init.d/70-configure_xorg.sh @@ -30,14 +30,14 @@ fi # Configure a NVIDIA X11 config function configure_nvidia_x_server { - echo "Configuring X11 with GPU ID: '${gpu_select}'" + print_step_header "Configuring X11 with GPU ID: '${gpu_select}'" nvidia_gpu_hex_id=$(nvidia-smi --format=csv --query-gpu=pci.bus_id --id="${gpu_select}" 2> /dev/null | sed -n 2p) IFS=":." ARR_ID=(${nvidia_gpu_hex_id}) unset IFS bus_id=PCI:$((16#${ARR_ID[1]})):$((16#${ARR_ID[2]})):$((16#${ARR_ID[3]})) - echo "Configuring X11 with PCI bus ID: '${bus_id}'" + print_step_header "Configuring X11 with PCI bus ID: '${bus_id}'" export MODELINE=$(cvt -r "${DISPLAY_SIZEW}" "${DISPLAY_SIZEH}" "${DISPLAY_REFRESH}" | sed -n 2p) - echo "Writing X11 config with ${MODELINE}" + print_step_header "Writing X11 config with ${MODELINE}" connected_monitor="--use-display-device=None" if [[ "X${DISPLAY_VIDEO_PORT:-}" != "X" ]]; then connected_monitor="--connected-monitor=${DISPLAY_VIDEO_PORT:?}" @@ -55,11 +55,11 @@ function configure_nvidia_x_server { function configure_x_server { # Configure x to be run by anyone if [[ ! -f /etc/X11/Xwrapper.config ]]; then - echo "Create Xwrapper.config" + print_step_header "Create Xwrapper.config" echo 'allowed_users=anybody' > /etc/X11/Xwrapper.config echo 'needs_root_rights=yes' >> /etc/X11/Xwrapper.config elif grep -Fxq "allowed_users=console" /etc/X11/Xwrapper.config; then - echo "Configure Xwrapper.config" + print_step_header "Configure Xwrapper.config" sed -i "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config echo 'needs_root_rights=yes' >> /etc/X11/Xwrapper.config fi @@ -73,7 +73,7 @@ function configure_x_server { # Clear out old lock files display_file=${XORG_SOCKET_DIR}/X${DISPLAY#:} if [ -S ${display_file} ]; then - echo "Removing ${display_file} before starting" + print_step_header "Removing ${display_file} before starting" rm -f /tmp/.X${DISPLAY#:}-lock rm ${display_file} fi @@ -85,31 +85,31 @@ function configure_x_server { # Check if this container is being run as a secondary instance if ([ "${MODE}" = "p" ] || [ "${MODE}" = "primary" ]); then - echo "Configure container as primary the X server" + print_step_header "Configure container as primary the X server" # Enable supervisord script sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/xorg.ini elif [ "${MODE}" == "fb" ] | [ "${MODE}" == "framebuffer" ]; then - echo "Configure container to use a virtual framebuffer as the X server" + print_step_header "Configure container to use a virtual framebuffer as the X server" # Disable xorg supervisord script sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini # Enable xvfb supervisord script sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/xvfb.ini else - echo "Configure container with no X server" + print_step_header "Configure container with no X server" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini fi # Enable KB/Mouse input capture with Xorg if configured if [ ${ENABLE_EVDEV_INPUTS:-} = "true" ]; then - echo "Enabling evdev input class on pointers, keyboards, touchpads, touch screens, etc." + print_step_header "Enabling evdev input class on pointers, keyboards, touchpads, touch screens, etc." cp -fv /usr/share/X11/xorg.conf.d/10-evdev.conf /etc/X11/xorg.conf.d/10-evdev.conf else - echo "Leaving evdev inputs disabled" + print_step_header "Leaving evdev inputs disabled" fi # Configure dummy config if no monitor is connected (not applicable to NVIDIA) if ([ "X${monitor_connected}" = "X" ] || [ "${FORCE_X11_DUMMY_CONFIG}" = "true" ]); then - echo "No monitors connected. Installing dummy xorg.conf" + print_step_header "No monitors connected. Installing dummy xorg.conf" # Use a dummy display input cp -fv /templates/xorg/xorg.dummy.conf /etc/X11/xorg.conf fi @@ -117,13 +117,13 @@ function configure_x_server { if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [[ -z ${nvidia_gpu_hex_id} ]]; then - echo "**** Generate default xorg.conf ****"; + print_header "Generate default xorg.conf" configure_x_server else - echo "**** Generate NVIDIA xorg.conf ****"; + print_header "Generate NVIDIA xorg.conf" configure_x_server configure_nvidia_x_server fi fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/80-configure_flatpak.sh b/overlay/etc/cont-init.d/80-configure_flatpak.sh index 3cb0b2f..649f84c 100644 --- a/overlay/etc/cont-init.d/80-configure_flatpak.sh +++ b/overlay/etc/cont-init.d/80-configure_flatpak.sh @@ -1,13 +1,13 @@ -echo "**** Configure Flatpak ****" +print_header "Configure Flatpak" if [ "X${NVIDIA_VISIBLE_DEVICES:-}" != "X" ]; then # Fix some flatpak quirks (not sure what is happening here) for NVIDIA containers mount -t proc none /proc flatpak list - echo "Flatpak configured for running inside a Docker container" + print_step_header "Flatpak configured for running inside a Docker container" else - echo "Flatpak already configured for running inside a Docker container" + print_step_header "Flatpak already configured for running inside a Docker container" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/90-configure_neko.sh b/overlay/etc/cont-init.d/90-configure_neko.sh index 4df1583..c593ba0 100644 --- a/overlay/etc/cont-init.d/90-configure_neko.sh +++ b/overlay/etc/cont-init.d/90-configure_neko.sh @@ -1,10 +1,10 @@ -echo "**** Configure Neko ****" +print_header "Configure Neko" # REF: https://neko.m1k1o.net/#/getting-started/configuration if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [ ${WEB_UI_MODE} = "neko" ]; then - echo "Enable Neko server" + print_step_header "Enable Neko server" sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/neko.ini # Make directories for neko @@ -15,9 +15,9 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then # Configure nat1to1 if it is not already set if [[ -z ${NEKO_NAT1TO1} ]]; then export NEKO_NAT1TO1=$(ip route get 1 | awk '{print $(NF-2);exit}') - echo "Setting NEKO_NAT1TO1=${NEKO_NAT1TO1}" + print_step_header "Setting NEKO_NAT1TO1=${NEKO_NAT1TO1}" else - echo "User provided setting NEKO_NAT1TO1=${NEKO_NAT1TO1}" + print_step_header "User provided setting NEKO_NAT1TO1=${NEKO_NAT1TO1}" fi # Configure hardware acceleration if it is not already set @@ -39,10 +39,10 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then export NEKO_SCREEN="${DISPLAY_SIZEW}x${DISPLAY_SIZEH}@${DISPLAY_REFRESH}" fi else - echo "Disable Neko server" + print_step_header "Disable Neko server" fi else - echo "Neko server not available when container is run in 'secondary' mode" + print_step_header "Neko server not available when container is run in 'secondary' mode" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/90-configure_steam.sh b/overlay/etc/cont-init.d/90-configure_steam.sh index 8f332be..6a562ed 100644 --- a/overlay/etc/cont-init.d/90-configure_steam.sh +++ b/overlay/etc/cont-init.d/90-configure_steam.sh @@ -1,5 +1,5 @@ -echo "**** Configure Steam ****" +print_header "Configure Steam" steam_autostart_desktop="$(cat < "${USER_HOME:?}/.config/autostart/Steam.desktop" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/steam.ini fi else - echo "Disable Steam service" + print_step_header "Disable Steam service" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/steam.ini fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/90-configure_sunshine.sh b/overlay/etc/cont-init.d/90-configure_sunshine.sh index 9b90fcd..9b3310c 100644 --- a/overlay/etc/cont-init.d/90-configure_sunshine.sh +++ b/overlay/etc/cont-init.d/90-configure_sunshine.sh @@ -1,15 +1,15 @@ -echo "**** Configure Sunshine ****" +print_header "Configure Sunshine" if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [ "${ENABLE_SUNSHINE:-}" = "true" ]; then - echo "Enable Sunshine server" + print_step_header "Enable Sunshine server" sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/sunshine.ini else - echo "Disable Sunshine server" + print_step_header "Disable Sunshine server" fi else - echo "Sunshine server not available when container is run in 'secondary' mode" + print_step_header "Sunshine server not available when container is run in 'secondary' mode" fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/90-configure_vnc.sh b/overlay/etc/cont-init.d/90-configure_vnc.sh index 67007f9..295c461 100644 --- a/overlay/etc/cont-init.d/90-configure_vnc.sh +++ b/overlay/etc/cont-init.d/90-configure_vnc.sh @@ -1,5 +1,5 @@ -echo "**** Configure VNC ****" +print_header "Configure VNC" function get_next_unused_port() { local __start_port=${1} @@ -16,15 +16,15 @@ function get_next_unused_port() { # REF: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?&page=130 DYNAMIC_PORT_VNC=$(get_next_unused_port 32035) export PORT_VNC=${PORT_VNC:-$DYNAMIC_PORT_VNC} -echo "Configure VNC service port '${PORT_VNC}'" +print_step_header "Configure VNC service port '${PORT_VNC}'" DYNAMIC_PORT_AUDIO_STREAM=$(get_next_unused_port ${DYNAMIC_PORT_VNC}) export PORT_AUDIO_STREAM=${PORT_AUDIO_STREAM:-$DYNAMIC_PORT_AUDIO_STREAM} -echo "Configure pulseaudio encoded stream port '${PORT_AUDIO_STREAM}'" +print_step_header "Configure pulseaudio encoded stream port '${PORT_AUDIO_STREAM}'" if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [ "${WEB_UI_MODE:-}" = "vnc" ]; then - echo "Enable VNC server" + print_step_header "Enable VNC server" sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/vnc.ini # TODO: Remove this... Always enable VNC audio @@ -32,20 +32,20 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then # Enable supervisord script sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/vnc-audio.ini else - echo "Disable audio stream" - echo "Disable audio websock" + print_step_header "Disable audio stream" + print_step_header "Disable audio websock" # Disable supervisord script sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini fi else - echo "Disable VNC server" + print_step_header "Disable VNC server" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini fi else - echo "VNC server not available when container is run in 'secondary' mode" + print_step_header "VNC server not available when container is run in 'secondary' mode" sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini fi -echo "DONE" +echo -e "\e[34mDONE\e[0m" diff --git a/overlay/etc/cont-init.d/95-setup_wol.sh b/overlay/etc/cont-init.d/95-setup_wol.sh index 7b8a485..a92b3ec 100644 --- a/overlay/etc/cont-init.d/95-setup_wol.sh +++ b/overlay/etc/cont-init.d/95-setup_wol.sh @@ -9,12 +9,12 @@ # Modified By: Josh.5 (jsunnex@gmail.com) ### -echo "**** Configure WoL Manager ****" +print_header "Configure WoL Manager" if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then if [ "${ENABLE_WOL_POWER_MANAGER:-}" = "true" ]; then if [ -f "/tmp/.wol-monitor" ]; then - echo "Container started in WoL Manager mode. Disabling all other services." + print_step_header "Container started in WoL Manager mode. Disabling all other services." for init_config in /etc/supervisor.d/*.ini ; do init_config_basename=$(basename "${init_config:?}") init_name="${init_config_basename%.*}" @@ -23,12 +23,12 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then sed -i 's|^autostart.*=.*$|autostart=false|' "${init_config:?}" done fi - echo "Enable WoL Manager service." + print_step_header "Enable WoL Manager service." sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/wol-power-manager.ini else - echo "Disable WoL Manager service." + print_step_header "Disable WoL Manager service." sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/wol-power-manager.ini fi else - echo "WoL Manager service not available when container is run in 'secondary' mode." + print_step_header "WoL Manager service not available when container is run in 'secondary' mode." fi