Manage packages from the desktop, and keep the manifest in git #5

Closed
opened 2026-08-16 22:10:09 +01:00 by joshquinlan · 1 comment
Owner

Search, install, list and remove through dnf, flatpak and copr,
with the manifest in the repository updated as a side effect so it
never falls out of date.

Decided: a JSON manifest (jq is already this repository's data tool
and the palettes are JSON), browsing through the chooser, the
transaction in a floating terminal the way donbox-update already
does it, and a local conventional commit on a successful change.

get_packages.sh becomes a renderer over the manifest, absorbing the
COPR list, the flatpak ids and the repo definitions that are
heredocs today. It must install jq before it can read its own
manifest. jq is missing from the package list entirely and is only
present as somebody's dependency, which this fixes.

Search, install, list and remove through dnf, flatpak and copr, with the manifest in the repository updated as a side effect so it never falls out of date. Decided: a JSON manifest (jq is already this repository's data tool and the palettes are JSON), browsing through the chooser, the transaction in a floating terminal the way donbox-update already does it, and a local conventional commit on a successful change. get_packages.sh becomes a renderer over the manifest, absorbing the COPR list, the flatpak ids and the repo definitions that are heredocs today. It must install jq before it can read its own manifest. jq is missing from the package list entirely and is only present as somebody's dependency, which this fixes.
Author
Owner

Implemented in 26b22ea.

packages.json holds the repositories, the COPRs, the packages
and the flatpaks. get_packages.sh renders a machine from it and
installs jq first, since it cannot read its own manifest
without it. The metadata_expire every repository needs is stated
once in the renderer rather than in each of them.

donbox pkg search|add|remove|list|drift. Search and remove offer
the chooser, the transaction opens a terminal, and a success is
committed to packages.json alone so nothing else in the working
tree is swept in. A failed transaction leaves the manifest
untouched, which the suite covers along with the flatpak kind,
the duplicate case and the chooser path.

One thing did not survive contact: drift answers only what the
manifest promises that is not installed. The reverse cannot be
had from rpm. Fedora's image builder marks its own three hundred
packages as installed by the user, so 'installed by hand' is
indistinguishable from 'came with the machine'. Filtering by the
first transaction was not enough either, since the spin's own
package set arrives later. The command says as much rather than
printing three hundred lines of noise, and keeping the manifest
true as things are installed is what add is for.

Verified live: the search chooser against real dnf data, list,
and drift reporting nothing missing.

Implemented in 26b22ea. packages.json holds the repositories, the COPRs, the packages and the flatpaks. get_packages.sh renders a machine from it and installs jq first, since it cannot read its own manifest without it. The metadata_expire every repository needs is stated once in the renderer rather than in each of them. donbox pkg search|add|remove|list|drift. Search and remove offer the chooser, the transaction opens a terminal, and a success is committed to packages.json alone so nothing else in the working tree is swept in. A failed transaction leaves the manifest untouched, which the suite covers along with the flatpak kind, the duplicate case and the chooser path. One thing did not survive contact: drift answers only what the manifest promises that is not installed. The reverse cannot be had from rpm. Fedora's image builder marks its own three hundred packages as installed by the user, so 'installed by hand' is indistinguishable from 'came with the machine'. Filtering by the first transaction was not enough either, since the spin's own package set arrives later. The command says as much rather than printing three hundred lines of noise, and keeping the manifest true as things are installed is what add is for. Verified live: the search chooser against real dnf data, list, and drift reporting nothing missing.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joshquinlan/dotfiles#5
No description provided.