diff --git a/.forgejo/workflows/os.yml b/.forgejo/workflows/os.yml new file mode 100644 index 0000000..688a6d9 --- /dev/null +++ b/.forgejo/workflows/os.yml @@ -0,0 +1,71 @@ +name: os + +on: + schedule: + - cron: '0 5 8,18,28 * *' + push: + paths: + - 'Dockerfile' + - 'etc/**' + - 'usr/**' + - 'repo/**' + - '.forgejo/workflows/os.yml' + - 'buildinstallxfce.sh' + - 'buildinstallxfceaddons.sh' + workflow_dispatch: + +env: + REGISTRY: forge.pc-rytteren.dk + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: almalinux-10 + permissions: + contents: read + packages: write + + steps: + + - name: Get current date + id: date + run: echo "date=$(date +'%Y%m%d')" >> $FORGEJO_OUTPUT + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # Vi konstruerer tags her med branch-navnet som præfiks + tags: | + type=ref,event=branch + type=raw,value=latest,enable={{is_default_branch}} + type=raw,value=${{ github.ref_name }} + type=raw,value=${{ github.ref_name }}-10 + type=raw,value=${{ github.ref_name }}-10.${{ steps.date.outputs.date }} + + - name: Log into Forgejo Container Registry + if: github.event_name != 'pull_request' + run: | + buildah login -u ${{ github.actor }} -p ${{ secrets.PACKAGE_TOKEN }} ${{ env.REGISTRY }} + + - name: Build image with Buildah + id: build-image + run: | + # Vi bygger med 'raw-img' lokalt + buildah bud \ + --label "org.opencontainers.image.source=https://pc-rytteren.dk/forge/${{ github.repository }}" \ + -t raw-img . + + - name: Push to Forgejo Container Registry + if: github.event_name != 'pull_request' + run: | + for tag in $(echo "${{ steps.meta.outputs.tags }}"); do + echo "Tagging and pushing: $tag" + buildah tag raw-img "$tag" + buildah push "$tag" + done + diff --git a/Dockerfile b/Dockerfile index 6ec021b..e7fe801 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,35 @@ FROM quay.io/almalinuxorg/atomic-desktop-kde:10 +RUN dnf update -y + # This may be necessary for the speakers and internal microphone RUN dnf install -y alsa-sof-firmware RUN dnf install --nogpgcheck -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm -RUN dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/andersrh/sonicDE/repo/rhel+epel-10/andersrh-sonicDE-rhel+epel-10.repo -y +RUN dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/SonicDE/SonicDE-EL10/repo/rhel+epel-10/group_SonicDE-SonicDE-EL10-rhel+epel-10.repo -y RUN dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/xlibre/xlibre-xserver/repo/rhel+epel-10/group_xlibre-xlibre-xserver-rhel+epel-10.repo -y -RUN dnf install sonic-workspace-x11 sonic-win sonic-interface-libraries sonic-workspace --allowerasing -y +# This may be necessary for the speakers and internal microphone +RUN dnf install -y alsa-sof-firmware -RUN dnf install -y fish distrobox nvtop intel-media-driver libva-intel-driver htop +RUN dnf install xorg-x11-xinit xkbcomp xinput xlibre-xserver-Xorg xlibre-xserver-common xlibre-xf86-input-libinput cage weston xrandr -y + +RUN dnf install --allowerasing -y \ + sonic-workspace \ + sonic-workspace-libs \ + sonic-workspace-common \ + sonic-workspace-x11 \ + sonic-win \ + sonic-desktop-interface \ + sonic-interface-libraries + +RUN dnf install --allowerasing -y sonic-keybind-daemon sonic-frameworks-windowsystem sonic-system-info sonic-screen sonic-screen-library sonic-sysguard-library + +RUN dnf remove -y sddm && \ + dnf install --allowerasing -y sonic-login-manager + +RUN dnf install -y fish distrobox nvtop intel-media-driver libva-intel-driver htop firefox # Remove plocate to avoid updatedb going crazy with scanning the file system once a day RUN dnf remove -y plocate @@ -36,8 +55,6 @@ RUN dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docke RUN rm -f /usr/lib64/libopenh264.so.2.4.1 /usr/lib64/libopenh264.so.7 RUN rpm -Uvh --nodeps https://codecs.fedoraproject.org/openh264/42/x86_64/Packages/o/openh264-2.5.1-1.fc42.x86_64.rpm https://codecs.fedoraproject.org/openh264/42/x86_64/Packages/m/mozilla-openh264-2.5.1-1.fc42.x86_64.rpm -RUN dnf install xlibre-xserver-Xorg xlibre-xf86-input-libinput xinput - # Install VLC RUN dnf install vlc vlc-plugins-freeworld vlc-plugin-pipewire -y @@ -48,4 +65,4 @@ COPY etc /etc RUN cd /usr/bin && wget https://raw.githubusercontent.com/CachyOS/CachyOS-Settings/refs/heads/master/usr/bin/kerver && chmod +x kerver RUN rm -rf /tmp/* /var/* && mkdir -p /var/tmp && chmod -R 1777 /var/tmp && \ - bootc container lint \ No newline at end of file + bootc container lint diff --git a/etc/X11/xorg.conf.d/00-keyboard.conf b/etc/X11/xorg.conf.d/00-keyboard.conf new file mode 100644 index 0000000..146d931 --- /dev/null +++ b/etc/X11/xorg.conf.d/00-keyboard.conf @@ -0,0 +1,10 @@ +# Written by systemd-localed(8), read by systemd-localed and Xorg. It's +# probably wise not to edit this file manually. Use localectl(1) to +# update this file. +Section "InputClass" + Identifier "system-keyboard" + MatchIsKeyboard "on" + Option "XkbLayout" "dk" + Option "XkbModel" "pc105" + Option "XkbOptions" "terminate:ctrl_alt_bksp" +EndSection diff --git a/etc/X11/xorg.conf.d/20-modesetting.conf b/etc/X11/xorg.conf.d/20-modesetting.conf new file mode 100644 index 0000000..332e165 --- /dev/null +++ b/etc/X11/xorg.conf.d/20-modesetting.conf @@ -0,0 +1,7 @@ +Section "Device" + Identifier "Intel Graphics" + Driver "modesetting" + Option "ShadowFB" "false" # you don't need on recent hardware + Option "Atomic" "true" #only effective on Xlibre, or Xorg-git with a special patch + Option "TearFree" "false" # We will be using compositor, so TearFree (extra buffer) in the driver is not necessary +EndSection diff --git a/etc/X11/xorg.conf.d/90-touchpad-tap.conf b/etc/X11/xorg.conf.d/90-touchpad-tap.conf new file mode 100644 index 0000000..9000db3 --- /dev/null +++ b/etc/X11/xorg.conf.d/90-touchpad-tap.conf @@ -0,0 +1,19 @@ +Section "InputClass" + Identifier "Touchpad Tap" + # Matcher alle touchpads der bruger libinput + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" + + # Korrigerer hastigheden til 2x (til 4K / 200% skalering) + #Option "TransformationMatrix" "5 0 0 0 5 0 0 0 2" + + # Bruger den ergonomiske 'adaptive' profil (1 0 er Adaptive) + #Option "AccelProfile" "adaptive" + + # Holder grundhastigheden neutral (0.0) + #Option "AccelSpeed" "0" + + # Valgfrit: Slå tap-to-click til, hvis du foretrækker det + Option "Tapping" "on" +EndSection diff --git a/etc/chromium/chromium.conf b/etc/chromium/chromium.conf deleted file mode 100644 index c628808..0000000 --- a/etc/chromium/chromium.conf +++ /dev/null @@ -1,31 +0,0 @@ -CHROMIUM_FLAGS="--use-cmd-decoder=passthrough ---enable-features=VaapiIgnoreDriverChecks,VaapiLowPowerEncoderGen9x,Vp9kSVCHWDecoding,VaapiVp9kSVCHWEncoding,DesktopScreenshots,SharingDesktopScreenshotsEdit,WebUIDarkMode,PlatformHEVCDecoderSupport,PlatformHEVCEncoderSupport,PartialRaster,CanvasOopRasterization,AcceleratedVideoDecoder,AcceleratedVideoEncoder,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,UseMultiPlaneFormatForHardwareVideo,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE ---ignore-gpu-blocklist ---disable-gpu-driver-bug-workaround ---disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled --oauth2-client-id=77185425430.apps.googleusercontent.com --oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT ---disk-cache-dir=/run/user/1000/chromium-cache ---disk-cache-size=419430400 ---enable-chrome-browser-cloud-management ---show-component-extension-options ---enable-gpu-rasterization ---media-router=0 ---enable-remote-extensions ---video-capture-use-gpu-memory-buffer ---enable-video-player-chromecast-support ---enable-pixel-canvas-recording ---enable-native-gpu-memory-buffers ---enable-zero-copy ---enable-partial-raster ---enable-parallel-downloading ---enable-quic ---enable-lazy-image-loading ---enable-lcd-text ---enable-oop-rasterization ---canvas-oop-rasterization ---enable-gpu-compositing ---enable-accelerated-mjpeg-decode ---enable-font-antialiasing ---enable-accelerated-2d-canvas ---enable-gpu-memory-buffer-video-frames ---enable-gpu-memory-buffer-compositor-resources ---enable-hardware-overlays" \ No newline at end of file