Files
omarchycn/install/omarchy-base.packages
T
David Heinemeier HanssonandCodex XHigh 24c18df5b7 Temporarily remove automatic printer discovery
cups-browsed is the daemon that watches the network and creates print queues by itself. Hardening it took a root daemon with a predictable cache down to a confined service account, but a daemon that turns anything advertising itself on the network into a print queue is a lot of exposure for a convenience, so it comes out of the default install while that is reworked. Only the discovery half: CUPS itself stays and printing keeps working, with each printer added by hand in Print Settings.

The migration disables the unit before removing the package because that is the only order that works: pacman deletes the unit file but not the enable symlink, and once the unit is gone systemd can no longer resolve it by name to clean that up.

It then removes the queues discovery generated. cups-browsed keeps those when it stops, since KeepGeneratedQueuesOnShutdown defaults to Yes, and they route through its own implicitclass backend, which goes with the package, so they cannot print again. Idle ones go. A queue with jobs on it is left alone and named: implicitclass only needs cups-browsed to choose a destination, so a job already past that point finishes on its own, and deleting the queue would abort it. One printer's job does not hold up the removal. A printer added by hand has an ipp:// or usb:// device and is left where it is.

A queue whose jobs cannot be asked about is left alone rather than assumed idle, including one named so that lpstat would misread it -- "all" is its word for every destination, and a leading dash or a comma reads as another option or a list.

Where CUPS does not answer at all, or a queue will not delete, discovery is still stopped but the package stays and no marker is written. omarchy-migrate records a migration for the user as soon as it exits zero, so that is where the machine stays until someone removes the package by hand, and the message says so rather than implying a retry.

The queue list is read under LC_ALL=C because lpstat translates "device for", and captured rather than piped, so a cupsd it cannot reach is reported instead of reading like a machine with nothing to clean up.

It removes with plain pacman -R rather than omarchy-pkg-drop, which passes -n and would discard /etc/cups/cups-browsed.conf instead of keeping it as a .pacsave. A removal meant to be temporary should not delete the machine's copy of its own configuration. Without -s either, so it only ever removes the package it names: sweeping newly unneeded dependencies is nothing today, but it is not a promise a rolling dependency graph can keep.

Queue names come off the network, since cups-browsed names its queues after what the printer advertised. CUPS allows every printable character but space, tab, / and #, and lpstat and lpadmin take a destination as an option value, so a name with a leading dash or a comma is reported rather than passed to them and guessed at.

Migration state is per user, so a machine-wide marker records the one removal. Without it, an account whose first migration run came after someone deliberately reinstalled discovery would quietly take it back out again.

The install-time override for cups-browsed.conf now waits for cups-browsed rather than for CUPS. Guarding it on a file CUPS still ships would write a configuration file for a package nothing installed, and pacman would later land the package's own copy beside it as a .pacnew.

The hardened configuration stays in the tree. omarchy-settings still ships the cups-browsed.conf override, the sysusers account and the service drop-in, so they are what discovery returns onto.

Co-Authored-By: Codex XHigh <noreply@openai.com>
2026-08-29 17:13:11 +02:00

151 lines
1.6 KiB
Plaintext

# Omarchy core package list pacstrapped by the ISO.
# The ISO builder also reads this file when constructing the offline mirror.
aether
alsa-utils
asdcontrol
avahi
bash-completion
bat
bluez
bluez-tools
bluez-utils
bolt
brightnessctl
btop
chromium
clang
cliamp
cups
cups-filters
cups-pk-helper
ddcutil
docker
docker-buildx
docker-compose
dosfstools
dotnet-runtime
dua-cli
evince
exfatprogs
expac
eza
fakeroot
fastfetch
fcitx5
fcitx5-gtk
fcitx5-qt
fd
ffmpegthumbnailer
fontconfig
foot
fzf
git
gnome-keyring
gnome-themes-extra
grim
gpu-screen-recorder
gum
gvfs-mtp
gvfs-nfs
gvfs-smb
herdr
hyprland
hyprland-guiutils
hyprland-preview-share-picker
hyprpicker
hyprsunset
imagemagick
imv
inetutils
inotify-tools
inxi
networkmanager
jq
kdenlive
kernel-modules-hook
lazydocker
lazygit
less
libsecret
libvips
libyaml
libreoffice-fresh
llvm
localsend
lua51
luarocks
man-db
mariadb-libs
mise-bin
moonlight-qt
mpv
mpv-mpris
nautilus
nautilus-python
gnome-disk-utility
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
nss-mdns
nvim
obs-studio
obsidian
omacalc
omacut
omawrite
omarchy-nvim
pacman-contrib
pamixer
pinta
plocate
plymouth
postgresql-libs
power-profiles-daemon
python-gobject
python-poetry-core
ttfx
qemu-user-static-binfmt
qrencode
qt6-imageformats
quickshell
ripgrep
ruby
tensaku
sddm
slurp
socat
starship
sushi
system-config-printer
tesseract
tesseract-data-eng
tldr
tree-sitter-cli
tmux
tobi-try
ttf-ia-writer
ttf-jetbrains-mono-nerd-basic
tzupdate
udiskie
ufw
ufw-docker
unzip
usage
uwsm
whois
wireless-regdb
wireplumber
wl-clipboard
wtype
woff2-font-awesome
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland
xdg-terminal-exec
xournalpp
yaru-icon-theme
yay
yt-dlp
zbar
zoxide