Label placement geometry generator code:
Name the (line) layer that "cuts" the layer
where the labels should be placed.
Also define the placement width for the labels.
with_variable('label_position_layer', 'layer_name',
with_variable('label_placement_width', 10, coordinate units
if( First, only apply to lines that actually are to be labled (improve speed)
intersects(
geometry1:=@geometry,
geometry2:=aggregate(
layer:=@label_position_layer,
aggregate:='collect',
expression:=$geometry
)
),
aggregate( The actual label placment
layer:=@label_position_layer,
aggregate:='collect',
expression:=intersection(
geometry1:=geometry(@parent),
geometry2:=buffer($geometry, @label_placement_width)
)
),
'') End of ifstatement
))