postgresql – Cross join table row with generate_series

Currently I have

SELECT x, plans.name
FROM plans
CROSS JOIN generate_series(timestamp '2021-01-01 06:00'
                     , timestamp '2021-01-07 22:00'
                     , interval  '1 hour') t(x)

which gives me a cartesian product of the plans table and timestamp generated series.

I would like to introduce a specific duration for each plans row, so one row could have “1 hour”, mean while the other have “30 minutes” and then generate each combination for every row. A CROSS JOIN here doesn’t work, I tried:

SELECT x, plans.name
FROM plans
CROSS JOIN generate_series(timestamp '2021-01-01 06:00'
                     , timestamp '2021-01-07 22:00'
                     , interval  plans.duration) t(x)