Enable use of categories for packages
This commit is contained in:
parent
da2aa65f7c
commit
e8ac82955e
1 changed files with 61 additions and 5 deletions
66
bs.sh
66
bs.sh
|
@ -130,6 +130,43 @@ usercheck() {
|
||||||
--yesno "The user \`$name\` already exists on this system. LARBS can install for a user already existing.\\n\\nLARBS will change $name's password to the one you just gave." 14 70
|
--yesno "The user \`$name\` already exists on this system. LARBS can install for a user already existing.\\n\\nLARBS will change $name's password to the one you just gave." 14 70
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectcategories() {
|
||||||
|
([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
|
||||||
|
curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
|
||||||
|
selectedcats=$(whiptail --title "Select package categories" --separate-output \
|
||||||
|
--checklist "Categories" 20 100 12 \
|
||||||
|
"amd" "AMD specific packages" ON \
|
||||||
|
"anki" "Anki" ON \
|
||||||
|
"backup" "Packages for backing the system up (borg)" ON \
|
||||||
|
"crypto" "Cryptocurrencies" ON \
|
||||||
|
"cysec" "Packages i use for my work in Cybersecurity" ON \
|
||||||
|
"dumb" "silly things I like to have" ON \
|
||||||
|
"editing" "Audio/video editing" ON \
|
||||||
|
"electronics" "Packages used for electronics and FPGA work" ON \
|
||||||
|
"fonts" "Fonts" ON \
|
||||||
|
"go" "Packages for work with golang" ON \
|
||||||
|
"gui" "Packages needed for my GUI and dotfiles to work" ON \
|
||||||
|
"haskell" "Haskell and things needed for it" ON \
|
||||||
|
"latex" "LaTeX" ON \
|
||||||
|
"lisp" "All sorts of Lisps" ON \
|
||||||
|
"lowlev" "Packages for programming in low-level languages (C,C++,Rust,etc)" ON \
|
||||||
|
"mail" "Mail client and related programs" ON \
|
||||||
|
"matrix" "Matrix clients" ON \
|
||||||
|
"ml" "Machine learning" ON \
|
||||||
|
"office" "Office packages" ON \
|
||||||
|
"passwords" "Password manager and related" ON \
|
||||||
|
"python" "Packages for python programming" ON \
|
||||||
|
"retro" "Retrocomputing" ON \
|
||||||
|
"rss" "RSS" ON \
|
||||||
|
"stats" "Statistics (R)" ON \
|
||||||
|
"system" "Packages I expect on my system" ON \
|
||||||
|
"tcl" "Tcl/Tk and related" ON \
|
||||||
|
"torrent" "Torrent clients" ON \
|
||||||
|
"virtual" "Virtual machine packages" ON \
|
||||||
|
"webdev" "Web-development" ON \
|
||||||
|
"www" "Browsers" ON 3>&1 1>&2 2>&3 3>&1) || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
preinstallmsg() {
|
preinstallmsg() {
|
||||||
whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
|
whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
|
||||||
--no-button "No, nevermind!" \
|
--no-button "No, nevermind!" \
|
||||||
|
@ -193,15 +230,31 @@ manualinstall() {
|
||||||
}
|
}
|
||||||
|
|
||||||
maininstallations() {
|
maininstallations() {
|
||||||
([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
|
|
||||||
curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
|
|
||||||
total=$(wc -l </tmp/progs.csv)
|
|
||||||
aurinstalled=$(pacman -Qqm)
|
aurinstalled=$(pacman -Qqm)
|
||||||
# Field 1: install-type, Field 2: program, Field 3: comment
|
# Field 1: install-type, Field 2: program, Field 3: comment
|
||||||
# Install pacman packages:
|
# Install pacman packages:
|
||||||
pacman --noconfirm -Rnd vim # Remove vim as it will conflict with gvim
|
pacman --noconfirm -Rnd vim # Remove vim as it will conflict with gvim
|
||||||
awk -F "," '$1 ~ /^$/ { print $2 }' </tmp/progs.csv | xargs pacman --noconfirm --needed -S
|
awk -F',' -v tags="${selectedcats}" '
|
||||||
awk -F "," '$1 ~ /^A$/ { print $2 }' </tmp/progs.csv | xargs sudo -u "$name" "$aurhelper" --noconfirm --needed -S
|
BEGIN {
|
||||||
|
# Convert selectedcats string to an array in awk
|
||||||
|
n = split(tags, sel_cats, " ");
|
||||||
|
for (i = 1; i <= n; i++) {
|
||||||
|
selected[sel_cats[i]] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Assuming tags are in the 3rd column
|
||||||
|
split($3, tag_list, "-");
|
||||||
|
for (i in tag_list) {
|
||||||
|
if (tag_list[i] in selected) {
|
||||||
|
print $0;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' /tmp/progs.csv >/tmp/filtered-progs.csv
|
||||||
|
|
||||||
|
awk -F "," '$1 ~ /^$/ { print $2 }' </tmp/filtered-progs.csv | xargs pacman --noconfirm --needed -S
|
||||||
|
awk -F "," '$1 ~ /^A$/ { print $2 }' </tmp/filtered-progs.csv | xargs sudo -u "$name" "$aurhelper" --noconfirm --needed -S
|
||||||
}
|
}
|
||||||
|
|
||||||
finalize() {
|
finalize() {
|
||||||
|
@ -226,6 +279,9 @@ getuserandpass || error "User exited."
|
||||||
# Give warning if user already exists.
|
# Give warning if user already exists.
|
||||||
usercheck || error "User exited."
|
usercheck || error "User exited."
|
||||||
|
|
||||||
|
# Select package categories to install
|
||||||
|
selectcategories || error "User exited."
|
||||||
|
|
||||||
# Last chance for user to back out before install.
|
# Last chance for user to back out before install.
|
||||||
preinstallmsg || error "User exited."
|
preinstallmsg || error "User exited."
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue