This repository has been archived on 2024-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/common/bin/dotfiles-init

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'