Setting rotation of an object around a custom axis?

I’m trying to instantiate objects at Runtime and then set their rotation to face ground normals at the point of instantiation and it works.
But what I want is, after setting the rotation according to the normal direction, also rotate the object around the Normal Axis.
Just like we rotate around the Z-Axis, X-Axis, etc.
I want to set the rotation of the object around the ‘Normal to the ground’ axis.
I know about ‘Transform.RotateAround()’ but it rotates the objects smoothly around the axis, I want to set the rotation instantly (like with transform.rotation)
Any help?

Every method of setting an object’s rotation in Unity does so immediately. Any perceived smoothness only occurs from making small incremental changes over a period of time.

If you want the object to face towards the normal direction, and also be rotated a certain way on the normal axis, you can use transform.rotation = Quaternion.LookRotation(theNormalDirection, theUpDirection);. This way the object’s Z axis will point up the surface normal, and the object’s local “up” will point at the second parameter.

You can also use Quaternion.AngleAxis to specify any axis and and angle to rotate around it.