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/bin/init-dotfiles

130 lines
3.5 KiB
Text
Raw Normal View History

#!/usr/bin/env sh
head /etc/os-release -n 1 | grep 'NixOS$'; test $? -eq 1; is_nixos=$?
head /etc/os-release -n 1 | grep 'Arch Linux'; test $? -eq 1; is_arch_linux=$?
2020-11-06 00:50:13 -06:00
set -e
# NOTE: run this from inside a Linux installation, not from the live USB/CD
# TODO: detect OS and perform OS-specific setup
2020-10-26 16:39:09 -05:00
root_home="/root"
daniel_home="/home/daniel/.home"
nice_home="/home/daniel"
2020-11-06 00:31:43 -06:00
dotfiles="/.config/lytedev-dotfiles"
add_unstable_channel() {
nix-channel --add https://nixos.org/channels/nixos-unstable nixos-unstable
nix-channel --update
}
clone_dotfiles() {
2020-11-07 22:27:33 -06:00
if test $is_arch_linux -eq 1; then
pacman -S --needed git
fi
2020-11-06 00:50:13 -06:00
echo "Setting up dotfiles for $USER..."
mkdir --parents "$1"
2020-11-07 22:27:33 -06:00
rm -r "$1"
git clone "https://git.lyte.dev/lytedev/dotfiles" "$1"
}
symlink_nixos() {
rm --force "/etc/nixos/lytedev"
ln --symbolic "$1" "/etc/nixos/lytedev"
}
setup_wallpaper() {
2020-10-26 16:39:09 -05:00
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"
2020-10-26 16:39:09 -05:00
rm --recursive --force "$daniel_home/.wallpaper"
ln --symbolic "$nice_home/img/walls/clouds_by_souredapply.png" "$daniel_home/.wallpaper"
}
generate_ssh_key() {
2020-10-26 16:39:09 -05:00
mkdir --mode 600 --parents "$daniel_home/.ssh"
keyfile="$daniel_home/.ssh/$(hostname --short)"
2020-11-06 00:50:13 -06:00
if ! [ -f "$keyfile" ]; then
ssh-keygen -N '' -t ed25519 -f "$keyfile"
mkdir --mode 640 --parents "$nice_home/public"
cp "$keyfile.pub" "$nice_home/public"
ssh-add "$keyfile"
fi
}
fix_dotfiles_origin() {
2020-10-26 16:39:09 -05:00
cd "$daniel_home$dotfiles"
git remote set-url origin "ssh://git@git.lyte.dev:2222/lytedev/dotfiles.git"
}
2020-10-27 17:10:54 -05:00
setup_home_manager() {
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
}
2020-11-06 22:16:18 -06:00
setup_dotfiles() {
cd "$daniel_home$dotfiles"
./bin/setup-dotfiles
}
distro_specific_root_setup() {
2020-11-07 21:57:54 -06:00
if test $is_nixos -eq 1; then
symlink_nixos "$root_home$dotfiles/env/nix/"
add_unstable_channel
2020-11-07 22:23:52 -06:00
nixos-rebuild switch # this should create the `daniel` user
2020-11-07 21:57:54 -06:00
elif test $is_arch_linux -eq 1; then
# TODO: install any necessary packages for remaining setup portion
2020-11-07 22:23:52 -06:00
"$root_home$dotfiles/env/arch-linux/provision.d/00-add-user.bash"
2020-11-07 21:58:26 -06:00
printf ''
fi
}
distro_specific_user_setup() {
2020-11-07 21:57:54 -06:00
if test $is_nixos -eq 1; then
FUNC=$(declare -f symlink_nixos)
sudo sh -c "$FUNC; symlink_nixos \"$daniel_home$dotfiles/env/nix/\""
2020-11-07 21:57:54 -06:00
elif test $is_arch_linux -eq 1; then
# TODO: setup all the things
2020-11-07 21:58:26 -06:00
printf ''
fi
}
init_for_root() {
2020-10-26 16:39:09 -05:00
clone_dotfiles "$root_home$dotfiles"
2020-11-07 21:58:55 -06:00
distro_specific_root_setup
2020-10-26 16:39:09 -05:00
chown daniel:users "$daniel_home"
echo "Re-running as user daniel..."
2020-10-26 16:39:09 -05:00
sudo --user daniel "$root_home$dotfiles/init.sh"
}
init_for_daniel() {
2020-10-26 16:39:09 -05:00
clone_dotfiles "$daniel_home$dotfiles"
generate_ssh_key
distro_specific_user_setup
setup_wallpaper
# TODO: setup ssh/gpg keys
# TODO: setup password store
fix_dotfiles_origin
2020-11-06 22:16:18 -06:00
setup_dotfiles
2020-11-06 22:24:55 -06:00
# TODO: fetch password store
# TODO: fetch notes database
}
2020-11-06 00:42:19 -06:00
if [ "$EUID" -eq 0 ]; then
init_for_root
else
init_for_daniel
fi
echo "Here is this machine's public SSH key:"
2020-10-26 16:39:09 -05:00
echo " $(cat "$daniel_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!"
echo
echo "The simplest method for doing this is to run the following:"
2020-11-06 00:50:13 -06:00
echo ' scp -r "$TARGET_MACHINE:~/.gnupg" "$HOME/.gnupg'