umorpha-boxes/modules/service-eclipse-follower.sh

60 lines
1.5 KiB
Bash

#!/hint/bash -euE
# Copyright (C) 2024 Umorpha Systems
# SPDX-License-Identifier: AGPL-3.0-or-later
packages+=(
make
pandoc-cli
wdiff
git
lua
)
post_install+=(20:eclipse-follower:post_install)
eclipse-follower:post_install() {
local arg_mountpoint=$1
install -d "$arg_mountpoint/var/lib/eclipse/.ssh"
ln -s /etc/umorpha-secrets/eclipse-sshkey.priv "$arg_mountpoint/var/lib/eclipse/.ssh/id_ed25519"
ln -s /etc/umorpha-secrets/eclipse-sshkey.pub "$arg_mountpoint/var/lib/eclipse/.ssh/id_ed25519.pub"
install -Dm644 /dev/stdin "$arg_mountpoint/etc/tmpfiles.d/eclipse-ssh.conf" <<-'EOF'
# Copyright (C) 2024 Umorpha Systems
# SPDX-License-Identifier: AGPL-3.0-or-later
Z /var/lib/eclipse - eclipse eclipse
EOF
install -Dm755 /dev/stdin "$arg_mountpoint/etc/eclipse/follower.sh" <<-'EOF'
#!/bin/sh
# Copyright (C) 2024 Umorpha Systems
# SPDX-License-Identifier: AGPL-3.0-or-later
set -ex
job=$(eclipse-pick)
eclipse-run "$job"
EOF
install -Dm755 /dev/stdin "$arg_mountpoint/etc/systemd/system/eclipse-follower.service" <<-'EOF'
# Copyright (C) 2024 Umorpha Systems
# SPDX-License-Identifier: AGPL-3.0-or-later
[Unit]
Description=Eclipse CI follower process
Wants=network-online.target
After=network-online.target
[Service]
User=eclipse
Group=eclipse
Type=oneshot
Environment="GIT_SSH_COMMAND=ssh -i /etc/umorpha-secrets/eclipse-sshkey.priv"
ExecStart=/etc/eclipse/follower.sh
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl --root="$arg_mountpoint" enable eclipse-follower.service
}