bootstrap: Switch package list to tsv

Package list is now a single tab separated list. That should make
several automations in the future much simpler.

The table is built as follows:
`Name   Description Source  Target`

with one line per package. Source denotes official repositories or AUR,
and target is kept for future potential of creating different
deployments per target automatically (e.g. different package list for
desktop and server, and so on).

There is an updater script `bootstrap/update_package_list.sh` which will
automatically populate the table, removing uninstalled packages, adding
new ones and (making its best attempt to be) keeping the selected
targets as they are.

The git commit hook comparing installed and committed packages has also
been rewritten to use the new table and be a little simpler overall.

Fixes #2.
This commit is contained in:
Marty Oehme 2022-03-09 11:13:45 +01:00
parent 0a9271ffe8
commit 280fab6ad3
Signed by: Marty
GPG Key ID: B7538B8F50A1C800
6 changed files with 374 additions and 356 deletions

View File

@ -1,59 +1,27 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
COMMIT_MSG_FILE="$1"
COMMIT_SOURCE="$2"
BOOTSTRAPDIR="bootstrap"
pkgfileloc="$(git rev-parse --show-toplevel)/$BOOTSTRAPDIR/packages.txt"
pkgignoreloc="$(git rev-parse --show-toplevel)/$BOOTSTRAPDIR/packages_ignore.txt"
listgen="paru"
pkg_committed="$(cat $(git rev-parse --show-toplevel)/$BOOTSTRAPDIR/packages.tsv | tail +2 | cut -f1 | sort)"
pkg_onsystem=$(pacman -Qqett | grep -v "$(pacman -Qqg base-devel)" | sort)
err() {
printf "\x1b[33mCAUTION:\x1b[0m %s\n" "$*"
exit 1
}
if [ ! -f "$pkgfileloc" ]; then
err "File not found - $pkgfileloc, can not determine package differences!"
fi
if ! type "$listgen" >/dev/null 2>&1; then
err "List generator not installed on machine, can not reliably determine package differences!"
fi
# get commited packages, remove empty lines
# and lines beginning with # to allow comments
pkgcommited=$(mktemp)
sed -e '/^[#$]/d' <"$pkgfileloc" | sort >"$pkgcommited"
# get packages on this machine
# q removes extraneous info
# e only lists explicitly installed
# tt removes those that are depended on, but NOT those optionally depended on
pkgcurrent=$("$listgen" -Qqett | sort)
# remove those listed in package_ignore.txt
if [ -f "$pkgignoreloc" ]; then
pkgcurrent=$(echo "$pkgcurrent" | comm -23 - "$pkgignoreloc")
fi
# compare the lists, list differences
result=$(echo "$pkgcurrent" | comm -3 - "$pkgcommited")
# get files only in repo (field1), and only on machine (field2)
added=$(echo "$result" | cut -f1 | sed -e '/^$/d')
removed=$(echo "$result" | cut -s -f2)
# get files only in repo, and only on machine
only_committed=$(comm -23 <(echo "$pkg_committed") <(echo "$pkg_onsystem"))
only_onsystem=$(comm -13 <(echo "$pkg_committed") <(echo "$pkg_onsystem"))
# if we have no changes, do nothing
if [ -n "$added" ] || [ -n "$removed" ]; then
text=$(printf "\-- PACKAGE DIFFERENCES TO COMMITED LIST FOUND --\nPackages NOT YET in repo:\n%s\n\nPackages ONLY in repo:%s\n" "$added" "$removed" | sed 's/^/# /gm')
if [ -n "$only_onsystem" ] || [ -n "$only_committed" ]; then
text=$(printf "\-- PACKAGE CHANGES --\nPackages on machine but not committed:\n%s\n\nPackages committed but not on machine:\n%s\n" "$only_onsystem" "$only_committed" | sed 's/^/# /gm')
else
exit 0
exit 0
fi
# prepend package changes to message
case $COMMIT_SOURCE in
"" | message, | template,)
msg=$(echo "$text" | cat - "$COMMIT_MSG_FILE")
printf "%s" "$msg" >"$COMMIT_MSG_FILE"
;;
msg=$(echo "$text" | cat - "$COMMIT_MSG_FILE")
printf "%s" "$msg" >"$COMMIT_MSG_FILE"
;;
esac

View File

