From a675b9e51cbe298a8fbe2e602fd3c6c64e407221 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 17:48:52 +0900 Subject: [PATCH 01/11] Add Niri --- build_files/build.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index c4840db..4c884ed 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -26,10 +26,10 @@ sed -i -e '/^metalink\=/s/\$releasever\&arch\=\$basearch$/\$releasever\&arch\=\$ # Add 1Password repo #rpmkeys --import https://downloads.1password.com/linux/keys/1password.asc -cp /ctx/rpm-keys/1password.asc /etc/pki/rpm-gpg/1password.asc +cp /ctx/rpm-keys/1password.asc /etc/pki/rpm-gpg/1password.asc sh -c 'echo -e "[1password]\nname=1Password Stable Channel\nbaseurl=https://downloads.1password.com/linux/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=\"file:///etc/pki/rpm-gpg/1password.asc\"" > /etc/yum.repos.d/1password.repo' -# Add Tailscale repo +# Add Tailscale repo #rpmkeys --import https://pkgs.tailscale.com/stable/fedora/repo.gpg #dnf5 config-manager addrepo --from-repofile=https://pkgs.tailscale.com/stable/fedora/tailscale.repo cp /ctx/rpm-keys/tailscale.gpg /etc/pki/rpm-gpg/tailscale.gpg @@ -46,6 +46,15 @@ dnf5 install -y \ 1password 1password-cli \ tailscale +# Install Niri, the scrollable-tiling window compositor +# https://yalter.github.io/niri/ +dnf5 -y copr enable avengemedia/dms +dnf5 -y install niri dms +systemctl --user add-wants niri.service dms +dnf5 -y copr disable avengemedia/dms + +## CLEANUP + # Delete 1Password and Tailscale repos once packages are installed # so they don't end up in the final image. rm \ @@ -71,7 +80,6 @@ rm \ #flatpak remote-delete --force fedora #flatpak remote-delete --force fedora-testing - # TODO: Add flathub remove, enable, and remove filter # TODO: Install core GNOME Flatpak apps # TODO: Install my own commonly used Flatpak apps @@ -85,7 +93,5 @@ rm \ # Disable COPRs so they don't end up enabled on the final image: # dnf5 -y copr disable ublue-os/staging -#### Example for enabling a System Unit File - -# systemctl enable podman.socket +# Enable Tailscale service systemctl enable tailscaled -- 2.49.1 From 3174916dfdf428b0306fd44c86a07e161413d7e3 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 19:02:06 +0900 Subject: [PATCH 02/11] Non-user add-wants? --- build_files/build.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index c4094b1..869185f 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -96,7 +96,7 @@ dnf5 install -y \ # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms -systemctl --user add-wants niri.service dms +systemctl add-wants niri.service dms dnf5 -y copr disable avengemedia/dms ## CLEANUP @@ -131,13 +131,6 @@ mv -f /usr/lib/systemd/system/flatpak-add-flathub-repos.service /usr/lib/systemd # IDEA: Can I set certain dconf settings, like Ptyxis config, temperature settings, etc? # IDEA: Can I set certain Flatpak system defaults (ie. no read/write anywhere by default) -# Use a COPR Example: -# -# dnf5 -y copr enable ublue-os/staging -# dnf5 -y install package -# Disable COPRs so they don't end up enabled on the final image: -# dnf5 -y copr disable ublue-os/staging - # Enable Tailscale service systemctl enable tailscaled -- 2.49.1 From 4656aa1e8594269a0a5cd98e0923c4c4e520676a Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 19:12:57 +0900 Subject: [PATCH 03/11] Exclude add-wants command for now --- build_files/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/build.sh b/build_files/build.sh index 869185f..ec07c52 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -96,7 +96,7 @@ dnf5 install -y \ # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms -systemctl add-wants niri.service dms +#systemctl add-wants niri.service dms dnf5 -y copr disable avengemedia/dms ## CLEANUP -- 2.49.1 From 1688c213d4524c9bdbb7d8b409910a91136aa1c3 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 19:35:48 +0900 Subject: [PATCH 04/11] Test: Enable niri service and *then* add-wants --- build_files/build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build_files/build.sh b/build_files/build.sh index ec07c52..c167d0c 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -96,9 +96,11 @@ dnf5 install -y \ # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms -#systemctl add-wants niri.service dms dnf5 -y copr disable avengemedia/dms +systemctl enable niri.service +systemctl add-wants niri.service dms + ## CLEANUP # Delete 1Password and Tailscale repos once packages are installed -- 2.49.1 From 5bab3226dc0bc8dae4f95133ca9924395ced2611 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 19:46:19 +0900 Subject: [PATCH 05/11] Attempt to force `niri` install from its copr --- build_files/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/build.sh b/build_files/build.sh index c167d0c..e9182b1 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -95,7 +95,7 @@ dnf5 install -y \ # Install Niri, the scrollable-tiling window compositor # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms -dnf5 -y install niri dms +dnf5 -y install --disablerepo="*" --enablerepo="avengemedia-dms" niri dms dnf5 -y copr disable avengemedia/dms systemctl enable niri.service -- 2.49.1 From 9aaaf0fea060d2c246308d7dd290bbf7a2f05b0a Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 19:55:35 +0900 Subject: [PATCH 06/11] Repo name? --- build_files/build.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build_files/build.sh b/build_files/build.sh index e9182b1..600d2a5 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -95,7 +95,10 @@ dnf5 install -y \ # Install Niri, the scrollable-tiling window compositor # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms -dnf5 -y install --disablerepo="*" --enablerepo="avengemedia-dms" niri dms +dnf5 -y install \ + --disablerepo="*" \ + --enablerepo="coprdep:copr.fedorainfracloud.org:avengemedia:danklinux" \ + niri dms dnf5 -y copr disable avengemedia/dms systemctl enable niri.service -- 2.49.1 From d95067604275485938b5436444983ed85576db40 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 21:08:36 +0900 Subject: [PATCH 07/11] More `add-wants` related fiddling. --- build_files/build.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index 600d2a5..b1fc18c 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -95,14 +95,13 @@ dnf5 install -y \ # Install Niri, the scrollable-tiling window compositor # https://yalter.github.io/niri/ dnf5 -y copr enable avengemedia/dms -dnf5 -y install \ - --disablerepo="*" \ - --enablerepo="coprdep:copr.fedorainfracloud.org:avengemedia:danklinux" \ - niri dms +dnf5 -y install niri dms dnf5 -y copr disable avengemedia/dms -systemctl enable niri.service -systemctl add-wants niri.service dms +# systemctl enable niri.service +systemctl daemon-reload +systemctl enable --user niri.service +systemctl add-wants --user niri.service dms ## CLEANUP -- 2.49.1 From f3528ee7c585d39e3e1ebf95d2f3dd28b367a7ef Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 13 Nov 2025 21:13:34 +0900 Subject: [PATCH 08/11] Well, giving up on this for `add-wants` stuff for now. --- build_files/build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index b1fc18c..ccabdc0 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -99,9 +99,8 @@ dnf5 -y install niri dms dnf5 -y copr disable avengemedia/dms # systemctl enable niri.service -systemctl daemon-reload -systemctl enable --user niri.service -systemctl add-wants --user niri.service dms +#systemctl enable --user niri.service +#systemctl add-wants --user niri.service dms ## CLEANUP -- 2.49.1 From 0c4bcb9c1ee970ccceb52b0a30b22b0d54f78d76 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Tue, 20 Jan 2026 12:40:56 +0900 Subject: [PATCH 09/11] [TEST] Set system-wide add-wants for Niri --- build_files/build.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index 7cc2158..cc048b4 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -109,9 +109,7 @@ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms dnf5 -y copr disable avengemedia/dms -# systemctl enable niri.service -#systemctl enable --user niri.service -#systemctl add-wants --user niri.service dms +systemctl add-wants niri.service dms ## CLEANUP -- 2.49.1 From ee6acb7792059253e922c9c52ba68f6761d830e5 Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Tue, 20 Jan 2026 13:21:41 +0900 Subject: [PATCH 10/11] Don't want dms for now, let's try that as a post-install step --- build_files/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/build.sh b/build_files/build.sh index cc048b4..ddb1269 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -109,7 +109,7 @@ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms dnf5 -y copr disable avengemedia/dms -systemctl add-wants niri.service dms +#systemctl add-wants niri.service dms ## CLEANUP -- 2.49.1 From 87b64e24c661df0e795d49136c8c7ba8a781d01e Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Tue, 20 Jan 2026 14:35:29 +0900 Subject: [PATCH 11/11] Move more cleanup steps to `cleanup.sh` --- build_files/build.sh | 53 ------------------------------------------ build_files/cleanup.sh | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 53 deletions(-) diff --git a/build_files/build.sh b/build_files/build.sh index ddb1269..6d98b3a 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -109,60 +109,7 @@ dnf5 -y copr enable avengemedia/dms dnf5 -y install niri dms dnf5 -y copr disable avengemedia/dms -#systemctl add-wants niri.service dms - -## CLEANUP - -# Delete 1Password and Tailscale repos once packages are installed -# so they don't end up in the final image, and don't raise an error if any of -# these files does not exist when attempting to delete them. -rm \ - /etc/yum.repos.d/1password.repo \ - /etc/yum.repos.d/tailscale.repo \ - /etc/pki/rpm-gpg/1password.asc \ - /etc/pki/rpm-gpg/tailscale.gpg \ - 2>&1 - -# Or just disable: -# dnf5 config-manager setopt 1password.enabled=0 tailscale-stable.enabled=0 -# sed -i 's/enabled=1/enabled=0/' \ -# /etc/yum.repos.d/1password.repo \ -# /etc/yum.repos.d/tailscale.repo \ - -# Fedora Flatpak service is a part of the flatpak package, ensure it's overridden by moving to replace it at the end of the build. -mv -f /usr/lib/systemd/system/flatpak-add-flathub-repos.service /usr/lib/systemd/system/flatpak-add-fedora-repos.service - -# Re-install all pre-installed (GNOME) applications from Flathub -#flatpak install --reinstall flathub "$(flatpak list --app-runtime=org.fedoraproject.Platform --columns=application | tail -n +1 )" - -# ...and remove the fedora flatpak remotes -#flatpak remote-delete --force fedora -#flatpak remote-delete --force fedora-testing - -# TODO: Add flathub remove, enable, and remove filter -# TODO: Install core GNOME Flatpak apps -# TODO: Install my own commonly used Flatpak apps -# IDEA: Can I set certain dconf settings, like Ptyxis config, temperature settings, etc? -# IDEA: Can I set certain Flatpak system defaults (ie. no read/write anywhere by default) - # Enable Tailscale service systemctl enable tailscaled -# Cleanup - -# Remove dnf5 versionlocks -dnf5 versionlock clear - -# Remove tmp files and everything in dirs that make bootc unhappy -rm -rf /tmp/* || true -rm -rf /usr/etc -rm -rf /boot && mkdir /boot -# Preserve cache mounts -find /var/* -maxdepth 0 -type d \! -name cache \! -name log -exec rm -rf {} \; -find /var/cache/* -maxdepth 0 -type d \! -name libdnf5 -exec rm -rf {} \; - -# Make sure /var/tmp is properly created -mkdir -p /var/tmp -chmod -R 1777 /var/tmp - echo "Done." diff --git a/build_files/cleanup.sh b/build_files/cleanup.sh index 5828eec..72f3277 100755 --- a/build_files/cleanup.sh +++ b/build_files/cleanup.sh @@ -2,6 +2,53 @@ set -ouex pipefail +# Delete 1Password and Tailscale repos once packages are installed +# so they don't end up in the final image, and don't raise an error if any of +# these files does not exist when attempting to delete them. +rm \ + /etc/yum.repos.d/1password.repo \ + /etc/yum.repos.d/tailscale.repo \ + /etc/pki/rpm-gpg/1password.asc \ + /etc/pki/rpm-gpg/tailscale.gpg \ + 2>&1 + +# Or just disable: +# dnf5 config-manager setopt 1password.enabled=0 tailscale-stable.enabled=0 +# sed -i 's/enabled=1/enabled=0/' \ +# /etc/yum.repos.d/1password.repo \ +# /etc/yum.repos.d/tailscale.repo \ + +# Fedora Flatpak service is a part of the flatpak package, ensure it's overridden by moving to replace it at the end of the build. +mv -f /usr/lib/systemd/system/flatpak-add-flathub-repos.service /usr/lib/systemd/system/flatpak-add-fedora-repos.service + +# Re-install all pre-installed (GNOME) applications from Flathub +#flatpak install --reinstall flathub "$(flatpak list --app-runtime=org.fedoraproject.Platform --columns=application | tail -n +1 )" + +# ...and remove the fedora flatpak remotes +#flatpak remote-delete --force fedora +#flatpak remote-delete --force fedora-testing + +# TODO: Add flathub remove, enable, and remove filter +# TODO: Install core GNOME Flatpak apps +# TODO: Install my own commonly used Flatpak apps +# IDEA: Can I set certain dconf settings, like Ptyxis config, temperature settings, etc? +# IDEA: Can I set certain Flatpak system defaults (ie. no read/write anywhere by default) + +# Remove dnf5 versionlocks +dnf5 versionlock clear + +# Remove tmp files and everything in dirs that make bootc unhappy +rm -rf /tmp/* || true +rm -rf /usr/etc +rm -rf /boot && mkdir /boot +# Preserve cache mounts +find /var/* -maxdepth 0 -type d \! -name cache \! -name log -exec rm -rf {} \; +find /var/cache/* -maxdepth 0 -type d \! -name libdnf5 -exec rm -rf {} \; + +# Make sure /var/tmp is properly created +mkdir -p /var/tmp +chmod -R 1777 /var/tmp + ## Handle files that rpm-ostree would normally remove ## Adapted from: https://github.com/hhd-dev/rechunk/blob/master/1_prune.sh#L33 -- 2.49.1