summaryrefslogtreecommitdiff
path: root/meta-unit-core/dynamic-layers/virtualization-layer
diff options
context:
space:
mode:
authorunitexe <unitexe70@gmail.com>2026-01-11 00:28:02 -0600
committerunitexe <unitexe70@gmail.com>2026-01-11 00:40:28 -0600
commita33937d31fbede0e9f7dd7055dcb6ae95d305d59 (patch)
treedf907cef30e832a5dae337047d2b1dabc5ad8648 /meta-unit-core/dynamic-layers/virtualization-layer
parente99d9bb6788424ec7711d187985bb93b8b5c1175 (diff)
Rootless banner quadlet
Diffstat (limited to 'meta-unit-core/dynamic-layers/virtualization-layer')
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/banner-quadlet.bb23
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/LICENSE21
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/banner.container19
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend7
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend4
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend23
6 files changed, 75 insertions, 22 deletions
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/banner-quadlet.bb b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/banner-quadlet.bb
new file mode 100644
index 0000000..67c2246
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/banner-quadlet.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Banner quadlet"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${UNPACKDIR}/LICENSE;md5=a0e6886d263a557228f8d3c5bef21837"
+
+SRC_URI = "\
+ file://banner.container \
+ file://LICENSE \
+"
+
+RDEPENDS:${PN}:append = " podman"
+RDEPENDS:${PN}:append = " add-user-svc"
+
+S = "${UNPACKDIR}"
+
+ROOTLESS_USER_NAME ?= "svc"
+
+do_install() {
+ install -D -m 0644 ${UNPACKDIR}/banner.container ${D}/home/${ROOTLESS_USER_NAME}/.config/containers/systemd/banner.container
+}
+
+FILES:${PN} = "\
+ /home/${ROOTLESS_USER_NAME}/.config/containers/systemd/banner.container \
+"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/LICENSE b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/LICENSE
new file mode 100644
index 0000000..9ec8d09
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Closed Circuit Consulting
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/banner.container b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/banner.container
new file mode 100644
index 0000000..68478a8
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner-quadlet/files/banner.container
@@ -0,0 +1,19 @@
+[Unit]
+Description=Serves a custom ASCII banner
+After=network-online.target
+Wants=network-online.target
+
+[Container]
+ContainerName=banner
+Image=ghcr.io/closedcircuitconsulting/banner:0.1.0
+PublishPort=8093:8080
+
+[Service]
+Restart=on-failure
+RestartSec=10s
+RestartSteps=5
+RestartMaxDelaySec=1min
+TimeoutStartSec=15min
+
+[Install]
+WantedBy=multi-user.target default.target
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
index cb2beaa..6b57651 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
@@ -1,5 +1,5 @@
#
-# Support rootless podman for unitexe user.
+# Support rootless podman for users.
#
# This is explained at:
# https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration
@@ -9,4 +9,9 @@ do_install:append() {
echo "" >> ${D}${sysconfdir}/subuid
echo "unitexe:100000:65536" >> ${D}${sysconfdir}/subgid
echo "" >> ${D}${sysconfdir}/subgid
+
+ echo "svc:200000:65536" >> ${D}${sysconfdir}/subuid
+ echo "" >> ${D}${sysconfdir}/subuid
+ echo "svc:200000:65536" >> ${D}${sysconfdir}/subgid
+ echo "" >> ${D}${sysconfdir}/subgid
}
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend
new file mode 100644
index 0000000..6c79ab4
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend
@@ -0,0 +1,4 @@
+inherit enable-linger
+inherit set-xdg-env
+
+RDEPENDS:${PN}:append = " banner-quadlet"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
index 5fab9f0..23fe467 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
+++ b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
@@ -1,21 +1,2 @@
-do_install:append() {
- # If linger is not enabled then rootless podman
- # commands will complain with number of warnings.
- # Enabling linger does two effects for systemd user units:
- # 1. Units are automatically started after a reboot
- # 2. Units are not automatically stopped after a log out
- install -d ${D}${localstatedir}/lib/systemd/linger
- touch ${D}${localstatedir}/lib/systemd/linger/${USER_TO_ADD_NAME}
-
- # Note: Use of .profile here assumes busybox shell.
- # Podman uses these (if defined) for overriding
- # default configuration file locations. This is
- # explained here:
- # https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#user-configuration-files
- cat > ${D}/home/${USER_TO_ADD_NAME}/.profile << 'EOF'
-export XDG_RUNTIME_DIR=/run/user/$(id -u)
-export XDG_CONFIG_HOME=$HOME/.config
-EOF
-}
-
-FILES:${PN}:append = " ${localstatedir}/lib/systemd/linger/${USER_TO_ADD_NAME}"
+inherit enable-linger
+inherit set-xdg-env