119 lines
3.5 KiB
Bash
Executable file
119 lines
3.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# NOTE: run this from inside a Linux installation, not from the live USB/CD
|
|
# TODO: detect if in a live image
|
|
|
|
head /etc/os-release --lines 1 | grep 'NixOS$' &>/dev/null; test $? -eq 1; is_nixos=$?
|
|
head /etc/os-release --lines 1 | grep 'Arch Linux' &>/dev/null; test $? -eq 1; is_arch_linux=$?
|
|
|
|
set -e
|
|
set -x
|
|
|
|
run_via_dotfiles_if_necessary() {
|
|
# clone dotfiles and re-run from repo if we're not in the repo
|
|
pushd "$(dirname "$0")"
|
|
if git remote get-url origin | grep 'lytedev/dotfiles'; then
|
|
echo "Already in dotfiles repo!"
|
|
else
|
|
echo "Setting up dotfiles for $EUID..."
|
|
d="$HOME/.config/lytedev-dotfiles"
|
|
mkdir --parents "$d"
|
|
rm --recursive --force "$d"
|
|
git clone "https://git.lyte.dev/lytedev/dotfiles" "$d"
|
|
exec "$d/bin/init-dotfiles"
|
|
exit 0
|
|
fi
|
|
popd
|
|
}
|
|
|
|
symlink_nixos_config() {
|
|
rm --force "/etc/nixos/lytedev"
|
|
ln --symbolic "$1" "/etc/nixos/lytedev"
|
|
}
|
|
|
|
if [ "$EUID" -eq 0 ]; then
|
|
if test $is_arch_linux -eq 1; then
|
|
pacman -Sy --needed --noconfirm git inetutils openssh sudo
|
|
fi
|
|
run_via_dotfiles_if_necessary
|
|
pushd "$(dirname "$0")/.."
|
|
if test $is_nixos -eq 1; then
|
|
symlink_nixos_config "$HOME/.config/lytedev-dotfiles/env/nix/"
|
|
nix-channel --add https://nixos.org/channels/nixos-unstable nixos-unstable
|
|
nix-channel --update
|
|
nixos-rebuild switch # this should create the `daniel` user
|
|
elif test $is_arch_linux -eq 1; then
|
|
ls -la
|
|
"env/arch-linux/provision.d/00-add-user.bash"
|
|
fi
|
|
c=/home/daniel/.home/.config/
|
|
mkdir --parents "$c"
|
|
chown -R daniel:users "$c"
|
|
cp --recursive . "$c/lytedev-dotfiles"
|
|
sudo --user daniel "$c/bin/init-dotfiles"
|
|
popd
|
|
exit 0
|
|
else
|
|
run_via_dotfiles_if_necessary
|
|
echo
|
|
echo
|
|
echo
|
|
echo "PREPARING TO GENERATE SSH KEY FOR USER"
|
|
echo
|
|
echo
|
|
echo
|
|
pushd "$HOME"
|
|
keyfile=".ssh/$(hostname --short)"
|
|
echo $keyfile
|
|
if ! [ -f "$keyfile" ]; then
|
|
mkdir --mode 700 --parents .ssh
|
|
chmod 700 .ssh
|
|
ls -la .ssh
|
|
ssh-keygen -N '' -t ed25519 -f "$keyfile"
|
|
mkdir --mode 755 --parents "$NICE_HOME/public"
|
|
cp "$keyfile.pub" "$NICE_HOME/public"
|
|
fi
|
|
popd
|
|
if test $is_nixos -eq 1; then
|
|
FUNC=$(declare -f symlink_nixos_config)
|
|
sudo sh -c "$FUNC; symlink_nixos_config \"$HOME/.config/lytedev-dotfiles/env/nix/\""
|
|
elif test $is_arch_linux -eq 1; then
|
|
sudo "$HOME/.config/lytedev-dotfiles/env/arch-linux/provision.sh"
|
|
fi
|
|
mkdir --parents "$NICE_HOME/img/walls"
|
|
curl --silent --output "$NICE_HOME/img/walls/clouds_by_souredapply.png" \
|
|
"https://art.ngfiles.com/images/530000/530895_souredapple_clouds.png"
|
|
rm --recursive --force "$HOME/.wallpaper"
|
|
ln --symbolic "$NICE_HOME/img/walls/clouds_by_souredapply.png" "$HOME/.wallpaper"
|
|
|
|
# TODO: setup ssh/gpg keys
|
|
# TODO: setup password store
|
|
|
|
pushd "$HOME/.config/lytedev-dotfiles"
|
|
git remote set-url origin "ssh://git@git.lyte.dev:2222/lytedev/dotfiles.git"
|
|
./bin/setup-dotfiles
|
|
popd
|
|
|
|
# nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
|
|
# nix-channel --update
|
|
# nix-shell '<home-manager>' -A install
|
|
|
|
# TODO: fetch password store
|
|
# TODO: fetch notes database
|
|
fi
|
|
|
|
echo "Here is this machine's public SSH key:"
|
|
echo " $(cat "$HOME/.ssh/$(hostname --short).pub")"
|
|
echo "It needs to be added to existing cloud-based git accounts"
|
|
echo "and other machines before proceeding."
|
|
echo
|
|
echo "Don't forget to setup GPG keys by importing from an existing machine"
|
|
echo "or adding new child keys!"
|
|
if test $is_arch_linux -eq 1; then
|
|
echo
|
|
echo 'You will need to set a password for your new user.'
|
|
fi
|
|
echo
|
|
echo "The simplest method for doing this is to run the following:"
|
|
echo ' scp -r "$TARGET_MACHINE:~/.gnupg" "$HOME/.gnupg'
|