--- /dev/null
+. lib/constants_etc # PATH_ETC
+. lib/constants_user # USERNAME
+. lib/copy_dirtrees_of_tags
+. lib/ensure_packages_of_tags
+
+core_setup() {
+ _HOSTNAME="$1"
+ _FQDN="$2"
+ _EXTERNAL_IP="$3"
+ _INSTALL_TAGS="$4"
+
+ echo "Installing and/or keeping only what's required by us or Debian."
+
+ # mark non-requireds auto
+ _PATH_LIST_PREFIX=/tmp/list_
+ _PATH_LIST_UNSORTED="${_PATH_LIST_PREFIX}unsorted"
+ _PATH_LIST_ALL_PACKAGES="${_PATH_LIST_PREFIX}all_packages"
+ _PATH_LIST_WHITE="${_PATH_LIST_PREFIX}white"
+ _PATH_LIST_BLACK="${_PATH_LIST_PREFIX}black"
+ _TOK_REQ=' required'
+ dpkg-query -Wf '${Package} ${Priority}\n' | grep "${_TOK_REQ}" | cut -d' ' -f1 > "${_PATH_LIST_UNSORTED}"
+ sort "${_PATH_LIST_UNSORTED}" > "${_PATH_LIST_WHITE}"
+ dpkg-query -Wf '${Package}\n' > "${_PATH_LIST_UNSORTED}"
+ sort "${_PATH_LIST_UNSORTED}" > "${_PATH_LIST_ALL_PACKAGES}"
+ comm -3 "${_PATH_LIST_ALL_PACKAGES}" "${_PATH_LIST_WHITE}" > "${_PATH_LIST_BLACK}"
+ apt-mark auto `cat "${_PATH_LIST_BLACK}"` > /dev/null
+ rm "${_PATH_LIST_UNSORTED}" "${_PATH_LIST_ALL_PACKAGES}" "${_PATH_LIST_WHITE}" "${_PATH_LIST_BLACK}"
+
+ # before purging, ensure tagged packages installed
+ ensure_packages_of_tags ${_INSTALL_TAGS}
+ echo "Autoremove and purge …"
+ apt-get -y autopurge > /dev/null
+ echo "And now: dist-upgrade …"
+ apt-get -y dist-upgrade > /dev/null
+
+ echo "Setting up user: ${USERNAME}"
+ adduser --quiet --disabled-password --gecos "" "${USERNAME}"
+ usermod -a -G sudo "${USERNAME}"
+
+ echo '\nCopying over files, directories.'
+ copy_dirtrees_of_tags ${_INSTALL_TAGS}
+
+ echo 'Setting hostname …'
+ echo "${_HOSTNAME}" > "${PATH_ETC}/hostname"
+ hostname "${_HOSTNAME}"
+
+ echo "Adapting ${_PATH_HOSTS} …"
+ _PATH_HOSTS="${PATH_ETC}/hosts"
+ if [ -z "${_FQDN}" ]; then
+ sed -i 's/REPLACE_WITH_FQDN/REPLACE_WITH_HOSTNAME.local REPLACE_WITH_HOSTNAME.localdomain/g' "${_PATH_HOSTS}"
+ else
+ sed -i 's/REPLACE_WITH_FQDN/'"${_FQDN}"'/g' "${_PATH_HOSTS}"
+ sed -i "s/#REPLACE_WITH_EXTERNAL_IP/${_EXTERNAL_IP}/g" "${_PATH_HOSTS}"
+ fi
+ sed -i 's/REPLACE_WITH_HOSTNAME/'"${_HOSTNAME}"'/g' "${_PATH_HOSTS}"
+
+ echo 'Syncing clock.'
+ ntpdate-debian -s
+}
. lib/constants_etc # PATH_ETC
. lib/constants_ssh # PATH_REL_SSH, PATH_USER_SSH
. lib/copy_dirtrees_of_tags
+. lib/core_setup
. lib/expect_n_args
-. lib/init_packages
. lib/path_tmp_timestamped
. lib/put_finished_marker
-. lib/setup_user
-. lib/set_hostname_and_hosts
INSTALL_TAGS='all server user'
echo "Adding caddy repo to ${PATH_APT_CADDY_REPO} …"
curl -1LfsS "${PATH_CADDY_REPO}/debian.deb.txt" > "${PATH_APT_CADDY_REPO}"
-init_packages "${INSTALL_TAGS}"
-setup_user
-
-echo 'Copying over files, directories …'
-copy_dirtrees_of_tags ${INSTALL_TAGS}
-
-set_hostname_and_hosts "${HOSTNAME}" "${EXTERNAL_IP}" "${FQDN}"
-
-echo 'Syncing clock …'
-ntpdate-debian -s
+core_setup "${HOSTNAME}" "${FQDN}" "${EXTERNAL_IP}" "${INSTALL_TAGS}"
echo 'Moving SSH data from root to user …'
mkdir -p "${PATH_USER_SSH}"
. lib/constants_etc # PATH_ETC
. lib/constants_user # USERNAME
. lib/copy_dirtrees_of_tags
+. lib/core_setup
. lib/expect_n_args
-. lib/init_packages
. lib/put_finished_marker
-. lib/setup_user
-. lib/set_hostname_and_hosts
PATH_NETWORK_INTERFACES="${PATH_ETC}/network/interfaces"
THINKPAD_NAMES="x220 w530 t490s"
echo "\nAlready know wifi connection, nothing to add."
fi
-init_packages "${INSTALL_TAGS}"
-setup_user
-
-echo '\nCopying over files, directories.'
-copy_dirtrees_of_tags ${INSTALL_TAGS}
-
-set_hostname_and_hosts "${SYSTEM_NAME}"
-
-echo '\nSyncing clock.'
-ntpdate-debian -s
+core_setup "${SYSTEM_NAME}" "" "" "${INSTALL_TAGS}"
echo "\nEnsuring our desired locale is available."
locale-gen