@ -2,6 +2,8 @@
The bootstrapping module mainly concerns the setup of the repository itself -- installation of packages, setting up basic options and maintenance scripts.
* installs general list of packages, listed [here](bootstrap/packages.txt)
* if githooks are enabled (either through install script, or manually) will compare installed packages with those on the package list on each commit and warn user about differences (skipping those on the [ignore](bootstrap/packages_ignore.txt) list).
* contains a simple alias `dotlink` which allows quickly re-linking dotfiles when they have been changed. This is useful to invoke when files have been removed or added and need to be sym-linked by stow again (only works for `~/.dotfiles` dot directory).
* installs general list of packages, listed [here](bootstrap/packages.tsv)
* if githooks are enabled (either through install script, or manually) will compare installed packages with those on the package list on each commit and warn user about differences
* contains a simple alias `dotlink` which allows quickly re-linking dotfiles when they have been changed. This is useful to invoke when files have been removed or added and need to be sym-linked by stow again (only works for `~/.dotfiles` dot directory)
* contains an `update_package_list.sh` script which I can use to quickly repopulate the list of explicitly installed packages, noting down their source (repositories or AUR) and retaining their target, if I set any (only works for `~/.dotfiles` dot directory)

296
bootstrap/packages.tsv Normal file
View File

@ -0,0 +1,296 @@
Name Description Source Target
acpid A daemon for delivering ACPI power management events with netlink support R
activitywatch-bin Log what you do on your computer. Simple, extensible, no third parties. A
afew Initial tagging script for notmuch mail R
alias-tips-git An oh-my-zsh plugin to help remembering those aliases you defined once A
alsa-utils Advanced Linux Sound Architecture - Utilities R
an2linuxserver-git Sync android notifications encrypted to a linux desktop with tcp or bluetooth A
android-sdk-platform-tools Platform-Tools for Google Android SDK (adb and fastboot) A
anki Helps you remember facts (like words/phrases in a foreign language) efficiently A
ansible Official assortment of Ansible collections R
ansible-lint Checks playbooks for practices and behaviour that could potentially be improved. R
arch-wiki-lite The wiki without html. 1/9 as big, easily searched and viewable on console. R
arduino Arduino prototyping platform SDK R
arduino-avr-core Arduino AVR core with upstream avr-gcc and avrdude R
arduino-cli Arduino command line interface R
asciinema Record and share terminal sessions R
asix-ax88179-dkms A kernel module for ASIX AX88178A AX88179 USB 3.0 network adapters A
aspell-de German dictionary for aspell R
aspell-en English dictionary for aspell R
atool A script for managing file archives of various types A
awesome Highly configurable framework window manager R
barrier Open-source KVM software based on Synergy (GUI) R
bash-bats Bash Automated Testing System R
bash-completion Programmable completion for the bash shell R
bash-language-server Bash language server implementation based on Tree Sitter and its grammar for Bash R
bat Cat clone with syntax highlighting and git integration R
bearssl Implementation of the SSL/TLS protocol (RFC 5246) written in C A
beets Flexible music library manager and tagger R
bibclean BibTeX and Scribe bibliography prettyprinter and syntax checker A
biber A Unicode-capable BibTeX replacement for biblatex users R
bibtool Command line manipulation of BibTeX files. A
bind A complete, highly portable implementation of the DNS protocol R
bluez Daemons for the bluetooth protocol stack R
bluez-utils Development and debugging utilities for the bluetooth protocol stack R
brightnessctl Lightweight brightness control tool R
busted Elegant Lua unit testing (CLI) R
caddy Fast web server with automatic HTTPS R
calcurse A text-based personal organizer. R
catdoc A convertor for Microsoft Word, Excel, PowerPoint and RTF Files to text R
clipman A simple clipboard manager for Wayland A
crda Central Regulatory Domain Agent for wireless networks R
cups-pk-helper A helper that makes system-config-printer use PolicyKit R
dbus-broker Linux D-Bus Message Broker R
dcnnt Yet another tool to connect Android phone with desktop similar to KDE Connect A
dconf-editor dconf Editor R
dell-command-configure Configure various BIOS features on Dell laptops A
devour Window Manager agnostic swallowing feature for terminal emulators A
dhcpcd RFC2131 compliant DHCP client daemon R
diff-so-fancy Good-looking diffs with diff-highlight and more R
docker Pack, ship and run any application as a lightweight container R
docker-compose Fast, isolated development environments using Docker R
docx2txt Recovers text from DOCX files, with good formatting. R
dos2unix Text file format converter R
duf Disk Usage/Free Utility R
dunst Customizable and lightweight notification-daemon R
dust A more intuitive version of du in rust R
efm-langserver General purpose Language Server R
element-desktop Glossy Matrix collaboration client — desktop version. R
entr Run arbitrary commands when files change R
evince Document viewer (PDF, PostScript, XPS, djvu, dvi, tiff, cbr, cbz, cb7, cbt) R
exa ls replacement R
fasd Command-line productivity booster, offers quick access to files and directories R
fd Simple, fast and user-friendly alternative to find R
ffmpegthumbnailer Lightweight video thumbnailer that can be used by file managers R
firefox Standalone web browser from mozilla.org R
fvextra Extensions to fancyvrb, including automatic line breaking and improved math mode R
fwupd Simple daemon to allow session software to update firmware R
fzf-tab-git Replace zsh's default completion selection menu with fzf. R
gallery-dl Command-line program to download image-galleries and collections from several image hosting sites A
gimp GNU Image Manipulation Program R
git-lfs Git extension for versioning large files R
gitea-tea-git Painless self-hosted Git service.. A
gitlint Git commit message linter A
gk6x-bin Configure keys, macros, and lighting on GK6X keyboards (GK64, GK84, GK61, etc) A
glances CLI curses-based monitoring tool R
glfw-wayland A free, open source, portable framework for graphical application development (wayland) R
glow Markdown renderer for the CLI R
gnome-keyring Stores passwords and encryption keys R
gnu-netcat GNU rewrite of netcat, the network piping application R
gnuplot Plotting package which outputs to X11, PostScript, PNG, GIF, and others R
go Core compiler tools for the Go programming language R
go-ipfs A peer-to-peer hypermedia distribution protocol R
gomuks A terminal based Matrix client written in Go A
gopls Language server for Go programming language R
gotty-bin Simple command line tool that turns your CLI tools into web applications. A
grim Screenshot utility for Wayland R
grub GNU GRand Unified Bootloader (2) R
gsimplecal Simple and lightweight GTK calendar R
gst-libav Multimedia graph framework - libav plugin R
gst-plugins-bad Multimedia graph framework - bad plugins R
gstreamer-vaapi Multimedia graph framework - vaapi plugin R
gucharmap Gnome Unicode Charmap R
haveged Entropy harvesting daemon using CPU timings R
heimdall Tool suite used to flash firmware (ROMs) onto Samsung Galaxy S devices R
hplip Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet R
htop Interactive process viewer R
hugo Fast and Flexible Static Site Generator in Go R
iftop Display bandwidth usage on an interface R
imapfilter A mail filtering utility for processing IMAP mailboxes A
intel-ucode Microcode update files for Intel CPUs R
iputils Network monitoring tools, including ping R
ipython An enhanced Interactive Python shell. R
iucode-tool Tool to manipulate Intel® IA-32/X86-64 microcode bundles R
jabref-latest GUI frontend for BibTeX, written in Java; latest main (master) version from git A
jiq jid on jq A
jpdftweak A Swiss Army Knife GUI application for PDF documents A
jrnl Collect your thoughts and notes without leaving the command line R
keyd A key remapping daemon for linux. A
khal CLI calendar application build around CalDAV R
khard Console CardDAV client R
kitty A modern, hackable, featureful, OpenGL-based terminal emulator R
lazygit Simple terminal UI for git commands R
libdvdcss Portable abstraction library for DVD decryption R
libqalculate Multi-purpose desktop calculator R
libreoffice-fresh LibreOffice branch which contains new features and program enhancements R
libressl Free version of the TLS/crypto stack forked from OpenSSL R
libva-intel-driver VA-API implementation for Intel G45 and HD Graphics family R
licenses A set of common license files R
linux-firmware Firmware files for Linux R
linux-headers Headers and scripts for building modules for the Linux kernel R
littler a hash-bang and simple command line pipe front end for GNU R A
logrotate Rotates system logs automatically R
lswt List Wayland toplevels A
lua-format LuaFormatter - Code formatter for Lua A
lua-language-server Lua Language Server coded by Lua R
lua51-busted Elegant Lua unit testing R
luacheck A tool for linting and static analysis of Lua code. A
lynx A text browser for the World Wide Web R
maim Utility to take a screenshot using imlib2 R
man-db A utility for reading man pages R
man-pages Linux man pages R
masterpdfeditor-free A complete solution for creation and editing PDF files - Free version without watermark A
mbsync-git free (GPL) mailbox synchronization program A
mermaid-cli Generation of diagram and flowchart from text in a similar manner as markdown (CLI) A
mimeo Open files by MIME-type or file name using regular expressions. A
minio-client Replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage R
mopidy-iris A Mopidy Web client that utilizes the Spotify and EchoNest frameworks. (Formerly Spotmop) A
mopidy-local Mopidy extension for local media playback A
mopidy-mpd Mopidy extension for controlling playback from MPD clients A
mopidy-mpris Mopidy extension for controlling Mopidy through the MPRIS D-Bus interface A
mopidy-scrobbler Mopidy extension for scrobbling played tracks to Last.fm A
mopidy-spotify Mopidy extension for playing music from Spotify A
moreutils A growing collection of the unix tools that nobody thought to write thirty years ago R
mosh Mobile shell, surviving disconnects with local echo and line editing R
mpv-mpris MPRIS (Media Player Remote Interface Spec) plugin for mpv A
msmtp A mini smtp client R
nano Pico editor clone with enhancements R
ncmpcpp Almost exact clone of ncmpc with some new features R
needrestart Restart daemons after library updates. A
neomutt A version of mutt with added features R
neovim Fork of Vim aiming to improve user experience, plugins, and GUIs R
nerd-fonts-fira-code Patched font Fira (Fura) Code from the nerd-fonts library A
net-tools Configuration tools for Linux networking R
netctl Profile based systemd network management R
nethogs A net top tool which displays traffic used per process instead of per IP or interface R
network-manager-applet Applet for managing network connections R
networkmanager-openconnect NetworkManager VPN plugin for OpenConnect R
networkmanager-openvpn NetworkManager VPN plugin for OpenVPN R
newsboat An RSS/Atom feed reader for text terminals R
nextcloud-client Nextcloud desktop client R
nfs-utils Support programs for Network File Systems R
nmap Utility for network discovery and security auditing R
nodejs-markdownlint-cli MarkdownLint Command Line Interface A
nodejs-pandiff Prose diffs for any document format supported by Pandoc A
nsxiv Neo (or New or Not) Simple (or Small or Suckless) X Image Viewer A
ntfs-3g NTFS filesystem driver and utilities R
ntp Network Time Protocol reference implementation R
nvm Node Version Manager - Simple bash script to manage multiple active node.js versions R
nzbget Download from Usenet using .nzb files R
oh-my-zsh-git A community-driven framework for managing your zsh configuration. Includes 180+ optional plugins and over 120 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community R
os-prober Utility to detect other OSes on a set of drives R
p7zip Command-line file archiver with high compression ratio R
parallel A shell tool for executing jobs in parallel R
paru-bin Feature packed AUR helper A
pass-coffin A password store extension that hides data inside a GPG coffin A
pass-ssh A pass extension that creates ssh keys with an automatically generated passphrases stored in pass and outputs the public key using fzf or rofi A
pavucontrol PulseAudio Volume Control R
pdfjs PDF reader in javascript R
pdftk Command-line tool for working with PDFs R
peek Simple screen recorder with an easy to use interface R
perf Linux kernel performance auditing tool R
piavpn-bin Private Internet Access client A
picom X compositor that may fix tearing issues R
pipewire-alsa Low-latency audio/video router and processor - ALSA configuration R
playerctl mpris media player controller and lib for spotify, vlc, audacious, bmp, xmms2, and others. R
polybar A fast and easy-to-use status bar A
powertop A tool to diagnose issues with power consumption and power management R
prettier An opinionated code formatter for JS, JSON, CSS, YAML and much more R
protonvpn-cli-ng A Community Linux CLI for ProtonVPN. A
pulseaudio-alsa ALSA Configuration for PulseAudio R
pulsemixer CLI and curses mixer for pulseaudio R
pv A terminal-based tool for monitoring the progress of data through a pipeline. R
pyright Type checker for the Python language R
python-adblock Brave's adblock library in Python R
python-black Uncompromising Python code formatter R
python-dictcc commandline tool for dict.cc A
python-openpyxl A Python library to read/write Excel 2007 xlsx/xlsm files R
python-pagelabels Python library to manipulate PDF page numbers and labels. A
python-pdfminer.six Community maintained fork of pdfminer A
python-pip The PyPA recommended tool for installing Python packages R
python-pipx Install and Run Python Applications in Isolated Environments R
python-poetry Python dependency management and packaging made easy R
python-pybluez Python wrapper for the BlueZ Bluetooth stack R
python-pybtex A BibTeX-compatible bibliography processor written in Python R
python-pynvim Python client for Neovim R
python-readability-lxml Fast html to text parser (article readability tool) python library R
python-slugify A Python slugify application that handles unicode R
qt5-wayland Provides APIs for Wayland R
qt5-xmlpatterns Support for XPath, XQuery, XSLT and XML schema validation R
qtcurve-gtk2 A configurable set of widget styles for KDE and Gtk R
qutebrowser A keyboard-driven, vim-like browser based on PyQt5 R
redshift Adjusts the color temperature of your screen according to your surroundings. R
refind An EFI boot manager R
reflector A Python 3 module and script to retrieve and filter the latest Pacman mirror list. R
remind A sophisticated calendar and alarm program. R
restic Fast, secure, efficient backup program R
river A dynamic tiling wayland compositor. A
rivercarro-git A slightly modified version of rivertile layout generator for river. A
rng-tools Random number generator related utilities R
rtv Browse Reddit from your terminal A
sc-im A spreadsheet program based on SC A
screen Full-screen window manager that multiplexes a physical terminal R
sfz A simple static file server A
shellcheck-bin Shell script analysis tool (binary release) A
shfmt Format shell programs R
siggo A terminal gui for signal-cli, written in Go. A
slurp Select a region in a Wayland compositor R
speedtest-cli Command line interface for testing internet bandwidth using speedtest.net R
sshfs FUSE client based on the SSH File Transfer Protocol R
steam Valve's digital software delivery system R
stow Manage installation of multiple softwares in the same directory tree R
surfraw Shell Users' Revolutionary Front Rage Against the Web R
swaybg Wallpaper tool for Wayland compositors R
systemd-sysvcompat sysvinit compat for systemd R
task-spooler Queue up tasks from the shell for batch execution A
taskopen Script for taking notes and open urls with taskwarrior A
tasksh A shell command that wraps Taskwarrior commands A
tex-gyre-fonts Substitute PostScript fonts in OpenType format R
texlab A cross-platform implementation of the Language Server Protocol for LaTeX. R
tigervnc Suite of VNC servers and clients. Based on the VNC 4 branch of TightVNC. R
timew Timewarrior, A command line time tracking application R
tllocalmgr-git A shell and command-line utility to manage TeXLive on Arch Linux A
tlp Linux Advanced Power Management R
tmux A terminal multiplexer R
toilet free replacement for the FIGlet utility. A
tomb Crypto Undertaker, a simple tool to manage encrypted storage R
toot a Mastodon CLI client A
topgrade Invoke the upgrade procedure of multiple package managers R
transmission-qt Fast, easy, and free BitTorrent client (Qt GUI) R
ttf-brill Brill Typeface by John Hudson for Brill Publishing House A
ttf-comic-neue Comic Neue aspires to be the casual script choice for everyone including the typographically savvy. A
ttf-heuristica A serif latin & cyrillic font, derived from the "Adobe Utopia" font by Apanov A
ttf-iosevka-nerd Typeface family designed for coding, terminal use and technical documents (Nerd Fonts) R
ttf-signika Sans-serif typeface from Google by Anna Giedryś A
typescript-language-server-bin Language server implementation for JavaScript / TypeScript A
udiskie Removable disk automounter using udisks R
ufw Uncomplicated and easy to use CLI tool for managing a netfilter firewall R
unclutter A small program for hiding the mouse cursor R
unrar The RAR uncompression program R
unrtf Command-line program which converts RTF documents to other formats R
upower Abstraction for enumerating power devices, listening to device events and querying history and statistics R
urlview-xdg-git A curses URL parser for text files. Git version, adds support for QUITONLAUNCH option and XDG Base Directory specification compliance. A
usql-bin Universal command-line interface for SQL databases A
v4l2loopback-dkms v4l2-loopback device module sources R
vagrant Build and distribute virtualized development environments R
vale-bin A customizable, syntax-aware linter for prose A
vdirsyncer Synchronize CalDAV and CardDAV. R
viddy A modern watch command A
vifm-git Ncurses based file manager with vi like keybindings A
vim-language-server VimScript language server A
virtualbox Powerful x86 virtualization for enterprise as well as home use R
virtualbox-guest-iso The official VirtualBox Guest Additions ISO image R
visidata Terminal spreadsheet multitool for discovering and arranging data A
wavemon Ncurses-based monitoring application for wireless network devices R
waybar-git Highly customizable Wayland bar for Sway and Wlroots based compositors (GIT) A
waylock A simple screenlocker for wayland compositors R
wdisplays GUI display configurator for wlroots compositors A
wev tool for debugging wayland events, similar to xev A
wget Network utility to retrieve files from the Web R
wireguard-tools next generation secure network tunnel - tools for configuration R
wireless_tools Tools allowing to manipulate the Wireless Extensions R
wpa_actiond Daemon that connects to wpa_supplicant and handles connect and disconnect events A
wtype xdotool type for wayland R
xdg-user-dirs Manage user directories like ~/Desktop and ~/Music R
xsv A fast CSV toolkit written in Rust A
yaml-language-server-bin Language server implementation for YAML files and optional schema support A
youtube-dl A command-line program to download videos from YouTube.com and a few more sites R
ytfzf A posix script to find and watch youtube videos from the terminal. (Without API) A
zathura-cb Adds comic book support to zathura R
zathura-djvu DjVu support for Zathura R
zathura-pdf-mupdf PDF support for Zathura (MuPDF backend) (Supports PDF, ePub, and OpenXPS) R
zotero Zotero Standalone. Is a free, easy-to-use tool to help you collect, organize, cite, and share your research sources. A
zsh-autosuggestions Fish-like autosuggestions for zsh R
zsh-completions-git Additional completion definitions for Zsh A
zsh-fast-syntax-highlighting-git Optimized and extended zsh-syntax-highlighting R
zsh-pure-prompt Pretty, minimal and fast ZSH prompt A
Can't render this file because it contains an unexpected character in line 252 and column 64.

