89 lines
3.3 KiB
Bash
Executable File
89 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
SCRIPT=$(readlink -f "$0")
|
|
AWD=$(dirname "$SCRIPT")
|
|
|
|
DISTRO_PVE=$((command -v pvesh &>/dev/null && echo 1) || echo 0)
|
|
|
|
configure(){
|
|
echo "Asia/Shanghai" | tee /etc/timezone >/dev/null
|
|
rm /etc/localtime
|
|
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
|
|
|
echo -e "APT::Install-Recommends "0";
|
|
APT::Install-Suggests "0";" | tee /etc/apt/apt.conf.d/01norecommend >/dev/null
|
|
|
|
cp "$AWD/assets/etc/ssh/ssh-ca.pub" /etc/ssh
|
|
cp "$AWD/assets/etc/ssh/ssh-krl" /etc/ssh
|
|
sed -i "s/.*PermitRootLogin.*/PermitRootLogin prohibit-password/g" /etc/ssh/sshd_config || true
|
|
sed -i "/.*TrustedUserCAKeys.*/d" /etc/ssh/sshd_config || true
|
|
sed -i "/.*RevokedKeys.*/d" /etc/ssh/sshd_config || true
|
|
echo "TrustedUserCAKeys /etc/ssh/ssh-ca.pub" | tee -a /etc/ssh/sshd_config >/dev/null || true
|
|
echo "RevokedKeys /etc/ssh/ssh-krl" | tee -a /etc/ssh/sshd_config >/dev/null || true
|
|
sed -i "s/.*Host \*.*/Host \*/g" /etc/ssh/ssh_config
|
|
sed -i "/.*HashKnownHosts.*/d" /etc/ssh/ssh_config
|
|
sed -i "/.*HostKeyAlgorithms.*/d" /etc/ssh/ssh_config
|
|
sed -i "/.*PubkeyAcceptedAlgorithms.*/d" /etc/ssh/ssh_config
|
|
sed -i "/.*IdentityFile.*/d" /etc/ssh/ssh_config
|
|
echo " HashKnownHosts no" | tee -a /etc/ssh/ssh_config >/dev/null
|
|
echo " HostKeyAlgorithms +ssh-rsa,rsa-sha2-256" | tee -a /etc/ssh/ssh_config >/dev/null
|
|
echo " PubkeyAcceptedAlgorithms +ssh-rsa,rsa-sha2-256" | tee -a /etc/ssh/ssh_config >/dev/null
|
|
echo " IdentityFile ~/.ssh/id_ed25519" | tee -a /etc/ssh/ssh_config >/dev/null
|
|
echo " IdentityFile ~/.ssh/id_rsa" | tee -a /etc/ssh/ssh_config >/dev/null
|
|
|
|
sed -i "s/.*SystemMaxUse=.*/SystemMaxUse=500M/g" /etc/systemd/journald.conf
|
|
sed -i "s/.*RuntimeMaxUse=.*/RuntimeMaxUse=500M/g" /etc/systemd/journald.conf
|
|
sed -i "s/.*MaxLevelStore=.*/MaxLevelStore=info/g" /etc/systemd/journald.conf
|
|
sed -i "s/.*MaxLevelSyslog=.*/MaxLevelSyslog=info/g" /etc/systemd/journald.conf
|
|
|
|
sed -i "/EDITOR=.*/d" /etc/environment
|
|
echo "EDITOR=micro" | tee -a /etc/environment >/dev/null
|
|
|
|
cp "$AWD/assets/usr/local/share/ca-certificates/TINK-CA.crt" /usr/local/share/ca-certificates
|
|
/usr/sbin/update-ca-certificates
|
|
|
|
sed -i "s|/bin/bash|/usr/bin/zsh|g" /etc/passwd
|
|
git -C /tmp clone https://git.tink.ltd:8443/tink/zsh-completions.git
|
|
cp /tmp/zsh-completions/src/* /usr/local/share/zsh/site-functions/
|
|
rm /tmp/zsh-completions -r
|
|
|
|
cp "$AWD/assets/etc/security/limits.d/00-default.conf" /etc/security/limits.d/00-default.conf
|
|
cp "$AWD/assets/etc/sysctl.d/zz-tweak.conf" /etc/sysctl.d/zz-tweak.conf
|
|
}
|
|
|
|
personalize() {
|
|
mkdir -p $HOME/.config/fd
|
|
cp "$AWD/assets/root/.config/fd/ignore" $HOME/.config/fd/
|
|
cp "$AWD/assets/root/.zshrc" $HOME/
|
|
if ((DISTRO_PVE)); then
|
|
sed -i -E "s/.*prompt .*/prompt bart/g" $HOME/.zshrc
|
|
fi
|
|
mkdir -p $HOME/.config/micro
|
|
cp "$AWD/assets/root/.config/micro/settings.json" $HOME/.config/micro/
|
|
}
|
|
|
|
usage(){
|
|
echo "Usage: $0 [OPTIONS]";
|
|
echo "OPTIONS:";
|
|
echo " -p personalize only";
|
|
}
|
|
|
|
DO_SYS_CONFIG=true;
|
|
while getopts ":np" OPT; do
|
|
case $OPT in
|
|
p)
|
|
DO_SYS_CONFIG=false;
|
|
;;
|
|
?)
|
|
echo "Invalid Option: -$OPTARG";
|
|
usage;
|
|
exit 1;;
|
|
esac;
|
|
done;
|
|
|
|
if $DO_SYS_CONFIG; then
|
|
configure
|
|
fi
|
|
personalize
|