modules="$@"
initial_directory="$(pwd)"
for module in ${modules}; do
- mkdir -p "${source_root}/${module}"
- cd "${source_root}/${module}"
+ module_path="${source_root}/${module}"
+ if [ ! -d "${module_path}" ]; then
+ continue
+ fi
+ cd "${module_path}"
for path in $(find . -type f); do
target_path="${target_root}"$(echo "${path}" | cut -c2-)
source_path=$(realpath "${path}")
setup_scripts_dir="${config_tree_prefix}/scripts"
get_system_name_arg() {
- legal_system_names="t490s"
+ thinkpad_names="x220 w530 t490s"
+ legal_system_names="${thinkpad_names} h610m"
found=0
for system_name_i in $legal_system_names; do
if [ "$1" = "$system_name_i" ]; then
found=1
system_name="${system_name_i}"
- continue
+ break
fi
done
if [ "$found" = 0 ]; then
echo "Need legal system name."
false
fi
+ system_class_name=
+ for thinkpad_name in $thinkpad_names; do
+ if [ "${system_name}" = "${thinkpad_name}" ]; then
+ system_class_name=thinkpad
+ break
+ fi
+ done
}
expect_min_n_args 1 "(system name)" "$@"
get_system_name_arg "$1"
+min_modules="all ${system_class_name} ${system_name}"
# Adapt /etc/ to our needs by copying from ./etc_files. This will set
# basic configurations affecting following steps, such as setup of APT
# and the locale selection, so needs to be right at the beginning.
-copy_dirtree.sh "${config_tree_prefix}/${PATH_REL_ETC}" "" all
+copy_dirtree "${config_tree_prefix}/${PATH_REL_ETC}" "" ${min_modules}
# Migrate to testing.
upgrade_from_older_release
# 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
+if [ "$system_name" = "h610m" ]; then
+ # Hold kernel known to work with nvidia-drivers.
+ apt-mark hold linux-image-amd64 linux-headers-amd64
+fi
for root in "${PATH_MANY}" '..'; do
- install_for_modules "${root}/${PATH_REL_APTMARK}" all
+ install_for_modules "${root}/${PATH_REL_APTMARK}" ${min_modules}
done
apt -y --purge autoremove
for root in "${PATH_MANY}" '..'; do
- copy_dirtree "${root}/${PATH_REL_ETC}" '/etc' all
+ copy_dirtree "${root}/${PATH_REL_ETC}" '/etc' ${min_modules}
done
# Ensure our desired locale is available.
# Set Berlin localtime.
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ntpdate-debian
+
+# Set up root environment.
+for root in "${PATH_MANY}" '..'; do
+ copy_dirtree "${root}/${PATH_REL_HOME}" '/root' ${min_modules} minimal root
+done
+
+# Set up user and their environment.
+adduser --disabled-password --gecos "" "${USERNAME}"
+usermod -a -G sudo "${USERNAME}"
+for root in "${PATH_MANY}" '..'; do
+ copy_dirtree "${root}/${PATH_REL_HOME}" "${PATH_USER_HOME}" ${min_modules} desktop
+done
+chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_HOME}"
+passwd "${USERNAME}"