if I move the line  torch.manual_seed(1)  to the first line of the  for  loop I should be good?

Not really. Again, the module’s weights are initialized as and when they are created. This is not a fool-proof strategy.

how do I set it to what a particular seed would have done?

Resetting weights after setting torch.manual_seed() is equivalent to creating a new layer.
import torch.nn as nn 
import torch 
torch.manual_seed(2) 
x = nn.Conv2d(3,2,3) 
y = nn.Conv2d(3,2,3) 

torch.manual_seed(2) 
y.reset_parameters() 
torch.allclose(x.weight, y.weight)  # True