Is there a nice way of drawing an arc without cetz?

See Add a `curve.arc` function for circular and elliptical arcs · Issue #5915 · typst/typst · GitHub

#circle(radius: 5cm, fill: gradient
  .conic(..color.map.rainbow, angle: 0deg)
  .repeat(4, mirror: true))
#circle(radius: 5cm, fill: gradient
  .conic(..color.map.rainbow.slice(0, -20), angle: 0deg)
  .sharp(7))

I don’t know how you would do this with pattern, might as well just use curve.

I don’t understand.

#let custom-shape(stroke: 1pt, fill: green, parameter3: ...) = {
  curve(
    stroke: stroke,
    fill: fill,
    ...
  )
}