diff options
Diffstat (limited to 'internal/outcome/sppipewire.go')
| -rw-r--r-- | internal/outcome/sppipewire.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/internal/outcome/sppipewire.go b/internal/outcome/sppipewire.go new file mode 100644 index 00000000..b8c855f6 --- /dev/null +++ b/internal/outcome/sppipewire.go @@ -0,0 +1,31 @@ +package outcome + +import ( + "encoding/gob" + + "hakurei.app/hst" + "hakurei.app/internal/pipewire" +) + +func init() { gob.Register(spPipeWireOp{}) } + +// spPipeWireOp exports the PipeWire server to the container via SecurityContext. +// Runs after spRuntimeOp. +type spPipeWireOp struct{} + +func (s spPipeWireOp) toSystem(state *outcomeStateSys) error { + if state.et&hst.EPipeWire == 0 { + return errNotEnabled + } + + state.sys.PipeWire(state.instance().Append("pipewire")) + return nil +} + +func (s spPipeWireOp) toContainer(state *outcomeStateParams) error { + innerPath := state.runtimeDir.Append(pipewire.PW_DEFAULT_REMOTE) + state.env[pipewire.Remote] = innerPath.String() + state.params.Bind(state.instancePath().Append("pipewire"), innerPath, 0) + + return nil +} |
