Compare commits

...

3 Commits

Author SHA1 Message Date
15fac4defc FIX: disable fail-fast 2026-01-06 16:31:32 +01:00
c47b6f4265 FEAT: add hyprland container 2026-01-06 16:18:10 +01:00
b9986c0376 FIX: seperated build steps 2026-01-06 15:28:30 +01:00
10 changed files with 120 additions and 39 deletions

View File

@@ -25,6 +25,12 @@ jobs:
build_push:
name: Build and push image
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
desktop_environment:
- gnome
- hyprland
permissions:
contents: read
@@ -62,8 +68,8 @@ jobs:
id: metadata
with:
tags: |
type=raw,value=${{ github.ref_name }}.${{ env.DEFAULT_TAG }}
type=raw,value=${{ github.ref_name }}.{{date 'YYYYMMDD-HHmm'}}
type=raw,value=${{ github.ref_name }}.${{ matrix.desktop_environment }}.${{ env.DEFAULT_TAG }}
type=raw,value=${{ github.ref_name }}.${{ matrix.desktop_environment }}.{{date 'YYYYMMDD-HHmm'}}
type=sha,enable=${{ github.event_name == 'pull_request' }}
type=ref,event=pr
labels: |
@@ -75,7 +81,7 @@ jobs:
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
org.opencontainers.image.url=https://github.com/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}/tree/${{ github.sha }}
org.opencontainers.image.vendor=${{ github.repository_owner }}
org.opencontainers.image.version=${{ github.ref_name }}.{{date 'YYYYMMDD-HHmm'}}
org.opencontainers.image.version=${{ github.ref_name }}.${{ matrix.desktop_environment }}.{{date 'YYYYMMDD-HHmm'}}
io.artifacthub.package.deprecated=false
io.artifacthub.package.keywords=${{ env.IMAGE_KEYWORDS }}
io.artifacthub.package.license=Apache-2.0
@@ -95,6 +101,8 @@ jobs:
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
oci: false
build-args: |
DESKTOP_ENVIRONMENT=${{ matrix.desktop_environment }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3

View File

@@ -16,18 +16,32 @@ RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=bind,from=akmods,src=/rpms/ublue-os,dst=/tmp/akmods-rpms \
--mount=type=bind,from=akmods,src=/kernel-rpms,dst=/tmp/kernel-rpms \
--mount=type=bind,from=akmods_nvidia,src=/rpms,dst=/tmp/akmods-nv-rpms \
/ctx/nvidia.sh
/ctx/00_nvidia.sh
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=cache,dst=/var/cache \
--mount=type=cache,dst=/var/log \
--mount=type=tmpfs,dst=/tmp \
/ctx/build.sh
/ctx/01_pre_desktop.sh
ARG DESKTOP_ENVIRONMENT="gnome"
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=cache,dst=/var/cache \
--mount=type=cache,dst=/var/log \
--mount=type=tmpfs,dst=/tmp \
/ctx/initramfs.sh
/ctx/02_${DESKTOP_ENVIRONMENT}.sh
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=cache,dst=/var/cache \
--mount=type=cache,dst=/var/log \
--mount=type=tmpfs,dst=/tmp \
/ctx/03_post_desktop.sh
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=cache,dst=/var/cache \
--mount=type=cache,dst=/var/log \
--mount=type=tmpfs,dst=/tmp \
/ctx/04_initramfs.sh
RUN bootc container lint

View File

@@ -1,11 +1,14 @@
clean:
sudo rm -fr flathub output output-repo
sudo podman system prune
for container in $$(sudo podman container list --external --format "{{.ID}}"); do sudo podman rm $$container; done
for container in $$(sudo podman container list --external --format "{{.ID}}"); do sudo podman rm --force $$container; done
oci:
sudo podman build --network=host -t podman-image .
oci_hyprland:
sudo podman build --network=host -t podman-image-hyprland --build-arg DESKTOP_ENVIRONMENT=hyprland .
CONTAINER_IMAGE=localhost/podman-image
FILESYSTEM_TYPE=ext4
qcow:

13
build_files/01_pre_desktop.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -ouex pipefail
cp /ctx/bootc-fetch-apply-updates.service /usr/lib/systemd/system/bootc-fetch-apply-updates.service
cp /ctx/os-release /usr/lib/os-release
echo "LANG=de_DE.UTF-8" >> /etc/default/locale
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ln -s /usr/bin/xdg-open /usr/bin/open
dnf5 update -y --setopt=install_weak_deps=False
dnf5 install -y man-pages man-db glibc-langpack-en glibc-langpack-de default-fonts-cjk plymouth git

24
build_files/02_gnome.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
set -ouex pipefail
dnf5 install -y --setopt=exclude=gnome-tour,malcontent-control \
gnome-shell \
gnome-keyring \
gnome-keyring-pam \
gnome-terminal \
gnome-bluetooth \
gnome-calculator \
gnome-disk-utility \
gnome-extensions-app \
gnome-browser-connector \
gnome-backgrounds \
gnome-shell-extension-appindicator
dnf5 install -y \
totem \
nautilus \
seahorse \
evolution \
gstreamer1-plugin-libav
git clone https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator.git /usr/share/gnome-shell/extensions/clipboard-indicator@tudmotu.com

6
build_files/02_hyprland.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
set -ouex pipefail
dnf5 copr enable -y solopasha/hyprland
dnf5 install -y hyprland

45
build_files/03_post_desktop.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/bash
set -ouex pipefail
dnf5 install -y \
fzf \
vlc \
curl \
btop \
tmux \
make \
xsel \
7zip \
nvtop \
direnv \
sqlite \
flatpak \
chromium \
pciutils \
tailscale \
podman-compose \
netcat tor torbrowser-launcher \
ansible-core ansible-collection-community-general \
pandoc-common pandoc-pdf texlive-collection-langgerman \
hugo
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
systemctl enable tailscaled.service
systemctl disable sshd.service
# Install VSCode: https://packages.microsoft.com/yumrepos/vscode/
curl -fsSLo /etc/yum.repos.d/vscode.repo https://packages.microsoft.com/yumrepos/vscode/config.repo
rpm-ostree install code
rm /etc/yum.repos.d/vscode.repo
dnf5 install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
dnf5 install -y --allowerasing ffmpeg x265-libs
# Install Veracrypt: https://veracrypt.io/en/Downloads.html
dnf5 install -y https://launchpad.net/veracrypt/trunk/1.26.24/+download/veracrypt-1.26.24-Fedora-40-x86_64.rpm
dnf5 remove -y rpmfusion-free-release rpmfusion-nonfree-release
dnf5 clean all

View File

@@ -1,32 +0,0 @@
#!/bin/bash
set -ouex pipefail
cp /ctx/bootc-fetch-apply-updates.service /usr/lib/systemd/system/bootc-fetch-apply-updates.service
cp /ctx/os-release /usr/lib/os-release
dnf5 update -y --setopt=install_weak_deps=False
dnf5 install -y man-pages man-db glibc-langpack-en glibc-langpack-de default-fonts-cjk plymouth
dnf5 install -y --setopt=exclude=gnome-tour,malcontent-control gnome-shell gnome-keyring gnome-keyring-pam gnome-bluetooth gnome-terminal nautilus seahorse evolution totem gstreamer1-plugin-libav gnome-extensions-app gnome-browser-connector gnome-shell-extension-appindicator
dnf5 install -y gnome-calculator gnome-disk-utility gnome-backgrounds
dnf5 install -y curl git btop nvtop tmux flatpak pciutils tailscale make fzf direnv xsel chromium 7zip pandoc-common pandoc-pdf texlive-collection-langgerman ansible-core ansible-collection-community-general vlc sqlite netcat tor torbrowser-launcher podman-compose hugo
git clone https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator.git /usr/share/gnome-shell/extensions/clipboard-indicator@tudmotu.com
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
echo "LANG=de_DE.UTF-8" >> /etc/default/locale
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ln -s /usr/bin/xdg-open /usr/bin/open
systemctl enable tailscaled.service
systemctl disable sshd.service
# Install VSCode: https://packages.microsoft.com/yumrepos/vscode/
curl -fsSLo /etc/yum.repos.d/vscode.repo https://packages.microsoft.com/yumrepos/vscode/config.repo
rpm-ostree install code
rm /etc/yum.repos.d/vscode.repo
dnf5 install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
dnf5 install -y --allowerasing ffmpeg x265-libs
# Install Veracrypt: https://veracrypt.io/en/Downloads.html
dnf5 install -y https://launchpad.net/veracrypt/trunk/1.26.24/+download/veracrypt-1.26.24-Fedora-40-x86_64.rpm
dnf5 remove -y rpmfusion-free-release rpmfusion-nonfree-release
dnf5 clean all