There's a merged pull request on the void-packages repository hplip: prevent conflicts with the GUI package https://github.com/void-linux/void-packages/pull/40559 Description: The `hplip-gui` package uses the exact same files as the regular `hplip` package, plus a few extra for the UI and three changes in the configuration file. Rather than copy the entire package contents and register `conflict=` and `provides=` to fool the package manager, we can make `hplip-gui` depend on `hplip` and just manage a symlink between two alternative configuration files. The only really sophisticated part is handling the configuration symlink when removing `hplip-gui`. Because a user might remove the GUI package and want to keep the non-GUI version installed, the remove hook should detect whether a) it owns the existing symlink (*i.e.*, the link points at the GUI configuration) and b) whether the non-GUI configuration exists (in which case the link should be moved to the non-GUI config; otherwise, it should be removed). The rest of the hooks are very basic: - `hplip` only claims the configuration symlink on installation if *no* valid configuration symlink exists, to avoid clobbering, *e.g.*, the existing GUI link on an upgrade. - `hplip-gui` claims any configuration symlink (but leaves regular files alone) because a user installing the GUI package probably wants it to work. - `hplip` just removes any configuration symlink it owns when the package is removed. The removal hooks also treat a failure of `readlink` (which really ought to never happen) as if they "own" the symlink. I've run through a few installation and removal cycles, and this seems to do what I expect.