REF split installation into deps file and pacman/yay scripts

This commit is contained in:
Nathan Dwarshuis 2022-07-31 19:19:32 -04:00
parent 0557d67d9e
commit a967849d1d
5 changed files with 57 additions and 64 deletions

View File

@ -1,64 +0,0 @@
#!/bin/bash
## Build xmonad and install packages to make it run at full capacity
prebuild () {
# TODO this can be integrated into stack with nix
# for x11
make_pkgs=(libx11 libxrandr libxss)
# for alsa
make_pkgs=(alsa-lib)
# for iwlib
make_pkgs=(wireless_tools)
# for x11-xft
make_pkgs+=(libxft)
# for xmobar
make_pkgs+=(libxpm)
sudo pacman --noconfirm -S "${make_pkgs[@]}"
}
build () {
stack install
}
query='.[].success |
objects |
.root.tree |
..|.left?.data, ..|.right?.data, .data? |
select(. != null) |
.fulfillment |
select(. != null) |
add | select(. != null)'
jq_type () {
echo "$1" | jq --raw-output "select(.type==\"$2\") | .name" | sort | uniq
}
postbuild () {
# these are extra packages that pertain to processes outside xmonad but are
# still required/desired to make it work correctly
xmonad_pkgs=(xinit autorandr picom)
raw=$(xmonad --deps | jq "$query")
mapfile -t official < <(jq_type "$raw" "Official")
mapfile -t local < <(jq_type "$raw" "AUR")
if ! pacman -Si "${official[@]}" > /dev/null; then
echo "At least one official package doesn't exist."
exit 1
fi
if ! yay -Si "${local[@]}"; then
echo "At least one local package doesn't exist."
exit 1
fi
sudo pacman --noconfirm -S "${xmonad_pkgs[@]}" "${official[@]}"
yay --needed --noconfirm --norebuild --removemake -S "${local[@]}"
}
prebuild
build
postbuild

7
make_pkgs Normal file
View File

@ -0,0 +1,7 @@
libx11
libxrandr
libxss
alsa-lib
wireless_tools
libxft
libxpm

22
scripts/.query_pkgs Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
# Query the current xmonad configuration for packages to install
# usage: .query_pkgs "Official"|"AUR"
query='.[].success |
objects |
.root.tree |
..|.left?.data, ..|.right?.data, .data? |
select(. != null) |
.fulfillment |
select(. != null) |
add | select(. != null)'
jq_type () {
echo "$1" | jq --raw-output "select(.type==\"$2\") | .name" | sort | uniq
}
raw=$(xmonad --deps | jq "$query")
jq_type "$raw" "$1"

12
scripts/aur_deps Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
# Print list of packages to be installed via yay
mapfile -t local < <(./.query_pkgs "AUR")
if ! yay -Si "${local[@]}" > /dev/null; then
echo "At least one local package doesn't exist."
exit 1
fi
echo "${local[@]}"

16
scripts/pacman_deps Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
# Print list of packages to be installed via pacman
# these are extra packages that pertain to processes outside xmonad but are
# still required/desired to make it work correctly
xmonad_pkgs=(xinit autorandr picom)
mapfile -t official < <(./.query_pkgs "Official")
if ! pacman -Si "${official[@]}" > /dev/null; then
echo "At least one official package doesn't exist."
exit 1
fi
echo "${xmonad_pkgs[@]}" "${official[@]}"