Compare commits

..

44 Commits

Author SHA1 Message Date
32175eeed0 fix: start hyprland with systemd 2026-01-18 21:17:26 +01:00
373a6ab0c2 feat: add SwayNotificationCenter 2026-01-16 20:35:00 +01:00
8b6d1789e4 fix: move hyprland start to desktop specific script 2026-01-10 20:50:08 +01:00
7d1f4e811d feat: turns out you can just use base-nvidia for the drivers 2026-01-10 15:34:53 +01:00
d77b943c64 feat: add cliphist 2026-01-09 18:03:02 +01:00
73bd310909 fix: use drop in profile.d folder to launch hyprland 2026-01-09 18:02:31 +01:00
941e77971b fix: add hyprland autostart to profile 2026-01-08 17:45:01 +01:00
a0441aca16 fix: automatically unlock gnome keyring on login 2026-01-08 17:43:40 +01:00
c464421eff fix: remove greetd 2026-01-07 22:48:03 +01:00
7c816c54dd fix: replace sddm with greetd 2026-01-07 22:11:45 +01:00
d121db214a fix: remove hyprland starting service; replace with sddm 2026-01-07 20:41:48 +01:00
68862744a5 fix: enable hyprland starting service 2026-01-06 23:11:06 +01:00
27a21f003c feat: add pavucontrol for waybar volume management 2026-01-06 22:12:39 +01:00
317094fb3f feat: add waybar 2026-01-06 21:53:50 +01:00
edbbf79302 feat: autostart hyprland with systemd 2026-01-06 21:26:03 +01:00
3f2fda995e feat: add hypridle, hyprlock, hyprpolkitagent 2026-01-06 21:24:03 +01:00
263952da37 fix: move gnome-keyring & evolution from gnome to post_desktop 2026-01-06 21:23:41 +01:00
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
b48c399c00 FEAT: add default-fonts-cjk 2026-01-04 16:53:46 +01:00
b1d7abb315 FEAT: add hugo 2026-01-01 23:55:03 +01:00
98da319a21 FEAT: add podman compose 2025-12-25 23:06:49 +01:00
7c2dcb6220 FIX: change nvidia driver integration to ublue-os/main version 2025-12-20 16:10:04 +01:00
7f37d82be1 FEAT: merge applications from 42 2025-12-20 16:07:29 +01:00
9da45bb1a5 FIX: nvidia driver 2025-12-20 11:55:58 +01:00
d51d1055dc FEAT: add netcat tor torbrowser-launcher 2025-12-17 16:48:57 +01:00
f1c5bfeb2d FEAT: add sqlite 2025-12-09 18:16:08 +01:00
c37006e861 FIX: Veracrypt 2025-12-09 17:53:45 +01:00
5ee2df4af6 FEAT: add Veracrypt 2025-12-07 16:59:11 +01:00
df94b5ece0 FEAT: merge nvidia changes from 42 2025-12-06 19:33:37 +01:00
c63cea685a FIX: improve cleaning script 2025-12-06 19:24:11 +01:00
aa1c153015 FIX: add nvidia notes to readme 2025-12-06 19:23:15 +01:00
dadc897884 FEAT: add texlive-collection-langgerman 2025-12-05 21:55:12 +01:00
784ca0de59 FIX: nvidia driver 2025-12-05 21:43:37 +01:00
490a3bab8e FIX: nvidia driver 2025-12-05 18:20:59 +01:00
73ccad4340 FIX: nvidia driver 2025-11-29 15:07:17 +01:00
b8b2c6b3ac FIX: workflow publish on non default branches 2025-11-28 18:23:26 +01:00
64002194f5 FEAT: remove 7zip 2025-11-28 18:05:05 +01:00
28cfa60446 FEAT: setup fedora 42 build 2025-11-28 18:04:23 +01:00
10620a1909 FIX: prepare for multiple branches to build 2025-11-28 18:02:14 +01:00
effa4354f4 FEAT: add vlc 2025-11-27 16:49:24 +01:00
5f6ce460ec FIX: nvidia driver 2025-11-24 12:37:39 +01:00
2a5b0f48b0 FIX: don't install weak dependencies on update 2025-11-24 12:37:23 +01:00
10 changed files with 192 additions and 63 deletions

View File