View File

@ -1,283 +0,0 @@
acpid
activitywatch-bin
afew
alias-tips-git
alsa-utils
android-file-transfer
android-sdk-platform-tools
anki
ansible-lint
arch-wiki-lite
arduino
arduino-avr-core
arduino-cli
asciinema
aspell-de
aspell-en
atool
awesome
barrier
bash-completion
bash-language-server
bat
beets
biber
bibtool
bison
bluez
bluez-utils
brightnessctl
busted
caddy
calcurse
catdoc
clipman
dbus-broker
dcnnt
dell-command-configure
devour
dhcpcd
diff-so-fancy
docker
docker-compose
docx2txt
dos2unix
duf
dunst
dust
efm-langserver
entr
evince
exa
fasd
fd
ffmpegthumbnailer
firefox
flex
fwupd
fzf-tab-git
gallery-dl
gimp
git-lfs
gitea-tea-git
gitlint
gk6x-bin
glances
glow
gnome-keyring
gnu-netcat
gnuplot
go
go-ipfs
gomuks
gopls
gotty-bin
grim
gsimplecal
gst-libav
gst-plugins-base
gst-plugins-ugly
gstreamer-vaapi
haveged
heimdall
htop
hugo
i3-gaps
i3blocks
i3lock
i3status
iftop
imapfilter
iputils
ipython
jabref-latest
jiq
jpdftweak
jq
jrnl
keyd
khal
khard
kitty
lazygit
libdvdcss
libqalculate
licenses
linux-firmware
linux-headers
littler
logrotate
lswt
lua-format
lua-language-server
lua51-busted
luacheck
lvm2
lynx
maim
man-db
man-pages
masterpdfeditor-free
mbsync-git
mermaid-cli
mimeo
mopidy-iris
mopidy-local
mopidy-mpd
mopidy-mpris
mopidy-scrobbler
mopidy-spotify
moreutils
mosh
mpv
mpv-mpris
msmtp
nano
ncmpcpp
needrestart
neomutt
neovim
nerd-fonts-fira-code
netctl
nethogs
network-manager-applet
networkmanager-openconnect
networkmanager-openvpn
newsboat
nextcloud-client
nfs-utils
nmap
nodejs-pandiff
nsxiv
ntfs-3g
ntp
nvm
oh-my-zsh-git
os-prober
p7zip
pacman-contrib
pandoc-bin
parallel
paru-bin
pass
pass-coffin
pass-ssh
patch
pavolume
pdfjs
pdftk
perf
piavpn-bin
picom
pipewire-alsa
pkgconf
playerctl
polybar
prettier
protonvpn-cli-ng
psmisc
pulseaudio-alsa
pulsemixer
pv
pyright
python-adblock
python-black
python-jedi
python-language-server
python-lxml
python-openpyxl
python-pdfminer.six
python-pip
python-pipx
python-poetry
python-pybtex
python-pylint
python-pynvim
python-tabulate
qrencode
qutebrowser
redshift
refind
reflector
remind
restic
ripgrep-all
river
rivercarro
rivercarro-git
rng-tools
rtv
sc-im
screen
sfz
shellcheck-bin
shfmt
siggo
slurp
speedtest-cli
sshfs
steam
stow
surfraw
swaybg
systemd-sysvcompat
task
task-spooler
taskopen
tasksh
tex-gyre-fonts
texlab
tigervnc
timew
tllocalmgr-git
tlp
tmux
toilet
tomb
toot
topgrade
transmission-qt
ttf-brill
ttf-comic-neue
ttf-heuristica
ttf-iosevka-nerd
ttf-signika
typescript-language-server-bin
udiskie
ufw
unclutter
unrar
unrtf
urlview-xdg-git
usbutils
usql-bin
v4l2loopback-dkms
vagrant
vale-bin
vdirsyncer
vi
viddy
vifm-git
vim-language-server
visidata
wavemon
waybar-git
waylock
wdisplays
wev
wget
wl-clipboard
wtype
xdg-user-dirs
xsv
yaml-language-server-bin
youtube-dl
yt-dlp-git
ytfzf
zathura-cb
zathura-djvu
zathura-pdf-mupdf
zsh-autosuggestions
zsh-completions-git
zsh-fast-syntax-highlighting-git
zsh-pure-prompt

