Files
dotfiles/home/.before-source-state.sh

79 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
set -eu
apt_update() {
# Only run apt update once
if [ -f /tmp/.apt-updated ]; then
return
fi
sudo apt update >/dev/null
if [ $? -ne 0 ]; then
echo "Failed to update apt"
exit 1
else
touch /tmp/.apt-updated
fi
}
install_age() {
# Test if age is installed
command -v age >/dev/null 2>&1 && return
# Install age
apt_update
sudo apt install age
}
install_cargo_binstall() {
# Test if cargo binstall is installed
cargo binstall --help >/dev/null 2>&1
if [ $? -eq 0 ]; then
return
fi
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
# Test again
cargo binstall --help
if [ $? -ne 0 ]; then
echo "Failed to install cargo binstall"
exit 1
fi
}
install_rbw() {
# Test if rbw is installed
command -v rbw >/dev/null 2>&1 && return
cargo binstall rbw --no-confirm
# Test again
command -v rbw >/dev/null 2>&1 && return
echo "Failed to install rbw"
exit 1
}
install_inotify() {
if ! dpkg -l inotify-tools >/dev/null 2>&1; then
echo "Installing inotify-tools"
apt_update
sudo apt install inotify-tools
fi
}
# While key.txt is managed by Chezmoi, it's required for encrypted operations and needed to bootstrap other operations.
provide_key_txt() {
if [ ! -f "~/key.txt" ]; then
rbw get "key.txt (age)" --field notes >~/key.txt
rbw get "key.txt (age)" --field password >~/key.txt
fi
}
install_inotify
install_age
install_cargo_binstall
install_rbw
rbw login
rbw sync
provide_key_txt