context.modules = [ { name = libpipewire-module-protocol-native } ] wireplumber.profiles = { test = { virtual.four = required } } wireplumber.components = [ # expected load order: # five, one, six, two, three, four, seven # eight is not loaded - optional feature { 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 ] } ] 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 ] } } } ]