More setup script work

This commit is contained in:
Daniel Flanagan 2023-04-16 02:26:30 -05:00
parent 175713f08a
commit d3e101e624
Signed by: lytedev
GPG key ID: 5B2020A0F9921EF4
2 changed files with 15 additions and 105 deletions

View file

@ -12,15 +12,22 @@ dfp="$(realpath "$(dirname "$0")"/../..)"
# may not be running from inside the dotfiles repo, may have been curl'd down solo, so we need to check # may not be running from inside the dotfiles repo, may have been curl'd down solo, so we need to check
if [[ ! -d "$dfp/.git" ]]; then if [[ ! -d "$dfp/.git" ]]; then
echo "Not running from inside the dotfiles git repo, so we need to download it first!" echo "Not running from inside the dotfiles git repo, so we need to download it first!"
exit 1 # each os needs instructions to install git, then we can clone the repo and proceed
if head /etc/os-release --lines 1 | grep 'Arch Linux' > /dev/null 2>&1; then
sudo pacman -Sy --needed git
fi
git clone https://git.lyte.dev/lytedev/dotfiles.git "$dfp"
fi fi
# auto-link any OS-specific environments
if head /etc/os-release --lines 1 | grep 'NixOS$' > /dev/null 2>&1; then if head /etc/os-release --lines 1 | grep 'NixOS$' > /dev/null 2>&1; then
ln -s "$dfp/os/linux/nix" "$ENV_PATH/os-linux-nix" > /dev/null 2>&1 ln -s "$dfp/os/linux/nix" "$ENV_PATH/os-linux-nix" > /dev/null 2>&1
elif head /etc/os-release --lines 1 | grep 'Arch Linux' > /dev/null 2>&1; then elif head /etc/os-release --lines 1 | grep 'Arch Linux' > /dev/null 2>&1; then
ln -s "$dfp/os/linux/arch" "$ENV_PATH/os-linux-arch" > /dev/null 2>&1 ln -s "$dfp/os/linux/arch" "$ENV_PATH/os-linux-arch" > /dev/null 2>&1
fi fi
# perform any pre-requisite setup (includes OS-specific setup scripts since we
# just included those)
for s in "$ENV_PATH"/*; do for s in "$ENV_PATH"/*; do
f="$s/dotfiles-init.d.sh" f="$s/dotfiles-init.d.sh"
if [ -f "$f" ]; then if [ -f "$f" ]; then
@ -29,110 +36,11 @@ for s in "$ENV_PATH"/*; do
fi fi
done done
# perform final dotfiles setup
echo "dotfiles-init: Running setup..." echo "dotfiles-init: Running setup..."
"$dfp/common/bin/dotfiles-setup" "$dfp/common/bin/dotfiles-setup"
# TODO: run provision script # TODO: setup ssh/gpg keys
# TODO: setup password store
# run_via_dotfiles_if_necessary() { # TODO: fetch notes database
# # clone dotfiles and re-run from repo if we're not in the repo # these are probably best handled in a dotfiles-init.d.sh script in a particular layer
# 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/dotfiles-init"
# exit 0
# fi
# popd
# }
# 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'

View file

@ -4,6 +4,8 @@ pacman -Sy --noconfirm --needed git fish sudo
echo "## Arch Linux Provisioning ##" echo "## Arch Linux Provisioning ##"
# TODO: use custom meta packages?
is_root="$(test "$(whoami)" == 'root' && echo "1" || echo "0")" is_root="$(test "$(whoami)" == 'root' && echo "1" || echo "0")"
for file in "$(dirname "$0")/provision.d"/*; do for file in "$(dirname "$0")/provision.d"/*; do
test -d "$file" && continue test -d "$file" && continue