Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

services.pipewire.enable

Whether to enable PipeWire configurations.

Type: boolean

Default:

false

Example:

true

Declared by:

services.pipewire.clientConfigs

Set of configuration files for the PipeWire client library.

Every item in this attrset becomes a separate drop-in file in $XDG_CONFIG_HOME/pipewire/client.conf.d/.

See the PipeWire wiki for examples.

Type: attribute set of (JSON value)

Default:

{ }

Example:

{
  "10-no-resample" = {
    "stream.properties" = {
      "resample.disable" = true;
    };
  };
}

Declared by:

services.pipewire.configPackages

List of packages that provide PipeWire configurations, in the form of share/pipewire/*/*.conf files.

LV2 dependencies will be picked up from config packages automatically via passthru.requiredLv2Packages.

Type: list of package

Default:

[ ]

Example:

[
  (pkgs.writeTextDir "share/pipewire/pipewire.conf.d/10-loopback.conf" ''
    context.modules = [
      {
        name = libpipewire-module-loopback
        args = {
          node.description = "Scarlett Focusrite Line 1"
          capture.props = {
            audio.position = [ FL ]
            stream.dont-remix = true
            node.target = "alsa_input.usb-Focusrite_Scarlett_Solo_USB_Y7ZD17C24495BC-00.analog-stereo"
            node.passive = true
          }
          playback.props = {
            node.name = "SF_mono_in_1"
            media.class = "Audio/Source"
            audio.position = [ MONO ]
          }
        }
      }
    ]
  '')
]

Declared by:

services.pipewire.configs

Set of configuration files for the PipeWire server.

Every item in this attrset becomes a separate drop-in file in $XDG_CONFIG_HOME/pipewire/pipewire.conf.d/.

See man pipewire.conf for details, and the PipeWire wiki for examples.

Type: attribute set of (JSON value)

Default:

{ }

Example:

{
  "10-clock-rate" = {
    "context.properties" = {
      "default.clock.rate" = 44100;
    };
  };
  "11-no-upmixing" = {
    "stream.properties" = {
      "channelmix.upmix" = false;
    };
  };
}

Declared by:

services.pipewire.extraLadspaPackages

List of packages that provide LADSPA plugins, in the form of lib/ladspa/* files.

LADSPA dependencies will be picked up from config packages automatically via passthru.requiredLadspaPackages, so they don’t need to be set here.

Type: list of package

Default:

[ ]

Example:

[ pkgs.noisetorch-ladspa ]

Declared by:

services.pipewire.extraLv2Packages

List of packages that provide LV2 plugins, in the form of lib/lv2/* files.

LV2 dependencies will be picked up from config packages automatically via passthru.requiredLv2Packages, so they don’t need to be set here.

Type: list of package

Default:

[ ]

Example:

[ pkgs.lsp-plugins ]

Declared by:

services.pipewire.jackConfigs

Set of configuration files for the PipeWire JACK server and client library.

Every item in this attrset becomes a separate drop-in file in $XDG_CONFIG_HOME/pipewire/jack.conf.d/.

See the PipeWire wiki for examples.

Type: attribute set of (JSON value)

Default:

{ }

Example:

{
  "20-hide-midi" = {
    "jack.properties" = {
      "jack.show-midi" = false;
    };
  };
}

Declared by:

services.pipewire.pulseConfigs

Set of configuration files for the PipeWire PulseAudio server.

Every item in this attrset becomes a separate drop-in file in $XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/.

See man pipewire-pulse.conf for details, and the PipeWire wiki for examples.

Type: attribute set of (JSON value)

Default:

{ }

Example:

{
  "15-force-s16-info" = {
    "pulse.rules" = [
      {
        actions = {
          quirks = [
            "force-s16-info"
          ];
        };
        matches = [
          {
            "application.process.binary" = "my-broken-app";
          }
        ];
      }
    ];
  };
}

Declared by:

services.pipewire.wireplumber.enable

Whether to enable WirePlumber configurations.

Type: boolean

Default:

false

Example:

true

Declared by:

services.pipewire.wireplumber.configPackages

List of packages that provide WirePlumber configurations, in the form of share/wireplumber/*/*.conf files.

LV2 dependencies will be picked up from config packages automatically via passthru.requiredLv2Packages.

Type: list of package

Default:

[ ]

Example:

[
  (pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/10-bluez.conf" ''
    monitor.bluez.properties = {
      bluez5.roles = [ a2dp_sink a2dp_source bap_sink bap_source hsp_hs hsp_ag hfp_hf hfp_ag ]
      bluez5.codecs = [ sbc sbc_xq aac ]
      bluez5.enable-sbc-xq = true
      bluez5.hfphsp-backend = "native"
    }
  '')
]

Declared by:

services.pipewire.wireplumber.configs

Set of configuration files for the WirePlumber daemon.

Every item in this attrset becomes a separate drop-in file in $XDG_CONFIG_HOME/wireplumber/wireplumber.conf.d/.

See the NixOS option for details.

Type: attribute set of (JSON value)

Default:

{ }

Example:

{
  log-level-debug = {
    "context.properties" = {
      "log.level" = "D";
    };
  };
  wh-1000xm3-ldac-hq = {
    "monitor.bluez.rules" = [
      {
        actions = {
          update-props = {
            "bluez5.a2dp.ldac.quality" = "hq";
          };
        };
        matches = [
          {
            "device.name" = "~bluez_card.*";
            "device.product.id" = "0x0cd3";
            "device.vendor.id" = "usb:054c";
          }
        ];
      }
    ];
  };
}

Declared by:

services.pipewire.wireplumber.scriptPackages

List of packages that provide WirePlumber scripts, in the form of share/wireplumber/scripts/*/*.lua files.

Type: list of package

Default:

[ ]

Example:

[
  (pkgs.writeTextDir "share/wireplumber/scripts/test/hello-world.lua" ''
    print("Hello, world!")
  '')
]

Declared by:

services.pipewire.wireplumber.scripts

Set of lua scripts to be used by WirePlumber configuration files.

Every item in this attrset becomes a separate drop-in file in $XDG_DATA_HOME/wireplumber/scripts/.

See the NixOS option for details.

Type: attribute set of strings concatenated with “\n”

Default:

{ }

Example:

{
  "test/hello-world.lua" = ''
    print("Hello, world!")
  '';
}

Declared by: