#!/bin/sh
set -e
-PATH_REL_ETC="etc"
-PATH_REL_APTMARK="aptmark"
-PATH_REL_REPO="config"
-PATH_REL_HOME="home"
-PATH_REPO="${HOME}/${PATH_REL_REPO}"
-PATH_MANY="${PATH_REPO}/many_releases"
+PATH_REL_ETC=etc
+PATH_REL_APTMARK=aptmark
+PATH_REL_REPO=config
+PATH_REL_HOME=home
+PATH_MANY=../../many_releases
PATH_MANY_MISC="${PATH_MANY}/scripts/_misc.sh"
+ROOTS_HERE_AND_MANY="${PATH_MANY} .."
-USERNAME="plom"
+USERNAME=plom
PATH_USER_HOME="/home/${USERNAME}"
-FILENAME_PRIVATE_KEY='id_rsa'
+FILENAME_PRIVATE_KEY=id_rsa
FILENAME_PUBLIC_KEY="${FILENAME_PRIVATE_KEY}.pub"
URL_PUBLIC_KEY="https://dump.plomlompom.com/dump/${FILENAME_PUBLIC_KEY}"
-PATH_REL_LOCAL_SSH=".ssh"
+PATH_REL_LOCAL_SSH=.ssh
PATH_REL_AUTHORIZED_KEYS="${PATH_REL_LOCAL_SSH}/authorized_keys"
PATH_AUTHORIZED_KEYS="${HOME}/${PATH_REL_AUTHORIZED_KEYS}"
PATH_USER_SSH="${PATH_USER_HOME}/${PATH_REL_LOCAL_SSH}"
# properly configure apt and reduce system to minimum that satisfies our own
# aptmark/ package lists
- for root in "${PATH_MANY}" '..'; do
+ for root in ${ROOTS_HERE_AND_MANY}; do
copy_dirtree "${root}/${PATH_REL_ETC}/all" '/etc/apt' apt
done
apt update
mark_nonrequireds_auto
- for root in "${PATH_MANY}" '..'; do
+ for root in ${ROOTS_HERE_AND_MANY}; do
install_for_modules "${root}/${PATH_REL_APTMARK}" all raspi
done
apt -y --purge autoremove
- for root in "${PATH_MANY}" '..'; do
+ for root in ${ROOTS_HERE_AND_MANY}; do
copy_dirtree "${root}/${PATH_REL_ETC}" '/etc' all raspi
done
sed -i '/^output \* bg/ s/^/#/' /etc/sway/config
# Set up root environment.
- for root in "${PATH_MANY}" '..'; do
+ for root in ${ROOTS_HERE_AND_MANY}; do
copy_dirtree "${root}/${PATH_REL_HOME}" '/root' all root raspi_root
done
# Set up user and their environment.
adduser --disabled-password --gecos "" "${USERNAME}"
usermod -a -G sudo "${USERNAME}"
- for root in "${PATH_MANY}" '..'; do
+ for root in ${ROOTS_HERE_AND_MANY}; do
copy_dirtree "${root}/${PATH_REL_HOME}" "${PATH_USER_HOME}" all desktop raspi
done
mkdir "${PATH_USER_SSH}"
--- /dev/null
+#!/bin/sh
+PATH_BORGKEYS="${HOME}/.config/borg/keys"
+PATH_ORG="${HOME}/org"
+
+if [ "$1" = "orgpull" ]; then
+ cd /
+ echo "Pretending to do something."
+ FIRST_SERVER=$(ls -1 "${PATH_BORGKEYS}/" | head -1 | sed 's/.*@//')
+ REPO="${FIRST_SERVER}:borg"
+ ARCHIVE=$(borg list "${REPO}" | grep "${PATH_ORG}/" | tail -1 | cut -f1 -d' ')
+ echo "Pulling archive: ${ARCHIVE}"
+ borg extract --verbose "${REPO}::${ARCHIVE}"
+fi
--- /dev/null
+#!/bin/sh
+set -e
+
+. ../../constants.sh
+. "${PATH_MANY_MISC}"
+
+PATH_REL_SECRETS=to_usb
+PATH_SECRETS=${PATH_USER_HOME}/${PATH_REL_SECRETS}
+
+get_system_name_arg() {
+ 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}"
+ 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
+}
+
+abort_if_exists() {
+ if [ -e "${1}" ]; then
+ echo "Aborting because ${1} already exists."
+ exit 1
+ fi
+}
+
+abort_if_not_user() {
+if [ `whoami` != "$1" ]; then
+ echo "Must be run as $1."
+ exit 1
+fi
+}
+++ /dev/null
-#!/bin/sh
-set -e
-
-. ../../constants.sh
-. "${PATH_MANY_MISC}"
-
-PATH_REL_SECRETS=to_usb
-PATH_SECRETS=${PATH_USER_HOME}/${PATH_REL_SECRETS}
-
-get_system_name_arg() {
- 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}"
- 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
-}
-
-abort_if_exists() {
- if [ -e "${1}" ]; then
- echo "Aborting because ${1} already exists."
- exit 1
- fi
-}
-
-abort_if_not_user() {
-if [ `whoami` != "$1" ]; then
- echo "Must be run as $1."
- exit 1
-fi
-}
#!/bin/sh
set -e
set -x
-. ./misc.sh
+. ./_misc.sh
expect_min_n_args 1 "(system name)" "$@"
get_system_name_arg "$1"
# Hold kernel known to work with nvidia-drivers.
apt-mark hold linux-image-amd64 linux-headers-amd64
fi
-for root in "${PATH_MANY}" '..'; do
+for root in $ROOTS_HERE_AND_MANY; do
install_for_modules "${root}/${PATH_REL_APTMARK}" ${MIN_MODULES} user desktop
done
apt -y --purge autoremove
# Adapt /etc/ to our needs.
-for root in "${PATH_MANY}" '..'; do
+for root in $ROOTS_HERE_AND_MANY; do
copy_dirtree "${root}/${PATH_REL_ETC}" '/etc' ${MIN_MODULES} user desktop
done
ntpdate-debian
# Set up root environment.
-for root in "${PATH_MANY}" '..'; do
+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.
adduser --disabled-password --gecos "" "${USERNAME}"
usermod -a -G sudo "${USERNAME}"
-for root in "${PATH_MANY}" '..'; do
+for root in $ROOTS_HERE_AND_MANY; do
copy_dirtree "${root}/${PATH_REL_HOME}" "${PATH_USER_HOME}" ${MIN_MODULES} user desktop
done
-cp -a "${PATH_REPO}" "${PATH_USER_HOME}/"
+cp -a "../../../${PATH_REL_REPO}" "${PATH_USER_HOME}/"
chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_HOME}"
passwd "${USERNAME}"
#!/bin/sh
set -e
-. ./misc.sh
+. ./_misc.sh
abort_if_not_user root
while [ ! -e "${PATH_DEV}" ]; do
sleep 0.1
done
-while [ true ]; do
+while true; do
stty -echo
printf "\nSecrets passphrase: "
read SECRETS_PASS
echo "" # newline so user knows their input return was accepted
set +e
echo "${SECRETS_PASS}" | pmount "${PATH_DEV}"
- result=$?
+ RESULT=$?
set -e
- if [ "${result}" = "0" ]; then
+ if [ "${RESULT}" = "0" ]; then
break
- elif [ "${result}" != "100" ]; then
+ elif [ "${RESULT}" != "100" ]; then
echo "Aborting due to pmount error."
exit 1
fi
pumount "${SECRETS_DEV}"
echo "You can remove ${PATH_DEV} now."
chown -R "${USERNAME}:${USERNAME}" "${PATH_SECRETS}"
-sudo -u "${USERNAME}" ./setup_secrets_user.sh
+sudo -u "${USERNAME}" ./setup_secrets_user.sh "${SECRETS_PASS}"
#!/bin/sh
set -e
-. ./misc.sh
+. ./_misc.sh
+
+BORG_PASSPHRASE="$1"
+PATH_REPOS="${HOME}/repos"
+PATH_BORGKEYS="${HOME}/.config/borg/keys"
+REPOS_SITE_DOMAIN=plomlompom.com
+REMOTE_PATH_REPOS=/var/repos
+NAME_BORGAPP=borgplom
abort_if_not_user "${USERNAME}"
abort_if_exists "${PATH_USER_SSH}"
-PATH_REPOS="${HOME}/repos"
abort_if_exists "${PATH_REPOS}"
+abort_if_exists "${PATH_BORGKEYS}"
echo "Setting up ~/.ssh"
PATH_PRIVATE_KEY="${PATH_USER_SSH}/${FILENAME_PRIVATE_KEY}"
PATH_PUBLIC_KEY="${PATH_USER_SSH}/${FILENAME_PUBLIC_KEY}"
-mkdir -p "${PATH_USER_SSH}" && cp "${PATH_SECRETS}/${FILENAME_PRIVATE_KEY}" "${PATH_PRIVATE_KEY}"
+mkdir -p "${PATH_USER_SSH}"
+cp "${PATH_SECRETS}/${FILENAME_PRIVATE_KEY}" "${PATH_PRIVATE_KEY}"
while [ ! -s "${PATH_PUBLIC_KEY}" ]; do
set +e
stty -echo
stty echo
set -e
done
+PATH_KNOWN_HOSTS="${PATH_USER_SSH}/known_hosts"
echo "Setting up ~/repos"
-REPOS_SITE_DOMAIN=plomlompom.com
REPOS_SITE_LOGIN="${USERNAME}@${REPOS_SITE_DOMAIN}"
-REMOTE_PATH_REPOS=/var/repos
eval $(ssh-agent) && ssh-add
-ssh-keyscan -H "${REPOS_SITE_DOMAIN}" >> "${PATH_USER_SSH}/known_hosts"
+ssh-keyscan "${REPOS_SITE_DOMAIN}" >> "${PATH_KNOWN_HOSTS}"
mkdir "${PATH_REPOS}"
cd "${PATH_REPOS}"
ssh ${REPOS_SITE_LOGIN} "cd $REMOTE_PATH_REPOS && ls -1" | while read REPO_NAME; do
git clone "${REPOS_SITE_LOGIN}:${REMOTE_PATH_REPOS}/${REPO_NAME}"
done
+
+echo "Set up borg and pull in ~/org"
+mkdir "${PATH_BORGKEYS}"
+tar xf "${PATH_SECRETS}/borg_keyfiles.tar" -C "${PATH_BORGKEYS}"
+ls -1 "${PATH_BORGKEYS}/" | while read FILENAME; do
+ SERVER_NAME=$(echo "${FILENAME}" | sed 's/.*@//')
+ ssh-keyscan "${SERVER_NAME}" >> "${PATH_KNOWN_HOSTS}"
+done
+while true; do
+ set +e
+ "${NAME_BORGAPP}" orgpull
+ RESULT=$?
+ set -e
+ if [ "${RESULT}" = "0" ]; then
+ break
+ elif [ "${RESULT}" != "2" ]; then
+ echo "Aborting due to unexpected ${NAME_BORGAPP} error."
+ exit 1
+ fi
+done
+
+PATH_REL_DEL_REPO="DELETE_${PATH_REL_REPO}"
+mv "${HOME}/${PATH_REL_REPO}" "${HOME}/${PATH_REL_DEL_REPO}"
+echo "With ~/repos set up, new reference be ~/repos/${PATH_REL_REPO}; moved ~/${PATH_REL_REPO} to ~/${PATH_REL_DEL_REPO}, ready to be deleted by you."