Last active
May 1, 2024 13:04
-
-
Save Razuuu/6bd91497f464650d54322ef0010ece53 to your computer and use it in GitHub Desktop.
Sync LineageOS on a freshly installed Debian 12+ server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Script by Razuuu | |
# | |
# Variables | |
CONFIGFILE=$1 | |
# Access to usershell via function | |
function user_shell() { | |
su ${USERNAME} -c "$*" | |
} | |
# Check shell argument | |
if [ -z ${CONFIGFILE} ]; then | |
echo "Usage: ./$(basename $0) <configfile>" | |
exit 999 | |
fi | |
# Check if configfile exist | |
if [ ! -f ${CONFIGFILE} ]; then | |
# If not, create a template | |
echo "LINEAGE_VERSION=\"\" # e.g 18.1" >> ${CONFIGFILE} | |
echo -e "USERNAME=\"\" # without spaces\n" >> ${CONFIGFILE} | |
echo "SSH_PUBLIC_KEY=\"\"" >> ${CONFIGFILE} | |
echo -e "SSH_PRIVATE_KEY=\"\"\n" >> ${CONFIGFILE} | |
echo "GIT_USER=\"\"" >> ${CONFIGFILE} | |
echo "GIT_EMAIL=\"\"" >> ${CONFIGFILE} | |
echo "Created configfile \"${CONFIGFILE}\" due to the file not existing, please edit!" | |
exit 999 | |
else | |
# Source file | |
source ${CONFIGFILE} | |
# Check if all is set | |
CONFIGVARS=("LINEAGE_VERSION" "USERNAME" "SSH_PUBLIC_KEY" "SSH_PRIVATE_KEY" "GIT_USER" "GIT_EMAIL") | |
for CONFIGVAR in "${CONFIGVARS[@]}"; do | |
CONFIGVARNOTSET="no" | |
if [ -z "${!CONFIGVAR}" ]; then | |
CONFIGVARNOTSET="yes" | |
echo "${CONFIGVAR} is not set" | |
fi | |
done | |
if [ ${CONFIGVARNOTSET} == "yes" ]; then | |
echo "Please edit the configfile!" | |
exit 999 | |
fi | |
USERHOME="/home/${USERNAME}" | |
fi | |
# Update apt cache | |
apt update | |
# Install curl (needed for install packages) | |
apt -y install curl | |
# Install packages | |
APT_PACKAGES=$(curl -s https://wiki.lineageos.org/devices/beyond1lte/build | grep -o '<code class="language-plaintext highlighter-rouge">.*</code>' | awk -F'>|<' '{print $3}' | grep "bc" | grep "curl") | |
apt -y install ${APT_PACKAGES} repo screen python-is-python3 unzip git-lfs | |
# Fix libncurses5 not found by linking libcurses6 | |
ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /lib/x86_64-linux-gnu/libncurses.so.5 | |
ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5 | |
# Create user | |
adduser --disabled-password --gecos "" ${USERNAME} | |
# Setup SSH | |
SSH_PATH="${USERHOME}/.ssh" | |
SSH_KEY_TYPE=$(echo ${SSH_PUBLIC_KEY} | grep -oE '^[^[:space:]]+' | sed 's/ssh-//') | |
mkdir -p ${SSH_PATH} | |
echo "${SSH_PUBLIC_KEY}" > ${SSH_PATH}/id_${SSH_KEY_TYPE}.pub | |
echo "${SSH_PRIVATE_KEY}" > ${SSH_PATH}/id_${SSH_KEY_TYPE} | |
chown ${USERNAME}:${USERNAME} -R ${SSH_PATH} | |
chmod 700 ${SSH_PATH}/ | |
chmod 644 ${SSH_PATH}/id_${SSH_KEY_TYPE}.pub | |
chmod 600 ${SSH_PATH}/id_${SSH_KEY_TYPE} | |
# Setup Git | |
echo "[user] | |
name = ${GIT_USER} | |
email = ${GIT_EMAIL} | |
[filter \"lfs\"] | |
smudge = git-lfs smudge -- %f | |
process = git-lfs filter-process | |
required = true | |
clean = git-lfs clean -- %f | |
[color] | |
ui = auto" > ${USERHOME}/.gitconfig | |
chmod +x ${USERHOME}/.gitconfig | |
# Sync LineageOS sources | |
user_shell "mkdir -p ${USERHOME}/android/lineage" | |
user_shell "cd ${USERHOME}/android/lineage && repo init -u https://github.com/LineageOS/android.git -b lineage-${LINEAGE_VERSION} --git-lfs" | |
user_shell "cd ${USERHOME}/android/lineage && screen -dmS lineage_reposync repo sync" | |
echo "LineageOS syncing within a screen named lineage_reposync with the user ${USERNAME}!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment