From 60fc6580d85b2c4a1108c7d884654086abc76a0e Mon Sep 17 00:00:00 2001 From: "T. R. Bernstein" <137705289+trbernstein@users.noreply.github.com> Date: Thu, 16 Oct 2025 23:20:56 +0200 Subject: [PATCH] Make config of hostname a setup step --- bin/azw-set-hostname | 73 ----------------------------------- modules/02-system-settings.sh | 28 +++++++++++++- 2 files changed, 27 insertions(+), 74 deletions(-) delete mode 100755 bin/azw-set-hostname diff --git a/bin/azw-set-hostname b/bin/azw-set-hostname deleted file mode 100755 index 5bce9c8..0000000 --- a/bin/azw-set-hostname +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env zsh -# vi: set ft=zsh tw=80 ts=2 - -function configureLogging() { - local output=tostdout level=info - [ -n "${logfile}" ] && output=${logfile} - [ "${verbose}" = true ] && level=debug - lop setoutput -l ${level} ${output} -} - -function getUsage() { - local cmdName=$1 text='' - read -r -d '' text <<- USAGE - Usage: - $cmdName [-v] [-d FILE] --hostname NAME - - Configure host specific settings. - - Options: - --hostname NAME Set NAME as current host's host name. - -d FILE, --logfile FILE Print log message to logfile instead of stdout. - -v, --verbose Be more verbose. - ---- - $cmdName 0.1.0 - Copyright (C) 2022 Rezart Qelibari, Astzweig GmbH & Co. KG - License EUPL-1.2. There is NO WARRANTY, to the extent permitted by law. - USAGE - print -- ${text} -} - -function quitSystemPreferences() { - ps -A -o pid,comm | grep "MacOS/System Settings" | awk '{print "kill -9 " $1}' | /bin/sh -} - -function setComputerName() { - scutil --set ComputerName "${hostname}" - scutil --set HostName "${hostname}" - scutil --set LocalHostName "${hostname}" - systemsetup -setcomputername "${hostname}" - systemsetup -setlocalsubnetname "${hostname}" -} - -function configureComputerHostname() { - local currentComputerName="`scutil --get ComputerName`" - if [[ "${currentComputerName}" != "${hostname}" ]]; then - lop -- -i 'Hostname of computer has not been set.' -i "Will set to ${hostname}." - indicateActivity -- 'Set computer name' setComputerName - else - lop -- -i 'Hostname of computer seems to have already been set. Skipping.' -i "Hostname: $currentComputerName" - fi -} - -function requireRootPrivileges() { - [[ `id -u` -eq 0 ]] || { lop -- -e 'Need root access to change hostname. Aborting.'; return 10 } -} - -function main() { - local cmdPath=${1} cmdName=${1:t} - shift - eval "`getUsage $cmdName | docopts -f -V - -h - : "$@"`" - configureLogging - requireRootPrivileges || return $? - - lop -y h1 -- -i 'Configure System Settings' - indicateActivity -- 'Quitting System Preferences' quitSystemPreferences - configureComputerHostname -} - -if [[ "${ZSH_EVAL_CONTEXT}" == toplevel || "${ZSH_EVAL_CONTEXT}" == cmdarg ]]; then - _DIR="${0:A:h}" - source autoload-zshlib - main $0 "$@" -fi diff --git a/modules/02-system-settings.sh b/modules/02-system-settings.sh index 41ad78b..9ebaef0 100755 --- a/modules/02-system-settings.sh +++ b/modules/02-system-settings.sh @@ -65,6 +65,24 @@ function configureMacOSFirewall() { ${cmd} --setallowsignedapp on } +function setComputerName() { + scutil --set ComputerName "${hostname}" + scutil --set HostName "${hostname}" + scutil --set LocalHostName "${hostname}" + systemsetup -setcomputername "${hostname}" + systemsetup -setlocalsubnetname "${hostname}" +} + +function configureComputerHostname() { + local currentComputerName="`scutil --get ComputerName`" + if [[ "${currentComputerName}" != "${hostname}" ]]; then + lop -- -i 'Hostname of computer has not been set.' -i "Will set to ${hostname}." + indicateActivity -- 'Set computer name' setComputerName + else + lop -- -i 'Hostname of computer seems to have already been set. Skipping.' -i "Hostname: $currentComputerName" + fi +} + function configure_system() { lop -y h1 -- -i 'Configure System Settings' indicateActivity -- 'Quitting System Preferences' quitSystemPreferences @@ -73,6 +91,13 @@ function configure_system() { indicateActivity -- 'Configuring login window' configureLoginWindow indicateActivity -- 'Configure global umask' launchctl config user umask 027 indicateActivity -- 'Configure macOS firewall' configureMacOSFirewall + configureComputerHostname +} + +function getQuestions() { + questions=( + 'i: hostname=What shall the systems hostname be?' + ) } function getUsage() { @@ -80,11 +105,12 @@ function getUsage() { read -r -d '' text <<- USAGE Usage: $cmdName show-questions [ ]... - $cmdName [-v] [-d FILE] + $cmdName [-v] [-d FILE] --hostname NAME Set energy, network and basic preferences. Options: + --hostname NAME Set NAME as current host's host name. -d FILE, --logfile FILE Print log message to logfile instead of stdout. -v, --verbose Be more verbose. ----