@@ -2,15 +2,12 @@
name: Build container image
on:
pull_request:
branches:
- main
schedule:
- cron: '30 1 * * *'
push:
branches:
- main
paths-ignore:
- '**/README.md'
paths:
- "Containerfile"
- "build_files/**"
workflow_dispatch:
env:
@@ -21,13 +18,19 @@ env:
DEFAULT_TAG: "latest"
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}-${{ inputs.brand_name}}-${{ inputs.stream_name }}
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}-${{ inputs.brand_name }}-${{ inputs.stream_name }}
cancel-in-progress: true
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
@@ -50,7 +53,7 @@ jobs:
- name: Mount BTRFS for podman storage
id: container-storage-action
uses: ublue-os/container-storage-action@911baca08baf30c8654933e9e9723cb399892140
continue-on-error: true
continue-on-error: true
with:
target-dir: /var/lib/containers
mount-opts: compress-force=zstd:2
@@ -65,9 +68,8 @@ jobs:
id: metadata
with:
tags: |
type=raw,value=${{ env.DEFAULT_TAG }}
type=raw,value=${{ env.DEFAULT_TAG }}.{{date 'YYYYMMDD-HHmm'}}
type=raw,value={{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: |
@@ -79,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=${{ env.DEFAULT_TAG }}.{{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
@@ -99,10 +101,12 @@ 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
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -110,7 +114,7 @@ jobs:
- name: Push To GHCR
uses: redhat-actions/push-to-registry@5ed88d269cf581ea9ef6dd6806d01562096bee9c # v2
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
if: github.event_name != 'pull_request'
id: push
env:
REGISTRY_USER: ${{ github.actor }}

View File

@@ -1,19 +1,28 @@
FROM scratch AS ctx
COPY build_files /
FROM ghcr.io/ublue-os/akmods-nvidia-open:main-43 AS nvidia-kernel
FROM ghcr.io/bazzite-org/nvidia-drivers:latest-f43-x86_64 AS nvidia-packages
FROM quay.io/fedora/fedora-bootc:43
FROM ghcr.io/ublue-os/base-nvidia:43
RUN rm -r /opt && mkdir /opt
RUN --mount=type=bind,from=ctx,source=/,target=/ctx \
--mount=type=bind,from=nvidia-kernel,source=/,target=/nvidia-kernel \
--mount=type=bind,from=nvidia-packages,src=/,dst=/nvidia-packages \
--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/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 bootc container lint

View File

@@ -1,10 +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 --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:

View File

@@ -39,6 +39,7 @@ It is possible to keep a revision by pinning it: `ostree admin pin 0`
- man
- langpacks: en, de
- default-fonts-cjk
- Gnome + Software
- curl
- git
@@ -54,7 +55,40 @@ It is possible to keep a revision by pinning it: `ostree admin pin 0`
- ffmpeg
- pandoc
- ansible
- sqlite
- netcat
- tor & torbrowser-launcher
- podman compose
- hugo
- Flatpak (with default repository configured)
- Chromium
- Veracrypt
- VSCode
- NVIDIA Drivers
## Referenced Sources for NVIDIA Driver Installation
### NVIDIA
- https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
- https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#handle-uninstallation
- https://developer.nvidia.com/cuda-downloads
### ublue-os
- https://github.com/ublue-os/main
- https://github.com/ublue-os/akmods
- https://github.com/ublue-os/hwe/pkgs/container/akmods-nvidia
### RPM Fusion
- https://rpmfusion.org/Howto/NVIDIA
### Bluefin
- https://github.com/ublue-os/bluefin/blob/main/build_files/base/03-install-kernel-akmods.sh
- https://github.com/ublue-os/bluefin/blob/main/build_files/base/19-initramfs.sh
### Notes
Those also include links that didn't work out in the end for various reasons, the one I use now is based on ublue-os/main scripts.

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 --setopt=install_deps=False
dnf5 install -y man-pages man-db glibc-langpack-en glibc-langpack-de default-fonts-cjk plymouth git

21
build_files/02_gnome.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
set -ouex pipefail
dnf5 install -y --setopt=exclude=gnome-tour,malcontent-control \
gnome-shell \
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 \
gstreamer1-plugin-libav
git clone https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator.git /usr/share/gnome-shell/extensions/clipboard-indicator@tudmotu.com

17
build_files/02_hyprland.sh Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
set -ouex pipefail
dnf5 copr enable -y solopasha/hyprland
dnf5 copr enable -y erikreider/SwayNotificationCenter
dnf5 install -y \
hyprland \
hypridle \
hyprlock \
hyprpolkitagent \
waybar \
pavucontrol \
cliphist \
SwayNotificationCenter-git
echo 'if [[ $(ps aux | grep hyprland | wc -l) -eq 1 ]]; then cd $HOME && echo "launch hyprland?" && read && systemd-run --user --service-type=exec --unit=hyprland --description="hyprland start service" hyprland ; fi' >> /etc/profile.d/launch_hyprland.sh

51
build_files/03_post_desktop.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
set -ouex pipefail
dnf5 install -y \
gnome-keyring \
gnome-keyring-pam \
evolution \
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
cp /ctx/login /etc/pam.d

View File

@@ -1,42 +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
dnf5 install -y man-pages man-db glibc-langpack-en glibc-langpack-de 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 ansible-core ansible-collection-community-general
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
# https://rpmfusion.org/Howto/NVIDIA
# https://www.tecmint.com/install-nvidia-drivers-in-linux
# https://github.com/ublue-os/akmods
# https://github.com/ublue-os/bazzite
# https://github.com/Comprehensive-Wall28/Nvidia-Fedora-Guide
# this is a combination of bazzite & ublue-os nvidia installation
# there is probably a better way to do it, but this works (I hope)
dnf install -y \
/nvidia-kernel/rpms/ublue-os/ublue-os-nvidia*.rpm \
/nvidia-kernel/rpms/kmods/kmod-nvidia*.rpm \
/nvidia-packages/nvidia-kmod-common-* \
/nvidia-packages/nvidia-modprobe-5*
dnf5 remove -y rpmfusion-free-release rpmfusion-nonfree-release
dnf5 clean all

18
build_files/login Normal file
View File

@@ -0,0 +1,18 @@
#%PAM-1.0
auth substack system-auth
auth include postlogin
auth optional pam_gnome_keyring.so
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
session optional pam_gnome_keyring.so auto_start