--- /dev/null
+#!/usr/bin/env dash
+set -e
+ROOT=$(dirname "$0")
+cd "${ROOT}"
+. lib/abort_if_exists
+. lib/abort_if_offline.sh
+. lib/constants_secrets # PATH_SECRETS, PATH_SECRETS_KDBX, PATH_SECRETS_SSH, PATH_SECRETS_BORGKEYS, PATH_USER_KDBX
+. lib/constants_ssh.sh # PATH_USER_SSH
+. lib/constants_user.sh # USERNAME
+. lib/expect_n_args.sh
+. lib/retry_until
+. lib/trapp.sh
+
+prefixed_msg_init
+
+expect_n_args 1 1 "(device name, e.g. 'sda')" $@
+abort_if_offline
+abort_if_exists "${PATH_SECRETS}"
+abort_if_exists "${PATH_USER_SSH}"
+abort_if_exists "${PATH_REPOS}"
+
+mount_secrets "$1" # sets PASSPHRASE
+copy_and_unmount_secrets 'in'
+export BORG_PASSPHRASE="${PASSPHRASE}"
+
+prefixed_msg 'Copying passwords DB …'
+cp -a "${PATH_SECRETS_KDBX}" "${PATH_USER_KDBX}"
+
+prefixed_msg 'Setting up ~/.ssh …'
+cp -a "${PATH_SECRETS_SSH}" "${PATH_USER_SSH}"
+stty -echo
+trapp stty echo
+retry_until 1 'echo ""' 'ssh-add -q' 'prefixed_msg "Aborting due to ssh-add error"'
+stty echo
+trapp
+
+printf '\n'
+prefixed_msg 'Setting up ~/repos …'
+REPOS_SITE_LOGIN="${USERNAME}@${REPOS_SITE_DOMAIN}"
+mkdir "${PATH_REPOS}"
+cd "${PATH_REPOS}"
+ssh ${REPOS_SITE_LOGIN} "cd ${REMOTE_PATH_REPOS} && ls -1" | while read REPO_NAME; do
+ prefixed_msg "Cloning ${REPO_NAME} …"
+ git clone --quiet --recurse "${REPOS_SITE_LOGIN}:${REMOTE_PATH_REPOS}/${REPO_NAME}"
+done
+cd - > /dev/null
+
+prefixed_msg 'Setting up borg and pull in ~/org …'
+cd "${PATH_SECRETS_BORGKEYS}"
+ls -1 | while read _FILENAME; do
+ "${NAME_BORGAPP}" claim "${_FILENAME}"
+done
+cd -
+retry_until 2 '' "${NAME_BORGAPP} orgpull" "prefixed_msg 'Aborting due to unexpected ${NAME_BORGAPP} error.'" '' 'direct'
+prefixed_msg "${_OUTPUT}"
+
+prefixed_msg_exit