From 9264ca8e92d5b9fff8c884b0d1495198d7d8786c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20unbrot=20P=C3=A4tzold?= Date: Sun, 3 May 2026 13:28:44 +0200 Subject: [PATCH] Relocate dist files, fix path references, and misc script improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move setup_system.conf.dist to system_setup/config.dist/ and skel.tar.zst.dist + pack_skel.sh to system_setup/skel/; config/ now holds only gitignored local files - Fix configure.sh CONF_DIST path (was pointing at non-existent config/setup_system.conf.dist) - Fix skel/pack_skel.sh: remove vestigial source line whose path was wrong in both old and new location - Update error messages in setup_system.inc.sh and sync_client_software.sh to reference new dist file location - Move machine_uuid reading/writing into setup_system.inc.sh so all scripts have MACHINEID available; setup_system.conf.dist now uses MACHINEID conditionally with a hostname fallback - sync_client_software.sh: fix && / typo (should be && \) that broke the flatpak remote-add → install chain; add network error handling after flatpak install; cleanup upgrade logic and chown placement - Update CLAUDE.md and install.md to reflect new dist file locations Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 8 ++--- install.md | 2 +- .../config.dist}/setup_system.conf.dist | 15 +++++----- system_setup/configure.sh | 2 +- system_setup/setup_skel.sh | 2 +- system_setup/setup_system.inc.sh | 15 +++++++++- system_setup/skel/pack_skel.sh | 1 - system_setup/sync_client_software.sh | 29 ++++++++++++------- 8 files changed, 47 insertions(+), 27 deletions(-) rename {config => system_setup/config.dist}/setup_system.conf.dist (90%) diff --git a/CLAUDE.md b/CLAUDE.md index 3bdc345..23c46af 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -13,16 +13,16 @@ A Fedora automated mass-installation and post-setup scripting collection. It use Before any script runs, copy the dist file and fill in your environment: ```sh -cp /opt/sys_config/config/setup_system.conf.dist /opt/sys_config/config/setup_system.conf +cp /opt/sys_config/system_setup/config.dist/setup_system.conf.dist /opt/sys_config/config/setup_system.conf # Edit setup_system.conf with your domain, server FQDNs, paths, etc. ``` Local per-machine overrides go in `config.d/*.conf` (gitignored). These are sourced after `setup_system.conf` and can override any exported variable (e.g. `config.d/system_defines.conf` overrides `UPGRADEBRANCH`). -`config/skel.tar.zst` (gitignored) holds the `/etc/skel` archive deployed to new installs. The `.dist` version is the default. To modify skel: extract, edit, then repack: +`config/skel.tar.zst` (gitignored) holds the `/etc/skel` archive deployed to new installs. The `.dist` version is at `system_setup/skel/skel.tar.zst.dist`. To modify skel: extract, edit, then repack: ```sh cd /opt/sys_config/config -tar -I 'zstd -9' -cf skel.tar.zst skel/ # or use pack_skel.sh +tar -I 'zstd -9' -cf skel.tar.zst skel/ # or use system_setup/skel/pack_skel.sh ``` ## Installation lifecycle @@ -51,7 +51,7 @@ tar -I 'zstd -9' -cf skel.tar.zst skel/ # or use pack_skel.sh | `system_setup/mount_ecrypt_home.sh` | user | called by logon_script.sh | | `system_setup/mozilla_starter.sh` | user | called by logon_script.sh; args: `firefox\|thunderbird run\|sync [profile]` | | `system_setup/setup_skel.sh` | root | called by setup_system_full.sh or manually | -| `config/pack_skel.sh` | root | manually, to repack skel archive after editing | +| `system_setup/skel/pack_skel.sh` | root | manually, to repack skel archive after editing | | `system_setup/create_nc_package_from_sys_config.sh` | user | manually, creates `~/temp/sys_config.tar.zst` | ## client_software layout diff --git a/install.md b/install.md index 6a9a284..8703b3b 100644 --- a/install.md +++ b/install.md @@ -44,7 +44,7 @@ Both are optional. That way, install.sh should know what to pull. Configure your environment before running any installation: ```sh -cp /opt/sys_config/config/setup_system.conf.dist /opt/sys_config/config/setup_system.conf +cp /opt/sys_config/system_setup/config.dist/setup_system.conf.dist /opt/sys_config/config/setup_system.conf # Edit setup_system.conf — set TLDOMAIN, SERVERFQDN_IPA, SERVERFQDN_NC, and paths. ``` diff --git a/config/setup_system.conf.dist b/system_setup/config.dist/setup_system.conf.dist similarity index 90% rename from config/setup_system.conf.dist rename to system_setup/config.dist/setup_system.conf.dist index 6cb1fcd..08b541b 100644 --- a/config/setup_system.conf.dist +++ b/system_setup/config.dist/setup_system.conf.dist @@ -21,14 +21,13 @@ export DISTCONFIGPATH_SRC="/Shared/sw_geteilt/client_settings" export CLIENTADMINGROUP="clientadmins" # Method to determine Unique Hostname / FQDN of the Client. May be replaced by your needs -#Should always had been set by install.sh and should be there anyway. -#if [ ! -r ${SYSCONFIGPATH}/config.d/machine_uuid.sys ]; then -#elif [ "$EUID" -eq 0 ]; then -# export HOSTNM="pc-$( dmidecode -t system | grep -i 'UUID' | sed 's/UUID: //' | tr '[:upper:]' '[:lower:]' | sed 's/[^0-9a-z]*//g' | xargs|tail -c 13)" -#else -# export HOSTNM=$( hostname -s ) -#fi -export HOSTNM="pc-$( cat /opt/sys_config/config.d/machine_uuid.sys )" +# MACHINEID should be set by install.sh. The Determination is done by setup_system.inc.sh as root for old installs. +if [ -z ${MACHINEID} ]; then + #Fallback if not configured, should only be needed once for very old installations + export HOSTNM=$( hostname -s ) +else + export HOSTNM="pc-${MACHINEID}" +fi export FQDN=${HOSTNM}.${DOMAIN} #Additional Client-Software- Repository-Folder in Nextcloud (Shared Folder / Systemwide) diff --git a/system_setup/configure.sh b/system_setup/configure.sh index 557c449..2850479 100755 --- a/system_setup/configure.sh +++ b/system_setup/configure.sh @@ -5,7 +5,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)" -CONF_DIST="${SCRIPTDIR}/../config/setup_system.conf.dist" +CONF_DIST="${SCRIPTDIR}/config.dist/setup_system.conf.dist" CONF_FILE="${SCRIPTDIR}/../config.d/configure.conf" if [[ "$EUID" -eq 0 ]]; then diff --git a/system_setup/setup_skel.sh b/system_setup/setup_skel.sh index f5e9cf5..494da91 100755 --- a/system_setup/setup_skel.sh +++ b/system_setup/setup_skel.sh @@ -3,7 +3,7 @@ source $(dirname "$0")/setup_system.inc.sh EXECDIR=$(pwd) SRCFILE="${SYSCONFIGPATH}/config/skel.tar.zst" -SRCFILEDIST="${SYSCONFIGPATH}/config/skel.tar.zst.dist" +SRCFILEDIST="$(dirname "$0")/skel/skel.tar.zst.dist" #Check for root if [ "$EUID" -ne 0 ]; then diff --git a/system_setup/setup_system.inc.sh b/system_setup/setup_system.inc.sh index 6256c27..590e4c2 100755 --- a/system_setup/setup_system.inc.sh +++ b/system_setup/setup_system.inc.sh @@ -16,6 +16,19 @@ # return 0 #} +#First, get the machine_uuid wich is needed by some userspace programs. +#As all Parameters that are bound to CPU or Mainboard, are only readable by root, we need to get the values at installtime. +#On old installations without the file, we will write it whenever possible +if [ -f $( dirname "$0" )/config.d/machine_uuid.sys ]; then + export MACHINEID="$( cat $( dirname "$0" )/config.d/machine_uuid.sys )" +elif [ "$EUID" -eq 0 ]; then + dmidecode -t system | grep -i 'UUID' \ + | sed 's/UUID: //' | tr '[:upper:]' '[:lower:]' \ + | sed 's/[^0-9a-z]*//g' | xargs | tail -c 13 \ + > "$( dirname "$0" )/config.d/machine_uuid.sys" + export MACHINEID="$( cat $( dirname "$0" )/config.d/machine_uuid.sys )" +fi + #Check for configure.conf - used for frist setup of system if [[ -f $(dirname "$0")/../config.d/configure.conf ]]; then echo "System in configure-mode. Will use $(dirname "$0")/../config.d/configure.conf for setup." @@ -23,7 +36,7 @@ if [[ -f $(dirname "$0")/../config.d/configure.conf ]]; then else #Load default system setup file if [[ ! -f $(dirname "$0")/../config/setup_system.conf ]]; then - echo "System configuration not found. Please make a copy of setup_system.conf.dist, name it setup_system.conf and check the settings in it before running." + echo "System configuration not found. Please copy system_setup/config.dist/setup_system.conf.dist to config/setup_system.conf and adjust the settings before running." echo "Press any key to continue" && read -n 1 -s -r && exit 1 fi source $(dirname "$0")/../config/setup_system.conf diff --git a/system_setup/skel/pack_skel.sh b/system_setup/skel/pack_skel.sh index 6b84c00..2b5a2fa 100755 --- a/system_setup/skel/pack_skel.sh +++ b/system_setup/skel/pack_skel.sh @@ -1,7 +1,6 @@ #!/usr/bin/env sh # Usage: will make a tar-file from folder skel found in the directory where executed # If you want to change skel- content, extrakt your skel.tar.zstd to this directory, edit the files and use this script to repack -source $(dirname "$0")/setup_system.inc.sh mv skel.tar.zst backup_skel.tar.zst if [ $? -eq 0 ]; then echo "Old Archive renamed to backup_skel.tar.zst" diff --git a/system_setup/sync_client_software.sh b/system_setup/sync_client_software.sh index 488d9e3..3f4fcf3 100755 --- a/system_setup/sync_client_software.sh +++ b/system_setup/sync_client_software.sh @@ -20,15 +20,20 @@ fi #Install or update Nextcloud com.nextcloud.desktopclient.nextcloud echo "Update or install Nextcloud client" -/usr/bin/flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo +/usr/bin/flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo && \ /usr/bin/flatpak install -y --or-update --noninteractive flathub com.nextcloud.desktopclient.nextcloud && echo "Done Update/Install of Nextcloud." +if [[ $? -ne 0 ]]; then + echo "" + echo "There seems to be a problem with your network connection. Please first check, if your network can be established before reuming." + echo "You can press CRTL+C to abort now. Than your data wont be accessible and you need to run \"$0\" again." + echo "You can also continue without network. You may need your personal encryptionkey for accessing your data." + read -n 1 -s -r -p "Please check Network and press any Key to continue" +fi echo "" -#Sync remote Files +#Do an upgrade of the Base package if its configured and if there are changes chown root:${CLIENTADMINGROUP} -R ${SYSCONFIGPATH} chmod ug+rwX,o=rX -R ${SYSCONFIGPATH} - -#Do an upgrade of the Base package if its configured and if there are changes if [[ ! -z "${UPGRADEURL}" ]]; then echo "Checking for Upgrades on ${UPGRADEURL} and Branch ${UPGRADEBRANCH}" REMOTEURL=$( git config --get remote.origin.url ) @@ -43,14 +48,17 @@ if [[ ! -z "${UPGRADEURL}" ]]; then else # Doing upgrade, discarding all local changes frist (is more save than forced pull) echo "Checks have passed, we are now upgrading via git." - git fetch origin - git reset --hard origin/${UPGRADEBRANCH} - #Remove all history - git rebase HEAD^ + #Fetch latest Updates and remove all history + git fetch origin && git reset --hard origin/${UPGRADEBRANCH} && git rebase HEAD^ + if [[ $? -ne 0 ]]; then + echo "Error: Failure while updating, will continue as is." + fi fi fi - echo "" +else + echo "UPGRADEURL is not specified in conf - No Upgrade option available." fi +echo "" # At first, sync central configs if they are configured to be synced if [[ ! -z "${DISTCONFIGPATH_SRC}" ]]; then @@ -85,12 +93,13 @@ if [[ ! -z "${DISTCONFIGPATH_SRC}" ]]; then echo "System is in configure-mode and configuration repository was found and synced, but still not configuration was found" echo "checking file $(dirname "$0")/../config/setup_system.conf" echo "" - echo "Please make a inital copy of config/setup_system.conf.dist to config/setup_system.conf and check all settings there." + echo "Please make a copy of system_setup/config.dist/setup_system.conf.dist to config/setup_system.conf and check all settings there." echo "Then rerun the logon script to sync the file to your repository." echo "Press any key to continue" && read -n 1 -s -r && exit 1 fi fi fi + #Check if Repository is defined if [ "${CLIENT_SOFTWARE_DST}." == "." ]; then echo "No central softwarerepository defined (CLIENT_SOFTWARE_DST). Skipping sync."