--- /dev/null
+#!/bin/bash
+
+architecture="x86_64"
+linux_packages="linux linux-lts"
+
+declare -A module2package
+module2package[vboxhost]=virtualbox-host-dkms
+module2package[broadcom-wl]=broadcom-wl-dkms
+
+echo "# Running: $(uname -r)"
+for linux in $linux_packages; do
+ echo "# Installed: $(pacman -Q "$linux")"
+done
+
+echo
+find /var/lib/dkms/ -maxdepth 2 -type l -name 'kernel-*' | while read line; do
+ module_name="$(echo "$line" | cut -d/ -f5)"
+ package_name="${module2package[$module_name]}"
+ if [ -z "$package_name" ]; then
+ echo "Unknown module: $module_name"
+ exit 1
+ fi
+ module_version="$(pacman -Q "${package_name}" | cut -d' ' -f2 | cut -d'-' -f1)"
+ long_kernel_version="$(echo "$line" | cut -d/ -f6)"
+ kernel_version="$(echo "$long_kernel_version" | sed -e 's/^kernel-//' -e "s/-${architecture}\$//")"
+ if [ "$kernel_version" = "$(uname -r)" ]; then
+ continue
+ fi
+ echo dkms remove -m "$module_name" -v "$module_version" -k "$kernel_version"
+done
+
+echo
+find /lib/modules/ -maxdepth 1 -type d -name '[0-9]*' | while read line; do
+ if pacman -Qo "$line" &> /dev/null; then
+ continue
+ fi
+ echo rm -rf "$line"
+done
+