aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/outcome/sppipewire.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/outcome/sppipewire.go')
-rw-r--r--internal/outcome/sppipewire.go31
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
+}