Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
cfcaeb766b | |||
474786d796 | |||
31c56b594a | |||
3ec0a6670c | |||
fdc2eec104 | |||
940bc767a4 | |||
6bdb5a72fe |
68
.github/workflows/build.yml
vendored
Normal file
68
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
name: Build images
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- showpiece
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build_images:
|
||||||
|
name: Build images
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 120
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
env:
|
||||||
|
DEPLOY: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Apply patches
|
||||||
|
run: ./runtime-patches.sh
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update &&
|
||||||
|
sudo apt-get install -y qemu-user-static quilt debootstrap libarchive-tools arch-test binfmt-support
|
||||||
|
|
||||||
|
- name: Setup binfmt_misc
|
||||||
|
run: |
|
||||||
|
ls /proc/sys/fs/binfmt_misc/ || true
|
||||||
|
sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true
|
||||||
|
sudo update-binfmts --enable qemu-aarch64
|
||||||
|
|
||||||
|
- name: Run build process
|
||||||
|
run: |
|
||||||
|
sudo ./build.sh &&
|
||||||
|
sudo mv deploy/*-arm64-standalone.img deploy/showpieceos-arm64-standalone.img &&
|
||||||
|
sudo mv deploy/*-arm64-client.img deploy/showpieceos-arm64-client.img
|
||||||
|
|
||||||
|
- name: Compress images
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
run: sudo ./compress-images.sh
|
||||||
|
|
||||||
|
- name: Publish client
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
uses: https://github.com/softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
name: ${{ github.ref_name }}
|
||||||
|
files: deploy/*-client.img.gz
|
||||||
|
|
||||||
|
- name: Publish standalone
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
uses: https://github.com/softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
name: ${{ github.ref_name }}
|
||||||
|
files: deploy/*-standalone.img.gz
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,8 +1,5 @@
|
|||||||
deploy/*
|
deploy/*
|
||||||
work/*
|
work/*
|
||||||
config
|
|
||||||
postrun.sh
|
postrun.sh
|
||||||
SKIP
|
|
||||||
SKIP_IMAGES
|
|
||||||
.pc
|
.pc
|
||||||
*-pc
|
*-pc
|
||||||
|
5
compress-images.sh
Executable file
5
compress-images.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for img in "deploy/"*.img; do
|
||||||
|
gzip -4 -v -k "$img"
|
||||||
|
done
|
22
config
Normal file
22
config
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
IMG_NAME="showpieceos-bookworm-arm64"
|
||||||
|
PI_GEN_RELEASE="Showpiece OS Bookworm"
|
||||||
|
RELEASE="bookworm"
|
||||||
|
DEPLOY_COMPRESSION="none"
|
||||||
|
COMPRESSION_LEVEL=0
|
||||||
|
LOCALE_DEFAULT="en_US.UTF-8"
|
||||||
|
TARGET_HOSTNAME="showpiece"
|
||||||
|
KEYBOARD_KEYMAP="us"
|
||||||
|
KEYBOARD_LAYOUT="English (US)"
|
||||||
|
TIMEZONE_DEFAULT="America/Chicago"
|
||||||
|
FIRST_USER_NAME="pi"
|
||||||
|
FIRST_USER_PASS="letmein"
|
||||||
|
DISABLE_FIRST_BOOT_USER_RENAME=1
|
||||||
|
WPA_COUNTRY=US
|
||||||
|
ENABLE_SSH=0
|
||||||
|
STAGE_LIST=""
|
||||||
|
for d in stage*; do
|
||||||
|
if [ -d "$d" ] && [ ! -f "$d/SKIP" ]; then
|
||||||
|
STAGE_LIST+="$d "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
STAGE_LIST="$(echo "$STAGE_LIST" | xargs)"
|
6
runtime-patches.sh
Executable file
6
runtime-patches.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Patches to run before building showpieceos
|
||||||
|
# Allows for non-destructive deletion of files
|
||||||
|
|
||||||
|
rm stage2/EXPORT_IMAGE
|
@ -10,6 +10,8 @@ firefox rpi-firefox-mods
|
|||||||
gldriver-test
|
gldriver-test
|
||||||
fonts-droid-fallback
|
fonts-droid-fallback
|
||||||
fonts-liberation2
|
fonts-liberation2
|
||||||
|
fonts-noto
|
||||||
|
fonts-noto-color-emoji
|
||||||
obconf
|
obconf
|
||||||
raindrop
|
raindrop
|
||||||
libcamera-tools
|
libcamera-tools
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
xserver-xorg xinit
|
xserver-xorg xinit
|
||||||
|
x11-xserver-utils
|
||||||
mousepad
|
mousepad
|
||||||
eom
|
eom
|
||||||
|
vim
|
||||||
lxde lxtask menu-xdg
|
lxde lxtask menu-xdg
|
||||||
zenity xdg-utils
|
zenity xdg-utils
|
||||||
gvfs-backends gvfs-fuse
|
gvfs-backends gvfs-fuse
|
||||||
|
6
stage3/01-showpiece-browser/01-run.sh
Executable file
6
stage3/01-showpiece-browser/01-run.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
install -d -o 1000 -g 1000 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart"
|
||||||
|
install -m 644 files/kiosk.desktop "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart/"
|
||||||
|
chown -R 1000:1000 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.config
|
||||||
|
mkdir -p "${ROOTFS_DIR}/tmp"
|
6
stage3/01-showpiece-browser/files/kiosk.desktop
Normal file
6
stage3/01-showpiece-browser/files/kiosk.desktop
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Chromium
|
||||||
|
Exec=chromium-browser --profile-directory="showpiece-browser" --kiosk https://showpiece.sanin.dev/
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
6
stage4/98-default-wallpaper/00-run.sh
Executable file
6
stage4/98-default-wallpaper/00-run.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
echo "Setting default wallpaper"
|
||||||
|
for conf in "${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/desktop-items-"*.conf; do
|
||||||
|
sed -E 's|/usr/share/rpd-wallpaper/.+$|/usr/share/rpd-wallpaper/RPiSystem.png|' -i "$conf"
|
||||||
|
done
|
4
stage4/99-force-hdmi-2/00-run.sh
Executable file
4
stage4/99-force-hdmi-2/00-run.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
echo "Setting custom cmdline"
|
||||||
|
sed -i 's/$/ video=HDMI-A-2:1920x1080M@60/' "${ROOTFS_DIR}/boot/firmware/cmdline.txt"
|
@ -1,4 +1,4 @@
|
|||||||
IMG_SUFFIX=""
|
IMG_SUFFIX="-client"
|
||||||
if [ "${USE_QEMU}" = "1" ]; then
|
if [ "${USE_QEMU}" = "1" ]; then
|
||||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||||
fi
|
fi
|
||||||
|
0
stage5/SKIP
Normal file
0
stage5/SKIP
Normal file
3
stage9/01-docker/00-packages
Normal file
3
stage9/01-docker/00-packages
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
apt-transport-https
|
||||||
|
gnupg2
|
||||||
|
software-properties-common
|
7
stage9/01-docker/01-run-chroot.sh
Executable file
7
stage9/01-docker/01-run-chroot.sh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#change to "debian" if necessary:
|
||||||
|
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
|
||||||
|
$(lsb_release -cs) stable" | \
|
||||||
|
tee /etc/apt/sources.list.d/docker.list
|
||||||
|
apt update
|
3
stage9/01-docker/02-packages
Normal file
3
stage9/01-docker/02-packages
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
docker-ce
|
||||||
|
docker-compose-plugin
|
||||||
|
cgroupfs-mount
|
5
stage9/01-docker/03-run-chroot.sh
Executable file
5
stage9/01-docker/03-run-chroot.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
systemctl enable docker
|
||||||
|
systemctl start docker
|
||||||
|
gpasswd -a pi docker
|
||||||
|
newgrp docker
|
11
stage9/02-showpiece/01-run.sh
Executable file
11
stage9/02-showpiece/01-run.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece"
|
||||||
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/config"
|
||||||
|
install -m 644 files/docker-compose.yml "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/"
|
||||||
|
install -m 644 files/config.json5 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/showpiece/config/"
|
||||||
|
install -d -o 1000 -g 1000 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart"
|
||||||
|
install -m 644 files/kiosk.desktop "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config/autostart/"
|
||||||
|
chown -R 1000:1000 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.config
|
||||||
|
mkdir -p "${ROOTFS_DIR}/tmp"
|
||||||
|
echo "$FIRST_USER_NAME" > "${ROOTFS_DIR}/tmp/first_username"
|
12
stage9/02-showpiece/02-run-chroot.sh
Executable file
12
stage9/02-showpiece/02-run-chroot.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
USERNAME=$(cat /tmp/first_username)
|
||||||
|
COMPOSEFILE="/home/$USERNAME/.config/showpiece/docker-compose.yml"
|
||||||
|
|
||||||
|
echo "@reboot docker compose --file '$COMPOSEFILE' up -d && chromium --kiosk 'http://localhost:8080/?w=1080'" >> /tmp/user.crontab
|
||||||
|
echo "40 3 * * * docker compose --file '$COMPOSEFILE' pull && docker compose --file '$COMPOSEFILE' up -d" >> /tmp/user.crontab
|
||||||
|
|
||||||
|
crontab -u "$USERNAME" /tmp/user.crontab
|
||||||
|
|
||||||
|
rm /tmp/first_username
|
||||||
|
rm /tmp/user.crontab
|
14
stage9/02-showpiece/files/config.json5
Normal file
14
stage9/02-showpiece/files/config.json5
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
// Port for the viewer
|
||||||
|
"port": 8080,
|
||||||
|
// Port for the control panel
|
||||||
|
// (use a different port to restrict access to this interface)
|
||||||
|
"controlport": 8080,
|
||||||
|
// (optional) provide weather data to modules that support it
|
||||||
|
"weather": {
|
||||||
|
// Provide an OpenWeatherMap API key
|
||||||
|
// https://openweathermap.org/price
|
||||||
|
// "key": "not0a0real0key00281f631aef6ad3a1",
|
||||||
|
// "city": "chicago"
|
||||||
|
}
|
||||||
|
}
|
10
stage9/02-showpiece/files/docker-compose.yml
Normal file
10
stage9/02-showpiece/files/docker-compose.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
services:
|
||||||
|
showpiece:
|
||||||
|
container_name: showpiece
|
||||||
|
image: corysanin/showpiece:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- ./config:/usr/src/showpiece/config
|
6
stage9/02-showpiece/files/kiosk.desktop
Normal file
6
stage9/02-showpiece/files/kiosk.desktop
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Chromium
|
||||||
|
Exec=chromium-browser --profile-directory="showpiece-browser" --kiosk http://localhost:8080/?w=1080
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
4
stage9/EXPORT_IMAGE
Normal file
4
stage9/EXPORT_IMAGE
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
IMG_SUFFIX="-standalone"
|
||||||
|
if [ "${USE_QEMU}" = "1" ]; then
|
||||||
|
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||||
|
fi
|
5
stage9/prerun.sh
Executable file
5
stage9/prerun.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ ! -d "${ROOTFS_DIR}" ]; then
|
||||||
|
copy_previous
|
||||||
|
fi
|
Loading…
x
Reference in New Issue
Block a user