package netplan import ( "fmt" "github.com/godbus/dbus/v5" ) type Connection interface { Connect() error Apply() (bool, error) Close() error } type API struct { *dbus.Conn } func (c *API) Connect() error { conn, err := dbus.ConnectSystemBus() if err != nil { return fmt.Errorf("failed to establish connection to system dbus: %w", err) } c.Conn = conn return nil } func (c *API) Apply() (bool, error) { obj := c.Conn.Object("io.netplan.Netplan", "/io/netplan/Netplan") var reply bool response := obj.Call("io.netplan.Netplan.Apply", 0) err := response.Store(&reply) if err != nil { return reply, err } return reply, response.Err }