Initial commit

This commit is contained in:
2025-11-06 20:28:41 +01:00
commit 5fc4fbcef3
182 changed files with 4742 additions and 0 deletions

87
generate-config.sh Executable file
View File

@@ -0,0 +1,87 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
shopt -s dotglob
quadlet_template="
- path: /home/__USER__/.config/containers/systemd/user/__FILE__
mode: 0644
contents:
local: quadlets/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
home_template="
- path: /var/home/__USER__/__FILE__
mode: 0755
contents:
local: home/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
service_template="
- path: /var/home/__USER__/.config/systemd/user/__FILE__
mode: 0755
contents:
local: services/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
directory_template="
- path: /var/mnt/nas/containers/__USER__/storage/__VOLUME__
mode: 0755
user:
name: __USER__
group:
name: __USER__"
files_template="
files:
- path: /var/lib/systemd/linger/__USER__
mode: 0644"
users=('arr' 'gitea' 'homeassistant' 'jdownloader' 'kiwix' 'komga' 'navidrome' 'nextcloud' 'nginx' 'pairdrop' 'paperless' 'pihole' 'qbittorrent' 'synapse' 'tga' 'wallabag')
mkdir -p users
for user in "${users[@]}"; do
user_butane="users/${user}.bu"
sed "s/__USER__/${user}/g" user-template.bu >| "${user_butane}"
if [[ -d "quadlets/${user}" ]]; then
directory_template_user="${directory_template//__USER__/${user}}"
for file in "quadlets/${user}/"*.volume; do
if [[ -f "${file}" ]]; then
content="$(grep "Device" "${file}")"
if [[ "${content}" =~ ^Device=/var/mnt/nas/containers/${user}/storage/(.+)$ ]]; then
volume="${BASH_REMATCH[1]}"
printf '%s' "${directory_template_user//__VOLUME__/${volume}}" >> "${user_butane}"
else
echo "Not found! ${content}"
fi
fi
done
fi
printf '%s' "${files_template//__USER__/${user}}" >> "${user_butane}"
if [[ -d "quadlets/${user}" ]]; then
quadlet_template_user="${quadlet_template//__USER__/${user}}"
for file in "quadlets/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${quadlet_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
if [[ -d "home/${user}" ]]; then
home_template_user="${home_template//__USER__/${user}}"
for file in "home/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${home_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
if [[ -d "services/${user}" ]]; then
service_template_user="${service_template//__USER__/${user}}"
for file in "services/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${service_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd "${user_butane}" >| "users/${user}.ign"
done
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd pi4.bu >| pi4.ign