code: func (uw *UnitWriter) AppSocketUnit(appName types.ACName, binPath string, streamName string, opts ...*unit.UnitOption) {
  	opts = append(opts, []*unit.UnitOption{
  		unit.NewUnitOption("Unit", "Description", fmt.Sprintf("%s socket for %s", streamName, appName)),
  		unit.NewUnitOption("Unit", "DefaultDependencies", "no"),
  		unit.NewUnitOption("Unit", "StopWhenUnneeded", "yes"),
  		unit.NewUnitOption("Unit", "RefuseManualStart", "yes"),
  		unit.NewUnitOption("Unit", "RefuseManualStop", "yes"),
  		unit.NewUnitOption("Unit", "BindsTo", fmt.Sprintf("%s.service", appName)),
  		unit.NewUnitOption("Socket", "RemoveOnStop", "yes"),
  		unit.NewUnitOption("Socket", "Service", fmt.Sprintf("%s.service", appName)),
  		unit.NewUnitOption("Socket", "FileDescriptorName", streamName),
  		unit.NewUnitOption("Socket", "ListenFIFO", filepath.Join("/rkt/iottymux", appName.String(), "stage2-"+streamName)),
  	}...)
  
  	uw.WriteUnit(
  		TypedUnitPath(uw.p.Root, appName.String()+"-"+streamName, "socket"),
  		fmt.Sprintf("failed to write %s socket for %q service", streamName, appName),
  		opts...,
  	)
  }
docs: // AppSocketUnits writes a stream socket-unit for the given app in the given path.