#!/bin/bash # # Purpose : Describe this CoreDesktop machine as text, so two machines can be # compared with diff (see README.md). Runs in the smoketest VM. # # Only what CoreDesktop decides goes in: names, not versions, and no times, so # a fresh install and an updated older install of the same commit match. COREDESKTOP="$HOME/.local/share/coredesktop" section() { printf '\n## %s\n' "$1" } section "Explicitly installed packages" pacman -Qqe section "Packages not from the repos (AUR)" pacman -Qqm section "Flatpaks" flatpak list --app --columns=application | sort section "pipx apps" pipx list --short 2> /dev/null | cut -d' ' -f1 | sort section "Enabled system units" systemctl list-unit-files --state=enabled --no-legend | awk '{print $1}' | sort section "Enabled user units" systemctl --user list-unit-files --state=enabled --no-legend | awk '{print $1}' | sort section "Groups" id -nG | tr ' ' '\n' | sort section "Firewall" sudo ufw status verbose section "pacman repos" grep -E '^\[' /etc/pacman.conf section "SSH server" sudo sshd -T 2> /dev/null | sort section "CoreDesktop's files in /etc" sudo find /etc -path '*coredesktop*' -type f -print0 | sort -z | sudo xargs -0r sha256sum section "Snapper" if [ -f /etc/snapper/configs/root ]; then sudo snapper -c root get-config | sort else echo "no root config" fi section "Migrations run" ls ~/.local/state/coredesktop/migrations 2> /dev/null section "Commands in ~/.local/bin" for cmd in update refresh sibling version configure audit; do if cmp -s "$HOME/.local/bin/$cmd" "$COREDESKTOP/$cmd"; then echo "$cmd: current" else echo "$cmd: missing or out of date" fi done section "Shell" # All of ~/.bashrc, sorted: an updated machine adds lines in another order. # Without blank lines: mise.run's installer added one before its line, which # migrations/1793453501.sh removes, and a blank line changes nothing grep -v '^[[:space:]]*$' ~/.bashrc | sort section "GNOME extensions" gsettings get org.gnome.shell enabled-extensions ls ~/.local/share/gnome-shell/extensions 2> /dev/null # The value of each key gnome-settings.dconf sets, which apply-gnome-settings.sh # loads under /org/gnome/shell/extensions/ section "GNOME settings" awk '/^\[/ { dir = substr($0, 2, length($0) - 2); next } /=/ { print dir "/" substr($0, 1, index($0, "=") - 1) }' \ "$COREDESKTOP/gnome/gnome-settings.dconf" \ | while read -r key; do echo "$key = $(dconf read "/org/gnome/shell/extensions/$key")" done