From d3e101e624994b7ee4cbc4f3dd3c9a0995c362a6 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Sun, 16 Apr 2023 02:26:30 -0500 Subject: [PATCH] More setup script work --- common/bin/dotfiles-init | 118 ++++--------------------------------- os/linux/arch/provision.sh | 2 + 2 files changed, 15 insertions(+), 105 deletions(-) diff --git a/common/bin/dotfiles-init b/common/bin/dotfiles-init index fc2bae3..5c8b035 100755 --- a/common/bin/dotfiles-init +++ b/common/bin/dotfiles-init @@ -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 if [[ ! -d "$dfp/.git" ]]; then 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 +# auto-link any OS-specific environments 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 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 fi +# perform any pre-requisite setup (includes OS-specific setup scripts since we +# just included those) for s in "$ENV_PATH"/*; do f="$s/dotfiles-init.d.sh" if [ -f "$f" ]; then @@ -29,110 +36,11 @@ for s in "$ENV_PATH"/*; do fi done +# perform final dotfiles setup echo "dotfiles-init: Running setup..." "$dfp/common/bin/dotfiles-setup" -# TODO: run provision script - -# 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/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 '' -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' +# TODO: setup ssh/gpg keys +# TODO: setup password store +# TODO: fetch notes database +# these are probably best handled in a dotfiles-init.d.sh script in a particular layer diff --git a/os/linux/arch/provision.sh b/os/linux/arch/provision.sh index 58d6d45..d7825d5 100755 --- a/os/linux/arch/provision.sh +++ b/os/linux/arch/provision.sh @@ -4,6 +4,8 @@ pacman -Sy --noconfirm --needed git fish sudo echo "## Arch Linux Provisioning ##" +# TODO: use custom meta packages? + is_root="$(test "$(whoami)" == 'root' && echo "1" || echo "0")" for file in "$(dirname "$0")/provision.d"/*; do test -d "$file" && continue