matrix: use resource renderer
diff --git a/apps/matrix/capture-config/.gitignore b/apps/capture-config/.gitignore
similarity index 100%
rename from apps/matrix/capture-config/.gitignore
rename to apps/capture-config/.gitignore
diff --git a/apps/capture-config/Dockerfile b/apps/capture-config/Dockerfile
new file mode 100644
index 0000000..d5b4767
--- /dev/null
+++ b/apps/capture-config/Dockerfile
@@ -0,0 +1,4 @@
+FROM gcr.io/distroless/static:nonroot
+ARG TARGETARCH
+
+COPY capture-config_${TARGETARCH} /capture-config
diff --git a/apps/capture-config/Makefile b/apps/capture-config/Makefile
new file mode 100644
index 0000000..a5e3014
--- /dev/null
+++ b/apps/capture-config/Makefile
@@ -0,0 +1,29 @@
+clean:
+	rm -f capture-config_*
+
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64:
+	go build -o capture-config_arm64 *.go
+
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64:
+	go build -o capture-config_amd64 *.go
+
+push_arm64: clean build_arm64
+	podman build --platform linux/arm64 --tag=giolekva/capture-config:arm64 .
+	podman push giolekva/capture-config:arm64
+
+push_amd64: clean build_amd64
+	podman build --platform linux/amd64 --tag=giolekva/capture-config:amd64 .
+	podman push giolekva/capture-config:amd64
+
+push: push_arm64 push_amd64
+	podman manifest create giolekva/capture-config:latest giolekva/capture-config:arm64 giolekva/capture-config:amd64
+	podman manifest push giolekva/capture-config:latest docker://docker.io/giolekva/capture-config:latest
+	podman manifest rm giolekva/capture-config:latest
diff --git a/apps/matrix/capture-config/go.mod b/apps/capture-config/go.mod
similarity index 100%
rename from apps/matrix/capture-config/go.mod
rename to apps/capture-config/go.mod
diff --git a/apps/matrix/capture-config/go.sum b/apps/capture-config/go.sum
similarity index 100%
rename from apps/matrix/capture-config/go.sum
rename to apps/capture-config/go.sum
diff --git a/apps/matrix/capture-config/main.go b/apps/capture-config/main.go
similarity index 66%
rename from apps/matrix/capture-config/main.go
rename to apps/capture-config/main.go
index 08d7be2..73b94d6 100644
--- a/apps/matrix/capture-config/main.go
+++ b/apps/capture-config/main.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"flag"
+	"fmt"
 	"io/ioutil"
 	"path"
 
@@ -14,9 +15,8 @@
 	"github.com/miracl/conflate"
 )
 
-var configFile = flag.String("config", "", "Path to the homeserver.yaml config file.")
-var configToMerge = flag.String("config-to-merge", "", "Name of the configmap to merge with generated one.")
-var toMergeFilename = flag.String("to-merge-filename", "", "Name of the file from config to merge.")
+var baseFile = flag.String("base", "", "Path to the homeserver.yaml config file.")
+var mergeWith = flag.String("merge-with", "", "Name of the file from config to merge.")
 var namespace = flag.String("namespace", "", "Namespace name.")
 var configMapName = flag.String("config-map-name", "", "Name of the ConfigMap to create.")
 
@@ -32,7 +32,7 @@
 	return cs
 }
 
-func createConfig(data []byte) *v1.ConfigMap {
+func newConig(data []byte) *v1.ConfigMap {
 	return &v1.ConfigMap{
 		TypeMeta: metav1.TypeMeta{
 			Kind:       "ConfigMap",
@@ -42,7 +42,7 @@
 			Name: *configMapName,
 		},
 		Data: map[string]string{
-			path.Base(*configFile): string(data),
+			path.Base(*baseFile): string(data),
 		},
 	}
 }
@@ -51,25 +51,28 @@
 	flag.Parse()
 	client := createClient().CoreV1().ConfigMaps(*namespace)
 	conf := conflate.New()
-	generated, err := ioutil.ReadFile(*configFile)
+	generated, err := ioutil.ReadFile(*baseFile)
 	if err != nil {
 		panic(err)
 	}
+	fmt.Printf("--- BASE:\n%s\n", string(generated))
 	if err := conf.AddData(generated); err != nil {
 		panic(err)
 	}
-	toMerge, err := client.Get(context.TODO(), *configToMerge, metav1.GetOptions{})
+	mergeWith, err := ioutil.ReadFile(*mergeWith)
 	if err != nil {
 		panic(err)
 	}
-	if err := conf.AddData([]byte(toMerge.Data[*toMergeFilename])); err != nil {
+	fmt.Printf("--- MERGE WITH:\n%s\n", string(mergeWith))
+	if err := conf.AddData(mergeWith); err != nil {
 		panic(err)
 	}
 	merged, err := conf.MarshalYAML()
 	if err != nil {
 		panic(err)
 	}
-	config := createConfig(merged)
+	fmt.Printf("--- MERGED:\n%s\n", string(merged))
+	config := newConig(merged)
 	if _, err := client.Create(context.TODO(), config, metav1.CreateOptions{}); err != nil {
 		panic(err)
 	}
diff --git a/apps/matrix/capture-config/Dockerfile b/apps/matrix/capture-config/Dockerfile
deleted file mode 100644
index bcecf7b..0000000
--- a/apps/matrix/capture-config/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM alpine:latest
-
-ARG TARGETARCH
-
-COPY capture-config_${TARGETARCH} /usr/bin/capture-config
-RUN chmod +x /usr/bin/capture-config
diff --git a/apps/matrix/capture-config/Makefile b/apps/matrix/capture-config/Makefile
deleted file mode 100644
index c05687d..0000000
--- a/apps/matrix/capture-config/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-clean:
-	rm -f capture-config_*
-
-build_arm64: export CGO_ENABLED=0
-build_arm64: export GO111MODULE=on
-build_arm64: export GOOS=linux
-build_arm64: export GOARCH=arm64
-build_arm64:
-	go build -o capture-config_arm64 *.go
-
-build_amd64: export CGO_ENABLED=0
-build_amd64: export GO111MODULE=on
-build_amd64: export GOOS=linux
-build_amd64: export GOARCH=amd64
-build_amd64:
-	go build -o capture-config_amd64 *.go
-
-build: clean build_arm64 build_amd64
-
-push: build
-	docker buildx build --tag=giolekva/capture-config:latest . --platform=linux/arm64,linux/amd64 --push