0

我没有使用 NixOS,但我写了一个 flake,我用它来生成一个开发 shell 来构建一个Rust 项目(这实际上只是Bevy 存储库中的音频示例)。我的问题是尝试在 dev shell 中运行项目时遇到以下错误:

$ nix --extra-experimental-features nix-command --extra-experimental-features flakes develop
bash-4.4$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 6.62s
     Running `target/debug/audio`
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: NoDevice', /home/a/.cargo/registry/src/github.com-1ecc6299db9ec823/bevy_audio
-0.5.0/src/audio_output.rs:22:67
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
bash-4.4

该项目的依赖项之一是需要 ALSA 的 Bevy crate,所以我假设问题是因为 dev shell 公开的 ALSA 包可能配置错误。我在我的实际系统上使用 PipeWire(我认为它也使用 ALSA 作为后端),我尝试将 ALSA 和 PipeWire 添加为薄片的 buildInputs 之一,但我不确定我应该如何在开发外壳。根据Bevy 存储库上的这个问题,至少对于基于 Arch 的发行版来说,这个问题的通常解决方法是安装 pipewire-alsa 包。我不确定在 Nix 开发 shell 的上下文中这样做的等价物是什么,因为在 nixpkgs 中没有可以添加到我的薄片中的 pipewire-alsa 包。话虽如此,我应该如何在开发外壳中配置 ALSA 或 PipeWire?

4

0 回答 0