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 ] } } } ]