sysconfig/nixhome-config.sh
2025-03-15 11:50:34 +08:00

97 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
if [ -d "$1" ]; then
NIXHOME=$1
elif [ -d "$(pwd)/nixhome" ]; then
NIXHOME=$(pwd)/nixhome
else
echo ""
echo "::*** Enter [root path] or [leave blank] for default to [[$(pwd)]]"
read -p "***:: " NIXHOME
if [ -z "$NIXHOME" ]; then
NIXHOME=$(pwd)
fi
fi
if [ ! -e "$NIXHOME/.bashrc" ]; then
echo "××× [[$NIXHOME/.bashrc]] not exist! Exit now. ***"
exit
else
echo "√√√ NIXHOME = [[$NIXHOME]]"
fi
echo ""
# $2 应当为用户名
if [ "$2" == 'root' ]; then
HomePath=/root
TheUser=root
elif [ "$2" ]; then
HomePath=/home/$2
TheUser=$2
else
# 可能是 root 或其他
HomePath=~
TheUser=$(whoami)
fi
if [ -d "$HomePath" ]; then
pushd "$HomePath"
homescriptlist=".emacs .emacs.lisp .bashrc .bash_profile .gitignore.global.txt"
echo
echo "::*** Copy or link scripts? [l] to link, [c] to copy, [g] to git import, [anything else] to omit:"
read -p "***:: " CopyOrLinkScripts
for homescript in $homescriptlist; do
if [ -e "$homescript" ] || [ -L "$homescript" ]; then
mv "$homescript" "$homescript.backup-$(date -u +%Y%m%dT%H%M%Sutc)"
fi
if [ "$CopyOrLinkScripts" == 'l' ]; then
echo "--- Linking [[$NIXHOME/$homescript]] to [[$HomePath/$homescript]] ..."
ln -s "$NIXHOME/$homescript" ./
elif [ "$CopyOrLinkScripts" == 'c' ]; then
echo "--- Copying [[$NIXHOME/$homescript]] to [[$HomePath/$homescript]] ..."
cp -r "$NIXHOME/$homescript" ./
elif [ "$CopyOrLinkScripts" == 'g' ]; then
curl -sSLO "https://git.faronear.org/npm/sysconfig/raw/branch/main/nixhome/$homescript"
fi
done
echo
if [ "$(uname)" == "Darwin" ]; then
echo '--- No need to configure ./ssh/authorized_keys on Mac OS X. Exit now.'
elif [ "$TheUser" != 'root' ]; then
mkdir -p "$HomePath/.ssh"
chmod 700 "$HomePath/.ssh"
if [ "$2" ]; then
# 由 root 指定新用户而创建的配置文件的 owner 是 root而不是新用户导致新用户无法读取该文件而密钥登录失败因此要重设 owner。
chown "$TheUser:$TheUser" "$HomePath/.ssh"
fi
if [ -f "$HomePath/.ssh/authorized_keys" ] || [ -L "$HomePath/.ssh/authorized_keys" ]; then
mv "$HomePath/.ssh/authorized_keys" "$HomePath/.ssh/authorized_keys.backup-$(date -u +%Y%m%dT%H%M%Sutc)"
fi
echo "::*** Append or link or omit [[$HomePath/.ssh/authorized_keys]] to config ssh server? [a] for append, [l] for link, [anything else] for omit:"
read -p "***:: " AuthorizedKeys
if [ "$AuthorizedKeys" = 'l' ]; then
echo "--- Linking [[$NIXHOME/authorized_keys]] to [[$HomePath/.ssh/authorized_keys]] ..."
ln -s "$NIXHOME/.ssh/authorized_keys" "$HomePath/.ssh/authorized_keys"
sudo chmod 644 "$HomePath/.ssh/authorized_keys" # 确保其他用户能读取 nixhome/.ssh/authorized_keys
elif [ "$AuthorizedKeys" = 'a' ]; then
echo "--- Copying [[$NIXHOME/authorized_keys]] to [[$HomePath/.ssh/authorized_keys]] ..."
cat "$NIXHOME/.ssh/authorized_keys" >> "$HomePath/.ssh/authorized_keys"
chmod 600 "$HomePath/.ssh/authorized_keys"
fi
echo
fi
popd
else
echo "!!! Not found [[$HomePath]], please try again."
fi