commit 1a7e747e76fe0535d1b94c4ddf2348e03c9b44e6
parent 3da6e663f53c4aa584026392581bd0ae7073c42b
Author: Damian Myrda <damian@prime8.dev>
Date: Wed, 27 May 2026 14:31:42 -0500
fedora: track rpm-ostree overrides
Diffstat:
7 files changed, 220 insertions(+), 40 deletions(-)
diff --git a/fedora/copr.txt b/fedora/copr.txt
@@ -1,8 +1,10 @@
-relativesure/all-packages
-lukenukem/asus-linux
-vgaetera/extras
-terjeros/eza
+# COPR repositories to enable, one owner/project per line.
+# setup.sh writes these under /etc/yum.repos.d/ using $releasever.
+
bieszczaders/kernel-cachyos
-agonie/pfetch-rs
+lukenukem/asus-linux
quadratech188/cmark-gfm
quadratech188/vicinae
+relativesure/all-packages
+terjeros/eza
+vgaetera/extras
diff --git a/fedora/obs.txt b/fedora/obs.txt
@@ -1 +1,2 @@
-home:manuelschneid3r
+# OBS repositories to enable, one project path per line.
+# Example: home:someuser
diff --git a/fedora/overrides.txt b/fedora/overrides.txt
@@ -0,0 +1,107 @@
+# Base packages to remove from Fedora Silverblue with rpm-ostree override remove.
+
+# Kernel packages replaced by kernel-cachyos
+kernel
+kernel-core
+kernel-modules
+kernel-modules-core
+kernel-modules-extra
+
+# Base apps replaced or not used
+firefox
+firefox-langpacks
+gnome-tour
+malcontent-control
+yelp
+
+# VM guest agents; this host runs VMs but is not itself a guest
+hyperv-daemons
+hyperv-daemons-license
+hypervfcopyd
+hypervkvpd
+hypervvssd
+open-vm-tools
+open-vm-tools-desktop
+qemu-guest-agent
+spice-vdagent
+virtualbox-guest-additions
+
+# Printer/scanner stack
+bluez-cups
+c2esp
+cups
+cups-browsed
+cups-filters
+cups-filters-driverless
+cups-ipptool
+dymo-cups-drivers
+gutenprint
+gutenprint-cups
+hplip
+hplip-common
+hplip-libs
+ipp-usb
+libppd
+libsane-hpaio
+printer-driver-brlaser
+ptouch-driver
+sane-airscan
+sane-backends
+sane-backends-drivers-cameras
+sane-backends-drivers-scanners
+splix
+system-config-printer-udev
+
+# Accessibility features not used on this install
+braille-printer-app
+brltty
+orca
+python3-speechd
+speech-dispatcher
+speech-dispatcher-espeak-ng
+speech-dispatcher-utils
+
+# Input methods not used on this install
+ibus-anthy
+ibus-anthy-python
+ibus-chewing
+ibus-hangul
+ibus-libpinyin
+ibus-m17n
+ibus-typing-booster
+
+# GNOME Classic session/extensions not used
+gnome-classic-session
+gnome-shell-extension-apps-menu
+gnome-shell-extension-background-logo
+gnome-shell-extension-launch-new-instance
+gnome-shell-extension-places-menu
+gnome-shell-extension-window-list
+
+# WebDAV/media/file-sharing servers not hosted from this machine
+fedora-logos-httpd
+gnome-user-share
+httpd
+httpd-core
+httpd-tools
+mod_dnssd
+mod_http2
+mod_lua
+rygel
+
+# VPN clients/plugins not used; Tailscale is kept as the VPN
+NetworkManager-openconnect
+NetworkManager-openconnect-gnome
+NetworkManager-openvpn
+NetworkManager-openvpn-gnome
+NetworkManager-vpnc
+NetworkManager-vpnc-gnome
+openconnect
+openvpn
+vpnc
+
+# Network filesystems/sharing clients not used
+cifs-utils
+cifs-utils-info
+nfs-utils
+samba-client
diff --git a/fedora/packages.txt b/fedora/packages.txt
@@ -1,56 +1,78 @@
+# RPM packages to layer on Fedora Silverblue with rpm-ostree.
+
+# Password manager
1password
1password-cli
+
+# Kernel, drivers, and hardware control
akmod-nvidia
asusctl
+kernel-cachyos-core
+kernel-cachyos-devel-matched
+kernel-cachyos-modules
+kernel-cachyos
+supergfxctl
+xorg-x11-drv-nvidia
+xorg-x11-drv-nvidia-cuda
+
+# CLI tools and shell
bat
btop
-cairo-devel
-cairo-gobject-devel
-dbus-daemon
-dbus-devel
eza
+fd-find
fish
fnm
gh
-glib2-devel
-gnome-tweaks
-gobject-introspection-devel
-golang
-# howdy (installed from local RPM)
-blas # howdy dependency
-lapack # howdy dependency
-java-latest-openjdk
just
-kernel-cachyos-core
-kernel-cachyos-devel-matched
-kernel-cachyos-modules
+ripgrep
+tailscale
+trash-cli
+tokei
+zoxide
+
+# Desktop utilities
+gnome-tweaks
libinput-config
-libxkbcommon-devel
neovim
+vicinae
+
+# Development runtimes and toolchains
+cargo
+clippy
+cmake
+golang
+java-latest-openjdk
nodejs
-os-prober
-pfetch-rs
-powertop
pre-commit
-python-evdev
python3-devel
python3-pip
-python3-psutil
-ripgrep
-rocm-smi
-cargo
-clippy
-cmake
rust
rust-analyzer
rustfmt
-supergfxctl
-tailscale
-trash-cli
-tokei
tree-sitter-cli
-vicinae
-xorg-x11-drv-nvidia
-xorg-x11-drv-nvidia-cuda
yarnpkg
-zoxide
+
+# Development headers and host libraries
+alsa-lib-devel
+cairo-devel
+cairo-gobject-devel
+clang-devel
+dbus-daemon
+dbus-devel
+glib2-devel
+gobject-introspection-devel
+libxkbcommon-devel
+wayland-devel
+
+# Build helpers for host-installed desktop tooling
+sassc
+
+# Local RPM: howdy
+# howdy is installed from rpms/, but these dependencies are layered.
+blas
+lapack
+python-evdev
+
+# Boot, power, and GPU utilities
+os-prober
+powertop
diff --git a/fedora/repos.txt b/fedora/repos.txt
@@ -1,2 +1,4 @@
+# Vendor repositories handled explicitly by setup.sh.
+
1password
google-chrome
diff --git a/fedora/rpmfusion.txt b/fedora/rpmfusion.txt
@@ -1,2 +1,4 @@
+# RPM Fusion release repositories to install with rpm-ostree.
+
rpmfusion-free
rpmfusion-nonfree
diff --git a/setup.sh b/setup.sh
@@ -147,6 +147,50 @@ else
echo "All packages already installed"
fi
+# Remove base packages with rpm-ostree overrides
+echo "Applying base package removal overrides..."
+mapfile -t overrides < <(sed 's/#.*//;s/[[:space:]]*$//;/^$/d' "$FEDORA_DIR/overrides.txt")
+
+if [ ${#overrides[@]} -gt 0 ]; then
+ mapfile -t current_overrides < <(
+ rpm-ostree status --json | python3 -c '
+import json, sys
+data = json.load(sys.stdin)
+seen = set()
+for deployment in data.get("deployments", []):
+ for pkg in deployment.get("requested-base-removals", []):
+ if pkg not in seen:
+ seen.add(pkg)
+ print(pkg)
+'
+ )
+
+ overrides_to_apply=()
+ for pkg in "${overrides[@]}"; do
+ already_removed=false
+ for removed in "${current_overrides[@]}"; do
+ if [ "$pkg" = "$removed" ]; then
+ already_removed=true
+ break
+ fi
+ done
+
+ if [ "$already_removed" = true ]; then
+ echo "Override already applied: $pkg"
+ else
+ overrides_to_apply+=("$pkg")
+ fi
+ done
+
+ if [ ${#overrides_to_apply[@]} -gt 0 ]; then
+ sudo rpm-ostree override remove "${overrides_to_apply[@]}"
+ else
+ echo "All base package removal overrides already applied"
+ fi
+else
+ echo "No base package removal overrides configured"
+fi
+
# Manual installs
## bun