parent
74c1fd0b5e
commit
1dbc26d995
@ -39,6 +39,8 @@ let
|
|||||||
pipewire = recursiveUpdate (if useSessionManager then defaults.pipewire else defaults.minimal) cfg.config.pipewire;
|
pipewire = recursiveUpdate (if useSessionManager then defaults.pipewire else defaults.minimal) cfg.config.pipewire;
|
||||||
pipewire-pulse = recursiveUpdate defaults.pipewire-pulse cfg.config.pipewire-pulse;
|
pipewire-pulse = recursiveUpdate defaults.pipewire-pulse cfg.config.pipewire-pulse;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usedForAudio = cfg.pulse.enable || cfg.alsa.enable || cfg.jack.enable;
|
||||||
in {
|
in {
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
@ -152,8 +154,8 @@ in {
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = cfg.pulse.enable -> !config.hardware.pulseaudio.enable;
|
assertion = usedForAudio -> !config.hardware.pulseaudio.enable;
|
||||||
message = "PipeWire based PulseAudio server emulation replaces PulseAudio. This option requires `hardware.pulseaudio.enable` to be set to false";
|
message = "Using PipeWire as a sound server conflicts with PulseAudio. This option requires `hardware.pulseaudio.enable` to be set to false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
assertion = cfg.jack.enable -> !config.services.jack.jackd.enable;
|
assertion = cfg.jack.enable -> !config.services.jack.jackd.enable;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.pipewire.wireplumber;
|
pwCfg = config.services.pipewire;
|
||||||
|
cfg = pwCfg.wireplumber;
|
||||||
|
pwUsedForAudio = pwCfg.pulse.enable || pwCfg.alsa.enable || pwCfg.jack.enable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
meta.maintainers = [ lib.maintainers.k900 ];
|
meta.maintainers = [ lib.maintainers.k900 ];
|
||||||
@ -33,6 +35,12 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
|
environment.etc.wireplumber."main.lua.d"."80-nixos.lua".text = if !pwUsedForAudio then ''
|
||||||
|
# Pipewire is not used for audio, so prevent it from grabbing audio devices
|
||||||
|
alsa_monitor.enable = function() end
|
||||||
|
'' else "";
|
||||||
|
|
||||||
systemd.packages = [ cfg.package ];
|
systemd.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
|
systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
|
||||||
|
Loading…
Reference in New Issue
Block a user