Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
c1dd104
And on the 776th day they said 'let there be no Distrobox'
raven0034 Jul 10, 2026
6a40a1d
Ditch local reg for zst + podman save/load + skopeo (much speed)
raven0034 Jul 10, 2026
12e648b
unmask so procfs fixed
raven0034 Jul 10, 2026
1f4d44c
fuse --> overlay w/ disable-volatile to mitigate fsync issues
raven0034 Jul 18, 2026
9b4ad25
Initial systemd integration and further progress on isolation
raven0034 Jul 19, 2026
ffa2255
Ensure pacman.conf is owned by root
raven0034 Jul 21, 2026
03d5f25
Ditch duplicate keyring and mirrorlist population
raven0034 Jul 21, 2026
4fa77d6
ocl-icd --> opencl-icd-loader to fix issues with missing OpenCL symbols
raven0034 Jul 21, 2026
821ab14
Further mask redundant/broken systemd-tmpfiles* services
raven0034 Jul 21, 2026
b40e49a
Mitigate nvidia-ctk not mounting OpenCL ICD
raven0034 Jul 21, 2026
e325200
Set x11 session hint and use host's nsswitch.conf
raven0034 Jul 21, 2026
55bad2a
chown by name rather than uid:gid for clarity
raven0034 Jul 22, 2026
541433d
Migrate session start to be handled by PAM for consistency
raven0034 Jul 22, 2026
5cf2701
Fix polkit
raven0034 Jul 22, 2026
0070bed
Add spectacle
raven0034 Jul 24, 2026
f2047f8
Utilise /etc/environment
raven0034 Jul 24, 2026
719a875
Clean up local registry leftover
raven0034 Jul 24, 2026
223eafd
thonk
raven0034 Jul 24, 2026
c8af11a
thonk2
raven0034 Jul 24, 2026
2871105
New install script & nuke xstartup
raven0034 Jul 29, 2026
e49d0db
Forget bedtime reading, how about bedtime documentation!
raven0034 Aug 12, 2026
8deeda4
Resolve merge conflict
raven0034 Aug 12, 2026
62a44c5
less is more, or something
raven0034 Aug 14, 2026
71159c6
CJK fonts
raven0034 Aug 14, 2026
4c757f2
VLC
raven0034 Aug 14, 2026
7e886ca
More fonts
raven0034 Aug 14, 2026
7fa9b2c
protontricks
raven0034 Aug 14, 2026
df3210c
Don't bind nsswitch.conf (ns res via systemd borky)
raven0034 Aug 14, 2026
9461ad0
what's colder than 1 degree? fixing ci/cd
raven0034 Sep 8, 2026
e451f02
red hat pink hat green hat pink hat red hat blue hat red hat
raven0034 Sep 8, 2026
124b489
you're a centurion! but we forgot to give you the dollar :<
raven0034 Sep 8, 2026
49be9b0
disable fuse bc seemingly that's the default
raven0034 Sep 8, 2026
bb67cdc
sigh
raven0034 Sep 8, 2026
69610f8
Update image.yml
raven0034 Sep 8, 2026
bd398dc
spitballing
raven0034 Sep 8, 2026
4db91bd
Clean and try w/o OCI
raven0034 Sep 10, 2026
b857a93
unspit
raven0034 Sep 10, 2026
609792f
conf test
raven0034 Sep 10, 2026
e2cf1eb
update runner to 26.04 (-latest is 24.04 rn)
raven0034 Sep 10, 2026
426b1d2
initial attempt at mesh updating over ghcr
raven0034 Sep 10, 2026
82e396b
docs & auto-gen icd if missing (nwrt fresh v updated)
raven0034 Sep 10, 2026
8f21fce
fix issue with untrackeds
raven0034 Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 31 additions & 16 deletions .github/workflows/image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,50 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Copy storage conf
run: |
mkdir -p /home/runner/.config/containers
cp ./host/storage.conf /home/runner/.config/containers/storage.conf
podman system reset -f

- name: Lowercase repo name
run: echo "REPO_LC=${REPO,,}" >>${GITHUB_ENV}
env:
REPO: '${{ github.repository }}'

- name: Build and Push image
uses: docker/build-push-action@v5
- name: Build Image with Buildah
id: build-img
uses: redhat-actions/buildah-build@v3
with:
context: .
push: true
tags: ghcr.io/${{ env.REPO_LC }}:latestflatpakfix
image: ${{ env.REPO_LC }}
tags: latest
containerfiles: ./Containerfile
disable-fuse-overlayfs: true
extra-args: |
--squash
labels: |
uwcs.fng.commit=${{ github.sha }}

