Update dotfiles setup

master
Hektor Misplon 2025-02-05 20:11:42 +01:00
parent d463bd7432
commit a574645fa0
1 changed files with 91 additions and 48 deletions

View File

@ -1,13 +1,13 @@
#!/bin/bash #!/bin/bash
# Packages to install from Arch repositories
pac_list=( pac_list=(
git git
vim neovim
nodejs-lts-jod
) )
# Packages to install from AUR
aurpac_list=( aurpac_list=(
nvm
ttf-iosevka-term-ss08 ttf-iosevka-term-ss08
vim-plug vim-plug
xbanish xbanish
@ -15,7 +15,7 @@ xbanish
install() { install() {
if pacman -Qi "$1" &> /dev/null; then if pacman -Qi "$1" &> /dev/null; then
echo ""$1" is already installed" echo "$1 is already installed"
else else
echo "Installing " "$1" echo "Installing " "$1"
sudo pacman -S --noconfirm --needed "$1" sudo pacman -S --noconfirm --needed "$1"
@ -26,50 +26,93 @@ aurpac() {
git clone "https://aur.archlinux.org/$1.git" "$HOME/.build/$1" git clone "https://aur.archlinux.org/$1.git" "$HOME/.build/$1"
} }
count=0 install_packages() {
announce "Installing packages"
echo " " local count
echo "Installing required packages" for pac in "${pac_list[@]}" ; do
echo " " count=$((count+1))
printf '%s\n' "${pac_list[@]}"
for pac in "${pac_list[@]}" ; do
count=$[count+1]
install "$pac"; install "$pac";
done done
echo "$count packages installed"
}
origin="https://git.hektormisplon.xyz/hektor/dots" install_dotfiles() {
git clone "$origin" "$HOME/dots" announce "Installing dotfiles"
cp -r "$HOME/dots/.git" "$HOME/.git" origin="https://git.hektormisplon.xyz/hektor/dots"
git --git-dir="$HOME/.git" config --local status.showUntrackedFiles no git clone "$origin" "$HOME/dots"
git --git-dir="$HOME/.git" stash -m "[dots]" cp -r "$HOME/dots/.git" "$HOME/.git"
git --git-dir="$HOME/.git" stash apply git --git-dir="$HOME/.git" config --local status.showUntrackedFiles no
git --git-dir="$HOME/.git" restore "$HOME" git --git-dir="$HOME/.git" stash -m "[dots]"
git --git-dir="$HOME/.git" stash apply
git --git-dir="$HOME/.git" restore "$HOME"
}
echo " " install_aur_packages() {
echo "Installing aur packages" announce "Installing AUR packages"
echo " " local count
for package in "${aurpac_list[@]}" ; do
# [ ] Create aurpac installer function
for package in "${aurpac_list[@]}" ; do
if pacman -Qi "$1" &> /dev/null; then if pacman -Qi "$1" &> /dev/null; then
echo "$1 is already installed" echo "$1 is already installed"
else else
count=$[count+1] count=$((count+1))
aurpac "$package" && makepkg -si -D "$HOME/.build/$package" aurpac "$package" && makepkg -si -D "$HOME/.build/$package"
fi fi
done done
echo "$count AUR packages installed"
}
echo " " setup_neovim() {
echo "Setting up NeoVim" announce "Setting up NeoVim"
echo " " git clone --depth=1 https://github.com/savq/paq-nvim.git \
git clone --depth=1 https://github.com/savq/paq-nvim.git \
"${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/pack/paqs/start/paq-nvim "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/pack/paqs/start/paq-nvim
}
## Bluetooth setup setup_keyboard() {
# ___ announce "Setting up keyboard"
install "interception-tools"
install "interception-caps2esc"
udevmon_config_contents="\
- JOB: intercept -g \$DEVNODE | caps2esc -m 1 | uinput -d \$DEVNODE
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK]"
if [ -f /etc/interception/udevmon.yaml ] && diff -q <(echo "$udevmon_config_contents") /etc/interception/udevmon.yaml; then
echo "udevmon config already exists"
echo "$udevmon_config_contents"
elif [ -f /etc/interception/udevmon.yaml ]; then
echo "interception udevmon.yaml already exists"
cat /etc/interception/udevmon.yaml
echo "verify if this config matches the one below"
echo "$udevmon_config_contents"
else
echo "interception udevmon.yaml does not exist, creating one"
sudo bash -c "echo '$udevmon_config_contents' > /etc/interception/udevmon.yaml"
fi
# - [ ] Check if /etc/pulse/default.pa contains following line sudo systemctl enable --now udevmon.service
# load-module module-switch-on-connect
if pgrep -x caps2esc > /dev/null; then
echo "caps2esc is already running"
else
caps2esc -m 1
fi
}
announce() {
echo " "
echo "$1"
echo " "
}
confirm() {
read -r -p "$1? [y/N]" -n 1
case "$REPLY" in y|Y ) "$2";; * ) echo "Skipping"; esac
}
printf '%s\n' "${pac_list[@]}"
confirm "Install these packages? " install_packages
printf '%s\n' "${aurpac_list[@]}"
confirm "Install these AUR packages? " install_aur_packages
confirm "Setup NeoVim? " setup_neovim
confirm "Install dotfiles? " install_dotfiles
confirm "Setup keyboard? " setup_keyboard