context.modules = [
  { name = libpipewire-module-protocol-native }
]

wireplumber.profiles = {
  test_inherited = {
    virtual.four = required
    support.zero = required
  }

  test = {
    inherits = [ test_inherited ]
    support.zero = disabled
    support.nine = required
    support.ten = required
    support.eleven = required
  }
}

wireplumber.components = [
  # expected load order:
  # five, one, seven, ten, eleven, six, two, three, four, nine
  # eight is not loaded - optional feature
  {
    name = zero
    type = test
    provides = support.zero
  }
  {
    name = one
    type = test
    provides = support.one
  }
  {
    name = two
    type = test
    provides = support.two
    requires = [ support.one ]
  }
  {
    type = virtual
    provides = virtual.four
    requires = [ INVALID ]
  }
  {
    name = three
    type = test
    provides = INVALID
    wants = [ support.two ]
  }
  {
    name = four
    type = test
    provides = support.four
    requires = [ support.five ]
    wants = [ support.three ]
  }
  {
    name = five
    type = test
    provides = support.five
  }
  {
    name = six
    type = test
    provides = support.six
    requires = [ support.one ]
  }
  {
    name = seven
    type = test
    requires = [ support.five ]
  }
  {
    name = eight
    type = test
    provides = support.eight
    requires = [ support.four ]
  }
  {
    name = nine
    type = test
    provides = support.nine
    after = [ support.ten ]
  }
  {
    name = ten
    type = test
    provides = support.ten
  }
  {
    name = eleven
    type = test
    provides = support.eleven
    before = [ support.nine, support.six ]
  }
]

wireplumber.components.rules = [
  {
    matches = [
      {
        name = two
      }
    ]
    actions = {
      merge = {
        # final array should be [ support.one, support.six ]
        # if this fails, support.six will not be loaded
        requires = [ support.six ]
      }
    }
  }

  {
    matches = [
      {
        name = three
      }
    ]
    actions = {
      merge = {
        provides = support.three
      }
    }
  }

  {
    matches = [
      {
        provides = virtual.four
      }
    ]
    actions = {
      override = {
        requires = [ support.four ]
      }
    }
  }
]
