post_install hook doesn't run for handheld.rog-ally profile (PipeWire/WirePlumber symlinks never created)
- Dominant language
- Rust
- Stars
- 122
- Forks
- 39
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 1
Description
## Environment
- chwd 1.24.1-1 (built 2026-07-13)
- Board: ROG Xbox Ally X (RC73XA), matched via `handheld.rog-ally` profile
- CachyOS Handheld Edition, installed via Calamares (2026-07-17)
- cachyos-handheld 1.3.2-2
## Expected behavior
Installing the `handheld.rog-ally` profile should run its `post_install` hook:
```
mkdir -p /etc/pipewire/pipewire.conf.d /etc/wireplumber/wireplumber.conf.d/
ln -s /usr/share/cachyos-handheld/rog-ally/pipewire/filter-chain.conf /etc/pipewire/pipewire.conf.d
ln -s /usr/share/cachyos-handheld/common/wireplumber/alsa-card1.conf /etc/wireplumber/wireplumber.conf.d
```
so PipeWire picks up the ROG Ally-tuned convolver filter-chain.
## Actual behavior
The profile installs successfully (packages `steamos-manager`, `inputplumber`, `steamos-powerbuttond` install fine, and `/var/lib/chwd/local/pci/handhelds/profiles.toml` correctly records `handheld.rog-ally` as installed) — but `post_install` never runs. `/etc/pipewire/pipewire.conf.d/` stays empty and `/etc/wireplumber/` is never even created (not even the `mkdir -p`, the first line of the hook).
## Steps to reproduce
```sh
sudo chwd -r handheld.rog-ally
sudo chwd -i handheld.rog-ally
ls /etc/pipewire/pipewire.conf.d/ /etc/wireplumber/wireplumber.conf.d/
# both empty / missing — hook did not run despite chwd reporting success
```
## What I ruled out
- Not a filesystem/permissions issue: no immutable attrs on `/etc`, no special mount, standard rw btrfs root.
- Not a shell-compatibility issue: `/bin/sh` → `bash`; ran the exact `post_install` script body manually via `/bin/sh -c '...'` and it works fine, creates both directories and symlinks.
- Not a target-file-missing issue: `/usr/share/cachyos-handheld/rog-ally/pipewire/filter-chain.conf` exists (owned by `cachyos-handheld`).
- Not a `--pmroot` chroot mismatch: Calamares invokes `chwd` via `arch-chroot chwd --autoconfigure` (real `chroot(2)`), not `--pmroot`, so that's not in play for this install path.
- Not fixed by force-reinstall or full remove+reinstall — both report success while the hook still silently doesn't execute.
## Workaround
Manually running the hook's commands as root fixes it immediately:
```sh
sudo mkdir -p /etc/pipewire/pipewire.conf.d /etc/wireplumber/wireplumber.conf.d/
sudo ln -s /usr/share/cachyos-handheld/rog-ally/pipewire/filter-chain.conf /etc/pipewire/pipewire.conf.d/
sudo ln -s /usr/share/cachyos-handheld/common/wireplumber/alsa-card1.conf /etc/wireplumber/wireplumber.conf.d/
systemctl --user restart pipewire wireplumber
```
Confirmed live via `pw-dump` that the convolver sink loads correctly after this.
## Possibly relevant
Not sure if `-f`/reinstall is expected to skip hook re-execution when a profile is already present in `local/`, or if this is a genuine hook-execution regression. Happy to provide more diagnostics (chwd run with verbose/debug flags, etc.) if useful.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing chwd's profile installation entry point and the post_install handling for handheld.rog-ally, then run the reported chwd -r and chwd -i commands with verbose or debug output. Compare a fresh install with reinstall or force-reinstall behavior. Done means the hook runs successfully and creates both configuration directories and symlinks under /etc.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, shell
- Domain
- audio-video-rtc, cli, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100