home · contact · privacy
Add SSID detection, more verbosity.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 13 Mar 2025 15:58:27 +0000 (16:58 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 13 Mar 2025 15:58:27 +0000 (16:58 +0100)
testing/scripts/setup_desktop.sh

index 78cce2fe51c1c2e74485fdd94d23282b55e21315..c4d8ee405d635e0865b7f1fc7a95796cff03c7e3 100755 (executable)
@@ -8,7 +8,8 @@ abort_if_offline
 get_system_name_arg "$1"
 MIN_MODULES="all ${SYSTEM_CLASS_NAME} ${SYSTEM_NAME}"
 
-# For upgrading only very selectively prepare /etc/ files.
+echo "Upgrading to testing."
+# For this step only very selectively prepare /etc/ files.
 PATH_REL_APT=apt
 PATH_REL_APT_CONF=${PATH_REL_APT}/apt.conf.d
 PATH_REL_SOURCES_LIST=${PATH_REL_APT}/sources.list
@@ -23,7 +24,7 @@ apt -y -o Dpkg::Options::='--force-confnew' upgrade
 apt -y -o Dpkg::Options::='--force-confnew' full-upgrade
 apt -y autoremove
 
-# Set hostname and FQDN.
+echo "Setting hostname and FQDN."
 echo "${SYSTEM_NAME}" > /etc/hostname
 hostname "${SYSTEM_NAME}"
 final_ip="127.0.1.1"
@@ -51,6 +52,7 @@ done
 echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts
 echo "${final_ip} ${SYSTEM_NAME}" >> /etc/hosts
 
+echo "Installing and/or keeping only what's required by us or Debian."
 # Ensure package installation state as defined by what packages are
 # defined as required by Debian policy and by settings in ./apt-mark/.
 mark_nonrequireds_auto
@@ -63,24 +65,41 @@ for root in $ROOTS_HERE_AND_MANY; do
 done
 apt -y --purge autoremove
 
-# Adapt /etc/ to our needs.
+echo "Adapting /etc to our needs."
 for root in $ROOTS_HERE_AND_MANY; do
     copy_dirtree "${root}/${PATH_REL_ETC}" '/etc' ${MIN_MODULES} user desktop
 done
 
-# Ensure our desired locale is available.
+echo "Ensuring our desired locale is available."
 locale-gen
 
-# Set Berlin localtime.
+echo "Setting Berlin localtime."
 ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
 ntpdate-debian
 
-# Set up root environment.
+echo "Setting up root user's home directory."
 for root in $ROOTS_HERE_AND_MANY; do
     copy_dirtree "${root}/${PATH_REL_HOME}" '/root' ${MIN_MODULES} minimal root
 done
 
-# Set up user and their environment.
+echo "Checking for existing wifi config in ${PATH_NETWORK_INTERFACES}."
+PATH_NETWORK_INTERFACES=/etc/network/interfaces
+get_network_interfaces_last_wpa_value() {
+    REGEX="^\s+wpa-${1}\s+"
+    cat "${PATH_NETWORK_INTERFACES}" | grep -E "${REGEX}" | sed -E "s/${REGEX}//g" | tail -1
+}
+WLAN_SSID=$(get_network_interfaces_last_wpa_value 'ssid')
+WLAN_PSK=$(get_network_interfaces_last_wpa_value 'psk')
+if [ ! -z "${WLAN_SSID}" ]; then
+    echo "Found, adding to NetworkManager."
+    if [ -z "${WLAN_PSK}" ]; then
+        nmcli connection add type wifi ssid "${WLAN_SSID}"
+    else  # NB: assumes last (collected with tail -1) wpa-psk that of last wlan-ssid
+        nmcli connection add type wifi ssid "${WLAN_SSID}" password "${WLAN_PSK}"
+    fi
+fi
+
+echo "Setting up user ${USERNAME}."
 adduser --disabled-password --gecos "" "${USERNAME}"
 usermod -a -G sudo "${USERNAME}"
 for root in $ROOTS_HERE_AND_MANY; do