Compare commits

..

24 Commits

Author SHA1 Message Date
tumillanino
d53403697b Update recipe.yml 2026-04-09 19:18:15 +10:00
tumillanino
aa2765828f resolving dnf conflicts with kernel tools 2026-04-09 17:50:58 +10:00
tumillanino
c9199dbafd fixed grub install mess 2026-04-09 16:47:12 +10:00
tumillanino
7c1b837bf9 switching from cachy to bazzite kernel 2026-04-09 16:34:59 +10:00
tumillanino
57fdc02539 switching from cachy to bazzite kernel 2026-04-09 16:33:56 +10:00
tumillanino
3f52e6286f kernel still breaking. updated name which may have been issue 2026-04-09 15:59:23 +10:00
tumillanino
c6ffa3591f kernel still breaking. updated name which may have been issue 2026-04-09 15:58:55 +10:00
tumillanino
1c59f8a718 Merge pull request #12 from tumillanino/staging
fix for kernel issues
2026-04-09 14:55:50 +10:00
tumillanino
f371fba55e btrfs flags added to kernel install 2026-04-09 14:29:37 +10:00
tumillanino
7e73dff9b7 Merge pull request #11 from tumillanino/staging
move cachyos kernel and base image change into prod
2026-04-09 13:24:44 +10:00
tumillanino
ac7d14e98a latest tag doesn't exist for main fedora images 2026-04-09 13:08:16 +10:00
tumillanino
9a06941829 stupidly forgot to replace whole rebase link 2026-04-09 13:03:25 +10:00
tumillanino
a3f1e0843a some kernel fixes that were lost 2026-04-09 12:45:26 +10:00
tumillanino
f615d38e86 Merge pull request #9 from tumillanino/staging
attempts to fix kernel changes
2026-04-09 11:50:10 +10:00
tumillanino
a936328c28 Merge branch 'main' into staging 2026-04-09 11:31:34 +10:00
tumillanino
3b7a1e440f fixed kernel cleanup and initramfs generation 2026-04-09 10:18:35 +10:00
tumillanino
09760ca4a9 changing wallpaper to be less shit 2026-04-09 10:01:22 +10:00
tumillanino
e91adc45ce Merge pull request #8 from tumillanino/revert-7-staging
Revert "update to use cachyos kernel and kinoite base image"
2026-04-08 18:00:10 +10:00
tumillanino
e43e54dba9 Revert "update to use cachyos kernel and kinoite base image" 2026-04-08 17:57:18 +10:00
tumillanino
17ece6cfde Merge pull request #7 from tumillanino/staging
update to use cachyos kernel and kinoite base image
2026-04-08 17:11:53 +10:00
tumillanino
03bc0c3bba remove zram to resolve cachyos kernel install 2026-04-08 16:55:41 +10:00
tumillanino
e00db9e3fa trying to adapt cachyos kernel from zena linux 2026-04-08 16:37:17 +10:00
tumillanino
b924a4a4d8 Merge pull request #6 from tumillanino/staging
branding changes
2026-04-08 16:07:37 +10:00
tumillanino
a78782e54d hopefully fixes the branding issues on boot 2026-04-08 15:53:24 +10:00
37 changed files with 233 additions and 4 deletions

BIN
docs/wallpapers/6293645.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

BIN
docs/wallpapers/8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

View File

