code: func (c *Config) Init(prvKey *ecdsa.PrivateKey, nodeKey *ecdsa.PrivateKey) error {
  
  	// create swarm dir and record key
  	err := c.createAndSetPath(c.Path, prvKey)
  	if err != nil {
  		return fmt.Errorf("Error creating root swarm data directory: %v", err)
  	}
  	c.setKey(prvKey)
  
  	// create the new enode record
  	// signed with the ephemeral node key
  	enodeParams := &network.EnodeParams{
  		PrivateKey: prvKey,
  		EnodeKey:   nodeKey,
  		Lightnode:  c.LightNodeEnabled,
  		Bootnode:   c.BootnodeMode,
  	}
  	c.Enode, err = network.NewEnode(enodeParams)
  	if err != nil {
  		return fmt.Errorf("Error creating enode: %v", err)
  	}
  
  	// initialize components that depend on the swarm instance's private key
  	if c.SwapEnabled {
  		c.Swap.Init(c.Contract, prvKey)
  	}
  
  	c.LocalStoreParams.Init(c.Path)
  	c.LocalStoreParams.BaseKey = common.FromHex(c.BzzKey)
  
  	c.Pss = c.Pss.WithPrivateKey(c.privateKey)
  	return nil
  }
docs: //some config params need to be initialized after the complete
  //config building phase is completed (e.g. due to overriding flags)