m/{n,t}/installer: init

This adds partial implementation of the installer [1].

It needs to be integrated with the installer bundle to become
functional.

[1] https://github.com/monogon-dev/monogon/issues/44

Change-Id: I6223e50dc02bc1ad1a8d1351b556ecba43f30a2f
Reviewed-on: https://review.monogon.dev/c/monogon/+/408
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/installer/BUILD.bazel b/metropolis/node/installer/BUILD.bazel
new file mode 100644
index 0000000..f69ecbe
--- /dev/null
+++ b/metropolis/node/installer/BUILD.bazel
@@ -0,0 +1,47 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("//metropolis/node/build:def.bzl", "node_initramfs")
+load("//metropolis/node/build/genosrelease:defs.bzl", "os_release")
+load("//metropolis/node/build:efi.bzl", "efi_unified_kernel_image")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["main.go"],
+    importpath = "source.monogon.dev/metropolis/node/installer",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//metropolis/node/build/mkimage/osimage:go_default_library",
+        "//metropolis/pkg/efivarfs:go_default_library",
+        "//metropolis/pkg/sysfs:go_default_library",
+        "@org_golang_x_sys//unix:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "installer",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:private"],
+)
+
+node_initramfs(
+    name = "initramfs",
+    files = {
+        "//metropolis/node/installer": "/init",
+    },
+    visibility = ["//visibility:private"],
+)
+
+os_release(
+    name = "installer-release-info",
+    os_id = "metropolis-installer",
+    os_name = "Metropolis Installer",
+    stamp_var = "STABLE_METROPOLIS_version",
+)
+
+efi_unified_kernel_image(
+    name = "kernel",
+    cmdline = "console=ttyS0",
+    initramfs = ":initramfs",
+    kernel = "//third_party/linux",
+    os_release = ":installer-release-info",
+    visibility = ["//visibility:public"],
+)