- name: Push to GHCR
id: push-img
uses: redhat-actions/push-to-registry@v3
with:
image: ${{ steps.build-img.outputs.image }}
tags: ${{ steps.build-img.outputs.tags }}
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
extra-args: |
--compression-format=zstd
--compression-level=7
83 changes: 83 additions & 0 deletions Containerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# pull x86_64-v3 cachy variant. w/ avx512 support on a test machine, can be swapped to v4. target doesn't have avx512
FROM docker.io/cachyos/cachyos-v3:latest AS arch

# has e.g. NoExtract directive. dirs get nuked later down anyway to reduce image size but should mildly reduce build time
# make sure root in container owns it
COPY --chown=root:root ./home/pacman.conf /etc/pacman.conf

# make sure pacman can check against cachy signed packages
# arch as failsafe in case someone wanting to install non-cachy-recompiled packages
# target machines are x86_64-v3 so use v3 mirrorlist
# yeet rust after dcspkg build to reduce final image size (ideally sort dcspkg ci out soon though)
# default ocl-icd is missing symbols, opencl-icd-loader fixes this
# available in cachy repos, aur on vanilla arch
# --ask=4 corresponds to ALPM_QUESTION_CONFLICT_PKG i.e. answer Y not N to opencl-icd-loader replacing ocl-icd
RUN pacman-key --init && \
pacman-key --populate \
archlinux cachyos && \
pacman -Syu --noconfirm \
base-devel wget git less nano htop \
noto-fonts-cjk xorg-fonts-misc \
vlc vlc-plugins-all ffmpeg \
plasma-desktop xdg-desktop-portal-kde vulkan-tools kwin-x11 \
pipewire pipewire-pulse pipewire-alsa plasma-pa kde-gtk-config \
firefox discover konsole dolphin kate \
flatpak steam lutris protontricks spectacle \
prismlauncher jre21-openjdk && \
pacman -S --ask=4 opencl-icd-loader && \
pacman -S --noconfirm rust && \
cargo install dcspkg --root /usr && \
pacman -Rns --noconfirm rust

# clear out dirs with redundant files
# do locale gen (US too since e.g. steam & others will look for it and generate them anyway if not present)
# optimise pkg build if e.g. user uses aur/yay to build against architecture of host (useful if building image non-locally)
RUN rm -rf \
/tmp/* /var/cache/pacman/* \
/var/lib/pacman/sync/* \
/root/.cargo \
/usr/share/man/* \
/usr/share/doc/* \
/usr/share/gtk-doc/* && \
sed -i 's/#en_GB.UTF-8/en_GB.UTF-8/g' /etc/locale.gen && \
sed -i 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen && \
locale-gen && \
sed -i 's/-march=x86-64 -mtune=generic/-march=native -mtune=native/g' /etc/makepkg.conf

# add fng user and make it a passwordless sudoer
# sudo will ignore if not 0440
# mask services that won't work in the container anyway or that are redundant since what they do is handled by the host
RUN useradd -u 1000 -m -s /bin/bash fng && \
echo "fng ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/fng && \
chmod 0440 /etc/sudoers.d/fng && \
systemctl mask \
getty@.service console-getty.service \
proc-sys-fs-binfmt_misc.automount systemd-remount-fs.service systemd-udevd.service \
systemd-udev-trigger.service initrd-udevadm-cleanup-db.service systemd-firstboot.service \
systemd-update-utmp.service systemd-tmpfiles-clean.service \
systemd-tmpfiles-setup-dev-early.service systemd-tmpfiles-setup-dev.service \
systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer \
systemd-network-generator.service systemd-network-persistent-storage.service \
systemd-networkd.service systemd-networkd-wait-online.service \
systemd-resolved.service systemd-resolved-monitor.socket systemd-resolved-varlink.socket \
systemd-networkd-resolve-hook.socket systemd-networkd-varlink-metrics.socket \
systemd-networkd-varlink.socket systemd-networkd.socket systemd-nsresourced.service \
systemd-nsresourced.socket systemd-machine-id-commit.service \
polkit-agent-helper.socket && \
chmod u+s /usr/lib/polkit-1/polkit-agent-helper-1

# copy default polkit auto-allow rules. note for kernel <6.12 suid agent must be used
COPY --chown=root:polkitd --chmod=0640 host/99-fng-polkit.rules /etc/polkit-1/rules.d/99-fng-polkit.rules

# copy systemd service that will handle login
COPY --chown=root:root --chmod=0644 host/startsession.service /etc/systemd/system/startsession.service
RUN systemctl enable startsession.service

# copy pre-config'd home dir and make our user the owner of it
USER fng
WORKDIR /home/fng
COPY --chown=fng:fng home ./
RUN flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

# ideally sort ci out for this as well
RUN git clone --depth=1 https://github.com/UWCS/dcslauncher.git
39 changes: 0 additions & 39 deletions Dockerfile

This file was deleted.

Loading