View File

@ -1,26 +0,0 @@
ansible
autoconf
automake
bash-bats
dosfstools
edk2-ovmf
element-desktop
gucharmap
hplip
intel-ucode
libreoffice-fresh
libva-intel-driver
mesa-vdpau
minio-client
nodejs-markdownlint-cli
nvidia
nzbget
pavucontrol
peek
powertop
qemu
virt-manager
virtualbox
vivaldi
zoom
zotero

View File

@ -0,0 +1,61 @@
#!/usr/bin/env bash
BOOTSTRAP_DIR=~/.dotfiles/bootstrap
OUTPUT=${BOOTSTRAP_DIR}/packages.tsv
pkg_all=$(pacman -Qqett | grep -v "$(pacman -Qqg base-devel)")
pkg_repo=$(pacman -Qqn)
pkg_aur=$(pacman -Qqm)
# tsv file:
# packagename, description, source, target
# toot a toot manager A D
if [ -f "${OUTPUT}_TEMP" ]; then
rm "${OUTPUT}_TEMP"
fi
touch "${OUTPUT}_TEMP"
# create new package list
for pkg in $pkg_all; do
source=""
if $(echo "$pkg_repo" | grep -F -q -x "$pkg"); then
source="R"
elif $(echo "$pkg_aur" | grep -F -q -x "$pkg"); then
source="A"
else
echo "ERROR: The package $pkg could not be found in repositories or AUR."
exit 1
fi
desc=$(pacman -Qs "$pkg" | grep -A1 --color "local/$pkg\s" | tail -n1)
#remove leading whitespace
desc="${desc#"${desc%%[![:space:]]*}"}"
target=""
if [ -f "$OUTPUT" ]; then
found_line=$(grep -e "^$pkg" "$OUTPUT")
fi
if [ -n "$found_line" ]; then
target=$(echo "$found_line" | cut -f4)
printf "Updating pkg: %s:%s from: %s, for: %s\n" "$pkg" "$desc" "$source" "$target"
else
printf "Adding pkg: %s:%s from: %s, for: %s\n" "$pkg" "$desc" "$source" "$target"
fi
printf "%s\t%s\t%s\t%s\n" "$pkg" "$desc" "$source" "$target" >>"${OUTPUT}_TEMP"
done
# notify on any removed packages
if [ -f "$OUTPUT" ]; then
while read -r line; do
if ! echo "$line" | cut -f1 | xargs -I _ grep -F -q -x _ <(echo "$pkg_all"); then
printf "REMOVED: %s" "$line"
fi
done <<<$(tail +2 "$OUTPUT")
fi
# actually write to file
cat <(printf "Name\tDescription\tSource\tTarget\n") "${OUTPUT}_TEMP" >"$OUTPUT"
rm "${OUTPUT}_TEMP"