@@ -0,0 +1,89 @@
#!/usr/bin/env bash
# Replaces the stock Fedora kernel with the Bazzite kernel.
# The Bazzite kernel ships sched-ext (SCX) support and gaming/realtime
# optimizations, making it well-suited for low-latency audio workloads.
#
# Based on the solarpowered project kernel install approach:
# https://github.com/solar-powered/solarpowered
set -ouex pipefail
OS_VERSION=$(rpm -E %fedora)
VER=$(basename "$(curl -Ls -o /dev/null -w '%{url_effective}' https://github.com/bazzite-org/kernel-bazzite/releases/latest)")
# Verify we got a valid version string
if [[ -z "$VER" ]]; then
echo "ERROR: Failed to determine latest bazzite kernel version" >&2
exit 1
fi
echo "Bazzite kernel version: ${VER}"
# Disable kernel-install hooks so they don't trigger inside the container
# build environment. The initramfs will be generated explicitly below.
mkdir -p /usr/lib/kernel/install.d
pushd /usr/lib/kernel/install.d
printf '%s\n' '#!/bin/sh' 'exit 0' >05-rpmostree.install
printf '%s\n' '#!/bin/sh' 'exit 0' >50-dracut.install
chmod +x 05-rpmostree.install 50-dracut.install
popd
# Erase stock Fedora kernel RPMs from the package database (matches Bazzite's approach)
for pkg in kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra kernel-tools-libs kernel-tools; do
rpm --erase "$pkg" --nodeps || true
done
# Remove ALL existing kernel module directories.
rm -rf /usr/lib/modules
# Create /boot/grub2 so grub2 RPM scriptlets don't fail in the container
# build environment. It gets removed by the rm -rf /boot/* below.
mkdir -p /boot/grub2
echo "Installing Bazzite kernel ${VER}..."
dnf5 install -y \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-common-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-core-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-matched-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-akmods-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-core-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-matched-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-internal-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-$VER.fc$OS_VERSION.x86_64.rpm \
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-libs-$VER.fc$OS_VERSION.x86_64.rpm
# Identify the newly installed Bazzite kernel version
NEW_KVER=$(ls /usr/lib/modules | head -n1)
# Ensure vmlinuz is at the path expected by rpm-ostree and bootc for boot
# entry generation.
if [ ! -f "/usr/lib/modules/${NEW_KVER}/vmlinuz" ]; then
if [ -f "/boot/vmlinuz-${NEW_KVER}" ]; then
cp "/boot/vmlinuz-${NEW_KVER}" "/usr/lib/modules/${NEW_KVER}/vmlinuz"
else
echo "ERROR: vmlinuz not found for kernel ${NEW_KVER}" >&2
exit 1
fi
fi
# Rebuild kernel module dependency map before generating initramfs.
depmod -a "${NEW_KVER}"
# Generate the initramfs inside the container image so that rpm-ostree and
# bootc can use it directly at deploy time.
dracut \
--no-hostonly \
--kver "${NEW_KVER}" \
--reproducible \
--zstd \
-v \
--add ostree \
--force \
"/usr/lib/modules/${NEW_KVER}/initramfs.img"
# Atomic images manage /boot via the bootloader layer; clear any kernel
# files the RPM dropped there.
rm -rf /boot/*

View File

@@ -1,6 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -oue pipefail set -oue pipefail
# Fix boot entry title and OS identity
sed -i 's|^PRETTY_NAME=.*|PRETTY_NAME="Miasma OS"|' /usr/lib/os-release
sed -i 's|^NAME=.*|NAME="Miasma OS"|' /usr/lib/os-release
sed -i 's|^ID=.*|ID=miasma-os|' /usr/lib/os-release
sed -i 's|^ID_LIKE=.*|ID_LIKE=fedora|' /usr/lib/os-release
sed -i 's|^LOGO=.*|LOGO=distributor-logo|' /usr/lib/os-release
mv /tmp/files/assets/images/distributor-logo.svg /usr/share/icons/hicolor/scalable/places/distributor-logo.svg mv /tmp/files/assets/images/distributor-logo.svg /usr/share/icons/hicolor/scalable/places/distributor-logo.svg
mv /tmp/files/assets/splash/default.jxl /usr/share/backgrounds/default.jxl mv /tmp/files/assets/splash/default.jxl /usr/share/backgrounds/default.jxl
mv /tmp/files/assets/splash/default-dark.jxl /usr/share/backgrounds/default-dark.jxl mv /tmp/files/assets/splash/default-dark.jxl /usr/share/backgrounds/default-dark.jxl
@@ -17,3 +25,16 @@ mv /tmp/files/assets/images/fedora_logo_med.png /usr/share/pixmaps/fedora_logo_m
mv /tmp/files/assets/images/fedora_whitelogo.svg /usr/share/pixmaps/fedora_whitelogo.svg mv /tmp/files/assets/images/fedora_whitelogo.svg /usr/share/pixmaps/fedora_whitelogo.svg
mv /tmp/files/assets/images/fedora_whitelogo_med.png /usr/share/pixmaps/fedora_whitelogo_med.png mv /tmp/files/assets/images/fedora_whitelogo_med.png /usr/share/pixmaps/fedora_whitelogo_med.png
mv /tmp/files/assets/images/system-logo-white.png /usr/share/pixmaps/system-logo-white.png mv /tmp/files/assets/images/system-logo-white.png /usr/share/pixmaps/system-logo-white.png
# Replace EFI boot picker icon (shown before SDDM) with Miasma OS logo
mkdir -p /usr/share/pixmaps/bootloader
python3 -c "
import struct
with open('/usr/share/pixmaps/system-logo-white.png', 'rb') as f:
png_data = f.read()
# ICNS format: embed PNG data directly using ic09 (512x512) slot
entry = b'ic09' + struct.pack('>I', 8 + len(png_data)) + png_data
icns = b'icns' + struct.pack('>I', 8 + len(entry)) + entry
with open('/usr/share/pixmaps/bootloader/fedora.icns', 'wb') as f:
f.write(icns)
"

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env bash
# Replaces the stock Fedora kernel with the CachyOS LTO kernel.
# CachyOS LTO kernel is compiled with Link-Time Optimization and ships
# sched-ext (SCX) support, giving lower latency for realtime audio workloads.
#
# Adapted from the Zena project (https://github.com/zena-linux/zena),
# specifically build-scripts/modules/base/kernel.sh.
# Zena is licensed under the Apache License 2.0.
# Credit to the Zena contributors: https://github.com/zena-linux/zena/graphs/contributors
set -ouex pipefail
shopt -s nullglob
KERNEL_PACKAGES=(
kernel-cachyos-lto
kernel-cachyos-lto-core
kernel-cachyos-lto-devel-matched
kernel-cachyos-lto-modules
)
# Disable kernel-install hooks so they don't trigger inside the container
# build environment. The initramfs will be generated explicitly below.
pushd /usr/lib/kernel/install.d
printf '%s\n' '#!/bin/sh' 'exit 0' >05-rpmostree.install
printf '%s\n' '#!/bin/sh' 'exit 0' >50-dracut.install
chmod +x 05-rpmostree.install 50-dracut.install
popd
# Erase stock Fedora kernel RPMs from the package database
for pkg in kernel kernel-core kernel-modules kernel-modules-core; do
rpm --erase "$pkg" --nodeps || true
done
# Remove ALL existing kernel module directories. The original script used
# `head -n1` which only removed the first entry — on Kinoite's base image
# there are typically two kernel versions, leaving an orphaned module
# directory that confuses rpm-ostree/bootc at deploy time.
for KVER in $(ls /usr/lib/modules 2>/dev/null); do
rm -rf "/usr/lib/modules/$KVER"
done
dnf5 -y install "${KERNEL_PACKAGES[@]}"
dnf5 versionlock add "${KERNEL_PACKAGES[@]}" || true
# Identify the newly installed CachyOS kernel version
NEW_KVER=$(ls /usr/lib/modules | head -n1)
# Ensure vmlinuz is at the path expected by rpm-ostree and bootc for boot
# entry generation. Some COPR kernel RPMs only install vmlinuz to /boot and
# not to /usr/lib/modules/<kver>/vmlinuz; copy it over if missing.
if [ ! -f "/usr/lib/modules/${NEW_KVER}/vmlinuz" ]; then
if [ -f "/boot/vmlinuz-${NEW_KVER}" ]; then
cp "/boot/vmlinuz-${NEW_KVER}" "/usr/lib/modules/${NEW_KVER}/vmlinuz"
else
echo "ERROR: vmlinuz not found for kernel ${NEW_KVER}" >&2
exit 1
fi
fi
# Rebuild kernel module dependency map before generating initramfs.
depmod -a "${NEW_KVER}"
# Generate the initramfs inside the container image so that rpm-ostree and
# bootc can use it directly at deploy time. Without this step, Kinoite boots
# with no initramfs and hits a dracut emergency shell (the "wall of errors").
# --no-hostonly : include all drivers, not just the CI build host's hardware
# --add ostree : include the ostree dracut module for atomic deployments
dracut \
--reproducible \
--no-hostonly \
--add "ostree" \
--filesystems "btrfs" \
--add-drivers "btrfs" \
--force \
"/usr/lib/modules/${NEW_KVER}/initramfs.img" \
"${NEW_KVER}"
# Atomic images manage /boot via the bootloader layer; clear any kernel
# files the RPM dropped there.
rm -rf /boot/*

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

View File

@@ -2,6 +2,7 @@ modules:
- type: dnf - type: dnf
repos: repos:
copr: copr:
- bieszczaders/kernel-cachyos-addons
- patrickl/wine-tkg - patrickl/wine-tkg
- timlau/audio - timlau/audio
- alternateved/eza - alternateved/eza

View File

@@ -1,7 +1,23 @@
modules: modules:
- type: dnf
remove:
packages:
- zram-generator-defaults
- type: dnf - type: dnf
install: install:
packages: packages:
# CachyOS kernel performance companion packages
# cachyos-settings: kernel tunables and sysctl optimisations from CachyOS
# cachyos-ksm-settings: Kernel Samepage Merging tuning (reduces RAM usage)
# scx-manager / scx-scheds / scx-tools: sched-ext schedulers;
# scx_lavd is ideal for low-latency realtime audio workloads
- cachyos-settings
- cachyos-ksm-settings
- scx-manager
- scx-scheds-git
- scx-tools-git
# useful tools # useful tools
- zsh - zsh
- openssl - openssl
@@ -12,7 +28,6 @@ modules:
- alacritty - alacritty
- ripgrep - ripgrep
- fd-find - fd-find
- realtime-setup
- zoxide - zoxide
- fzf - fzf

View File

@@ -3,13 +3,34 @@
# image will be published to ghcr.io/<user>/<name> # image will be published to ghcr.io/<user>/<name>
name: miasma-os name: miasma-os
# description will be included in the image's metadata # description will be included in the image's metadata
description: An personal spin based on Bazzite targeted towards musicians and music producers inspired by Fedora Jam description: An KDE based Universal Blue image targeted towards musicians and music producers inspired by Fedora Jam
# the base image to build on top of (FROM) and the version tag to use # the base image to build on top of (FROM) and the version tag to use
base-image: ghcr.io/ublue-os/bazzite base-image: ghcr.io/ublue-os/aurora
image-version: latest # latest is also supported if you want new updates ASAP image-version: latest
modules: modules:
# Swap stock Fedora kernel for Bazzite kernel
- type: script
scripts:
- bazzite-kernel.sh
# Install SCX scheduler (works with Bazzite kernel's sched-ext support)
- type: dnf
repos:
copr:
- bieszczaders/kernel-cachyos-addons
install:
install-weak-deps: false
packages:
- scx-scheds-git
- scx-manager
- type: systemd
system:
enabled:
- scx_loader.service
- type: dnf - type: dnf
install: install:
packages: packages: