From e21ec3d39e19878b07ef5d47a54c7d287f5d2a73 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:18:02 -0400 Subject: [PATCH 01/34] First version --- .../dx/quadlets/incus-quadlet.container | 18 ++++++++ .../dx/quadlets/libvirt-quadlet.container | 33 +++++++++++++ .../ublue-os/dx/units/brew-containerd.service | 23 ++++++++++ .../ublue-os/dx/units/brew-dockerd.service | 26 +++++++++++ .../share/ublue-os/homebrew/dx-next.Brewfile | 34 ++++++++++++++ .../shared/usr/share/ublue-os/just/apps.just | 46 +++++++++++++++++++ 6 files changed, 180 insertions(+) create mode 100644 system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container create mode 100644 system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container create mode 100644 system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service create mode 100644 system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service create mode 100644 system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container new file mode 100644 index 00000000..00557795 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container @@ -0,0 +1,18 @@ +[Unit] +Description=Incus Container Service +After=network-online.target + +[Container] +Image=ghcr.io/cmspam/incus-docker:nightly +AutoUpdate=registry +ContainerName=incus +PodmanArgs=--privileged --cgroupns=host --security-opt unmask=/sys/fs/cgroup --pid=host +Network=host + +# Volume mappings +Volume=/dev:/dev +Volume=/var/lib/incus:/var/lib/incus +Volume=/lib/modules:/lib/modules:ro + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container new file mode 100644 index 00000000..30c738b7 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -0,0 +1,33 @@ +[Unit] +Description=Libvirt Service in Podman +After=network-online.target + +[Container] +Image=ghcr.io/jumpyvi/qemu-box:latest +Network=host + +PodmanArgs=--privileged --cgroupns=host --security-opt label=disable --pid=host + +# Dbus +Mount=type=bind,source=/var/run/dbus/system_bus_socket,destination=/run/dbus/system_bus_socket + +# UDev +Mount=type=bind,source=/var/run/udev,destination=/run/udev,ro + +# KVM & USB Devices +AddDevice=/dev/kvm +AddDevice=/dev/bus/usb +Mount=type=bind,source=/var/run/libvirt-quadlet,destination=/run/libvirt + +# Storage +Mount=type=bind,source=/var/lib/libvirt/images,destination=/var/lib/libvirt/images +Mount=type=bind,source=/var/lib/libvirt-quadlet,destination=/var/lib/libvirt +Mount=type=bind,source=/etc/libvirt-quadlet,destination=/etc/libvirt + +Exec=sh -c "virtlogd -d && libvirtd" + +[Install] +WantedBy=multi-user.target + +[Service] +RuntimeDirectory=libvirt-quadlet \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service b/system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service new file mode 100644 index 00000000..dfa9bba8 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service @@ -0,0 +1,23 @@ +[Unit] +Description=containerd container runtime (brew) +Documentation=https://containerd.io +After=network.target local-fs.target dbus.service + +[Service] +ExecStart=/bin/bash -c "env PATH="$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" /home/linuxbrew/.linuxbrew/bin/containerd" + +Type=simple +Delegate=yes +KillMode=process +Restart=always +RestartSec=5 + +LimitNPROC=infinity +LimitCORE=infinity +LimitNOFILE=infinity + +TasksMax=infinity +OOMScoreAdjust=-999 + +[Install] +WantedBy=multi-user.target diff --git a/system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service b/system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service new file mode 100644 index 00000000..eba78a00 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service @@ -0,0 +1,26 @@ +[Unit] +Description=Docker Application Container Engine (brew) +Documentation=https://docs.docker.com/ + +[Service] +ExecStart=/bin/bash -c "env PATH='$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin' /home/linuxbrew/.linuxbrew/bin/dockerd" +ExecReload=/bin/kill -s HUP $MAINPID + +Type=notify +NotifyAccess=all +KillMode=mixed +Delegate=yes + +Restart=always +RestartSec=2 +StartLimitBurst=3 +StartLimitInterval=60s + +TimeoutSec=0 +LimitNOFILE=infinity +LimitNPROC=infinity +LimitCORE=infinity +TasksMax=infinity + +[Install] +WantedBy=default.target diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile new file mode 100644 index 00000000..a87a27d9 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -0,0 +1,34 @@ +cask "ublue-os/experimental-tap/dockerd" +cask "ublue-os/tap/vscode-linux" +cask "adb" +flatpak "org.flatpak.Builder" +brew "git-svn" +brew "git-subrepo" +brew "bpftop" +brew "numactl" +brew "p7zip" +brew "podman-compose" +brew "podman-tui" +brew "sysprof" +brew "ublue-os/experimental-tap/ydotool" +flatpak "org.virt_manager.virt-manager" +flatpak "org.virt_manager.virt_manager.Extension.Qemu" + +# New +brew "lima" +brew "kind" +brew "incus" +vscode "ms-vscode-remote.remote-containers" + +# Wall of shame +#cockpit +#iotop +#bcc +#bpftrace +#fonts todo +#nicstat +#osbuild-selinux +#podman-machine +#tiptop +#udica +#util-linux-script \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 0fc4d1c9..149998fe 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -73,3 +73,49 @@ cncf: fi fi bbrew -f "/usr/share/ublue-os/homebrew/cncf.Brewfile" + +# Experimental DX mode +dx-next: + #!/usr/bin/env bash + if ! gum confirm "Enter experimental DX mode?" ; then + exit 0 + fi + + gum style --foreground 212 "󱗼 Initializing DX-Next environment..." + brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile + + sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ + sudo systemctl enable brew-containerd + sudo systemctl enable brew-dockerd + + /home/linuxbrew/.linuxbrew/bin/docker context use default + + current=$(groups "$USER") + missing=() + for group in libvirt docker incus-admin; do + echo "$current" | grep -qw "$group" || missing+=("$group") + done + + if [ ${#missing[@]} -ne 0 ]; then + gum format -- "Adding $USER to: **${missing[*]}**" + gum style --foreground 220 "⏻ Please reboot when the script is finished to apply group changes." + sudo mkdir -p /etc/sysusers.d/ + printf "m %s %s\n" "$USER" "${missing[@]}" | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null + sudo systemd-sysusers /etc/sysusers.d/dx-groups.conf + fi + SOCKET_DIR="/run/libvirt-quadlet" + echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules + sudo mkdir -p /var/lib/images /var/lib/libvirt-quadlet /etc/libvirt-quadlet "$SOCKET_DIR" + sudo chmod 775 "$SOCKET_DIR" + sudo firewall-cmd --permanent --new-zone=libvirt + sudo firewall-cmd --permanent --zone=libvirt --set-target=ACCEPT + sudo firewall-cmd --reload + + sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ + sudo systemctl enable libvirt-quadlet + + gum style --foreground 39 " Incus is available, but not started by default." + gum format -- "Use \`systemctl start incus-quadlet\` to start it." + + gum style --border normal --margin "1 2" --padding "1 2" --border-foreground 212 \ + "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord!" From 0df05a1f61d42aa9443d58cf5711690d2a567a5b Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:45:45 -0400 Subject: [PATCH 02/34] Fix sysusers script --- system_files/shared/usr/share/ublue-os/just/apps.just | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 149998fe..ef4fa5c8 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -100,7 +100,7 @@ dx-next: gum format -- "Adding $USER to: **${missing[*]}**" gum style --foreground 220 "⏻ Please reboot when the script is finished to apply group changes." sudo mkdir -p /etc/sysusers.d/ - printf "m %s %s\n" "$USER" "${missing[@]}" | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null + for group in "${missing[@]}"; do echo "m $USER $group"; done | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null sudo systemd-sysusers /etc/sysusers.d/dx-groups.conf fi SOCKET_DIR="/run/libvirt-quadlet" From 61fe3e177d5a76e8dfe7433b5d6103c81b25ffb2 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:51:17 -0400 Subject: [PATCH 03/34] Add links --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 2 +- system_files/shared/usr/share/ublue-os/just/apps.just | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index a87a27d9..5c26e8e2 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -1,6 +1,6 @@ cask "ublue-os/experimental-tap/dockerd" cask "ublue-os/tap/vscode-linux" -cask "adb" +cask "android-platform-tools" flatpak "org.flatpak.Builder" brew "git-svn" brew "git-subrepo" diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index ef4fa5c8..714fb753 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -117,5 +117,8 @@ dx-next: gum style --foreground 39 " Incus is available, but not started by default." gum format -- "Use \`systemctl start incus-quadlet\` to start it." - gum style --border normal --margin "1 2" --padding "1 2" --border-foreground 212 \ - "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord!" + gum style --border normal --border-foreground 212 \ + "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord! + +󰙯 https://discord.gg/8RZGC3uFzA + https://github.com/projectbluefin/common" From d45c7f301922a6b5847a4b548fa5e58098585e6f Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:53:17 -0400 Subject: [PATCH 04/34] Add auto-updates to libvirt quadlet --- .../usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container index 30c738b7..e877d61b 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -4,6 +4,7 @@ After=network-online.target [Container] Image=ghcr.io/jumpyvi/qemu-box:latest +AutoUpdate=registry Network=host PodmanArgs=--privileged --cgroupns=host --security-opt label=disable --pid=host @@ -30,4 +31,4 @@ Exec=sh -c "virtlogd -d && libvirtd" WantedBy=multi-user.target [Service] -RuntimeDirectory=libvirt-quadlet \ No newline at end of file +RuntimeDirectory=libvirt-quadlet From bb35bbdbb39fd18f6f686cb9a8e251244d8aa545 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 11:04:16 -0400 Subject: [PATCH 05/34] Fix bundle --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 5c26e8e2..3fefa71b 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -1,5 +1,8 @@ -cask "ublue-os/experimental-tap/dockerd" -cask "ublue-os/tap/vscode-linux" +tap "ublue-os/experimental-tap" +tap "ublue-os/tap" + +cask "ublue-os/experimental-tap/dockerd-linux" +cask "ublue-os/tap/visual-studio-code-linux" cask "android-platform-tools" flatpak "org.flatpak.Builder" brew "git-svn" From 1663c496329fcc9c5be688feddedb515836fd840 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Mon, 20 Apr 2026 11:16:41 -0400 Subject: [PATCH 06/34] Reload daemon before enabling --- system_files/shared/usr/share/ublue-os/just/apps.just | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 714fb753..4aa91929 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -85,6 +85,7 @@ dx-next: brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ + sudo systemctl daemon-reload sudo systemctl enable brew-containerd sudo systemctl enable brew-dockerd @@ -112,6 +113,7 @@ dx-next: sudo firewall-cmd --reload sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ + sudo systemctl daemon-reload sudo systemctl enable libvirt-quadlet gum style --foreground 39 " Incus is available, but not started by default." From 3d9346e267b0bcfe23dd409e6c85fbd7547805e7 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Mon, 20 Apr 2026 17:22:05 -0400 Subject: [PATCH 07/34] Remove /etc bind mount --- .../usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container index e877d61b..2da99a91 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -23,7 +23,8 @@ Mount=type=bind,source=/var/run/libvirt-quadlet,destination=/run/libvirt # Storage Mount=type=bind,source=/var/lib/libvirt/images,destination=/var/lib/libvirt/images Mount=type=bind,source=/var/lib/libvirt-quadlet,destination=/var/lib/libvirt -Mount=type=bind,source=/etc/libvirt-quadlet,destination=/etc/libvirt +# Removed for now, causes issues +#Mount=type=bind,source=/etc/libvirt-quadlet,destination=/etc/libvirt Exec=sh -c "virtlogd -d && libvirtd" From 29c9bc9c6546e655f5a83733445a95e37b82af71 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 11:29:46 -0400 Subject: [PATCH 08/34] Fix formating --- system_files/shared/usr/share/ublue-os/just/apps.just | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 4aa91929..214f189b 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -122,5 +122,5 @@ dx-next: gum style --border normal --border-foreground 212 \ "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord! -󰙯 https://discord.gg/8RZGC3uFzA - https://github.com/projectbluefin/common" + 󰙯 https://discord.gg/8RZGC3uFzA +  https://github.com/projectbluefin/common" From 3ba5141e5836ecbfa8d420f6366ee308cc7a01c1 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 11:37:19 -0400 Subject: [PATCH 09/34] Add missing path --- system_files/shared/usr/share/ublue-os/just/apps.just | 1 + 1 file changed, 1 insertion(+) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 214f189b..c50fb562 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -112,6 +112,7 @@ dx-next: sudo firewall-cmd --permanent --zone=libvirt --set-target=ACCEPT sudo firewall-cmd --reload + sudo mkdir -p /etc/containers/systemd/ sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ sudo systemctl daemon-reload sudo systemctl enable libvirt-quadlet From 01c18363538b077a2b06d522e855bb20052deb08 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 11:42:43 -0400 Subject: [PATCH 10/34] Add missing libvirt steps --- system_files/shared/usr/share/ublue-os/just/apps.just | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index c50fb562..61df3623 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -113,9 +113,10 @@ dx-next: sudo firewall-cmd --reload sudo mkdir -p /etc/containers/systemd/ + sudo mkdir -p /var/lib/libvirt/images/ sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ sudo systemctl daemon-reload - sudo systemctl enable libvirt-quadlet + sudo systemctl start libvirt-quadlet gum style --foreground 39 " Incus is available, but not started by default." gum format -- "Use \`systemctl start incus-quadlet\` to start it." @@ -125,3 +126,6 @@ dx-next: 󰙯 https://discord.gg/8RZGC3uFzA  https://github.com/projectbluefin/common" + + flatpak override --user --filesystem=/run/libvirt-quadlet org.virt_manager.VirtManager + flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-quadlet/libvirt-sock" From c75c8491e3c925d35fa12382626573c282fb0b74 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 11:55:53 -0400 Subject: [PATCH 11/34] Fix flatpak package name --- system_files/shared/usr/share/ublue-os/just/apps.just | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 61df3623..e5e72134 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -127,5 +127,5 @@ dx-next: 󰙯 https://discord.gg/8RZGC3uFzA  https://github.com/projectbluefin/common" - flatpak override --user --filesystem=/run/libvirt-quadlet org.virt_manager.VirtManager + flatpak override --user --filesystem=/run/libvirt-quadlet org.virt_manager.virt-manager flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-quadlet/libvirt-sock" From 1bb7864f7b669ae86ed1fcc46fc482696fea8e3d Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 20:04:14 -0400 Subject: [PATCH 12/34] Add virtgl support --- .../share/ublue-os/dx/quadlets/libvirt-quadlet.container | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container index 2da99a91..e036ea8d 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -15,16 +15,14 @@ Mount=type=bind,source=/var/run/dbus/system_bus_socket,destination=/run/dbus/sys # UDev Mount=type=bind,source=/var/run/udev,destination=/run/udev,ro -# KVM & USB Devices +# KVV, USB Devices and OpenGL AddDevice=/dev/kvm AddDevice=/dev/bus/usb +Mount=type=bind,source=/dev/dri,destination=/dev/dri Mount=type=bind,source=/var/run/libvirt-quadlet,destination=/run/libvirt # Storage -Mount=type=bind,source=/var/lib/libvirt/images,destination=/var/lib/libvirt/images Mount=type=bind,source=/var/lib/libvirt-quadlet,destination=/var/lib/libvirt -# Removed for now, causes issues -#Mount=type=bind,source=/etc/libvirt-quadlet,destination=/etc/libvirt Exec=sh -c "virtlogd -d && libvirtd" @@ -32,4 +30,4 @@ Exec=sh -c "virtlogd -d && libvirtd" WantedBy=multi-user.target [Service] -RuntimeDirectory=libvirt-quadlet +RuntimeDirectory=libvirt-quadlet \ No newline at end of file From c1b1a9851bf8ded051a444d8ed6d75c760740338 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 20:40:34 -0400 Subject: [PATCH 13/34] make /etc/libvirt persistant on restart --- .../usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container | 1 + 1 file changed, 1 insertion(+) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container index e036ea8d..4acc492e 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -23,6 +23,7 @@ Mount=type=bind,source=/var/run/libvirt-quadlet,destination=/run/libvirt # Storage Mount=type=bind,source=/var/lib/libvirt-quadlet,destination=/var/lib/libvirt +Volume=libvirt-conf:/etc/libvirt:Z Exec=sh -c "virtlogd -d && libvirtd" From cf455ea5ce5216683cff2ce19bc3c7321f3054a5 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 21:28:51 -0400 Subject: [PATCH 14/34] Fix cask not support by linux --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 3fefa71b..2789954d 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -1,8 +1,8 @@ tap "ublue-os/experimental-tap" tap "ublue-os/tap" -cask "ublue-os/experimental-tap/dockerd-linux" -cask "ublue-os/tap/visual-studio-code-linux" +brew "ublue-os/experimental-tap/dockerd-linux" +brew "ublue-os/tap/visual-studio-code-linux" cask "android-platform-tools" flatpak "org.flatpak.Builder" brew "git-svn" From 51746d82c1cba1fe1511a2a2a87f246bb4e37781 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 21:32:23 -0400 Subject: [PATCH 15/34] Remove sysprof for now --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 2789954d..a5d68ad0 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -12,7 +12,7 @@ brew "numactl" brew "p7zip" brew "podman-compose" brew "podman-tui" -brew "sysprof" +#brew "sysprof" brew "ublue-os/experimental-tap/ydotool" flatpak "org.virt_manager.virt-manager" flatpak "org.virt_manager.virt_manager.Extension.Qemu" From b083d22ac62782d4bfb350446253afcc73e0f370 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 21:52:50 -0400 Subject: [PATCH 16/34] Fork virt-man --- system_files/shared/usr/share/ublue-os/just/apps.just | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index e5e72134..db48784a 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -128,4 +128,4 @@ dx-next:  https://github.com/projectbluefin/common" flatpak override --user --filesystem=/run/libvirt-quadlet org.virt_manager.virt-manager - flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-quadlet/libvirt-sock" + flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-quadlet/libvirt-sock" & From 38161a9d4a8d63eabc76b46489dc55f3b74fcfad Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 21:59:24 -0400 Subject: [PATCH 17/34] Remove ydotool --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index a5d68ad0..880f0786 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -13,7 +13,7 @@ brew "p7zip" brew "podman-compose" brew "podman-tui" #brew "sysprof" -brew "ublue-os/experimental-tap/ydotool" +#brew "ublue-os/experimental-tap/ydotool" flatpak "org.virt_manager.virt-manager" flatpak "org.virt_manager.virt_manager.Extension.Qemu" From cb0ce9763585232d27f2d57383f7acba675404e3 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 22:05:40 -0400 Subject: [PATCH 18/34] Firewall fixes --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 4 ++-- system_files/shared/usr/share/ublue-os/just/apps.just | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 880f0786..6469a779 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -1,8 +1,8 @@ tap "ublue-os/experimental-tap" tap "ublue-os/tap" -brew "ublue-os/experimental-tap/dockerd-linux" -brew "ublue-os/tap/visual-studio-code-linux" +#brew "ublue-os/experimental-tap/dockerd-linux" +#brew "ublue-os/tap/visual-studio-code-linux" cask "android-platform-tools" flatpak "org.flatpak.Builder" brew "git-svn" diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index db48784a..558d28f3 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -83,6 +83,8 @@ dx-next: gum style --foreground 212 "󱗼 Initializing DX-Next environment..." brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile + brew install --cask ublue-os/tap/visual-studio-code-linux + brew install --cask ublue-os/experimental-tap/dockerd-linux sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ sudo systemctl daemon-reload @@ -108,7 +110,10 @@ dx-next: echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules sudo mkdir -p /var/lib/images /var/lib/libvirt-quadlet /etc/libvirt-quadlet "$SOCKET_DIR" sudo chmod 775 "$SOCKET_DIR" + + if ! sudo firewall-cmd --permanent --get-zones | grep -qw libvirt; then sudo firewall-cmd --permanent --new-zone=libvirt + fi sudo firewall-cmd --permanent --zone=libvirt --set-target=ACCEPT sudo firewall-cmd --reload From c7e419bbd4e6b3bdf66b14400cbb24a9ff95eeab Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Tue, 21 Apr 2026 22:06:37 -0400 Subject: [PATCH 19/34] add iptables --- system_files/shared/usr/share/ublue-os/just/apps.just | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 558d28f3..0cdb3ef6 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -86,6 +86,9 @@ dx-next: brew install --cask ublue-os/tap/visual-studio-code-linux brew install --cask ublue-os/experimental-tap/dockerd-linux + #Remove this when my PR to experimental-tap is merged + brew install iptables + sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable brew-containerd From cb51b104454b14124874791bfad7c0bc7648badc Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Wed, 22 Apr 2026 16:46:00 -0400 Subject: [PATCH 20/34] re-add ydotool --- .../shared/usr/share/ublue-os/homebrew/dx-next.Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 6469a779..0f1061e8 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -13,7 +13,7 @@ brew "p7zip" brew "podman-compose" brew "podman-tui" #brew "sysprof" -#brew "ublue-os/experimental-tap/ydotool" +brew "ublue-os/experimental-tap/ydotool" flatpak "org.virt_manager.virt-manager" flatpak "org.virt_manager.virt_manager.Extension.Qemu" From 024e916349b02c6f434c84584c15211c51d6f601 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Wed, 22 Apr 2026 17:35:30 -0400 Subject: [PATCH 21/34] ootb incus setup --- .../usr/share/ublue-os/dx/quadlets/incus-quadlet.container | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container index 00557795..6882f157 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container @@ -15,4 +15,8 @@ Volume=/var/lib/incus:/var/lib/incus Volume=/lib/modules:/lib/modules:ro [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target + +[Service] +StateDirectory=incus +ExecStartPost=bash -c 'until [ -S /var/lib/incus/unix.socket ]; do sleep 0.2; done; chgrp incus-admin /var/lib/incus/unix.socket' \ No newline at end of file From 8f017e737ca94889aed7c608fc528e65f1edc3ff Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Wed, 22 Apr 2026 17:46:00 -0400 Subject: [PATCH 22/34] Add acceleration support --- .../usr/share/ublue-os/dx/quadlets/incus-quadlet.container | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container index 6882f157..14f963a1 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container @@ -14,6 +14,10 @@ Volume=/dev:/dev Volume=/var/lib/incus:/var/lib/incus Volume=/lib/modules:/lib/modules:ro +AddDevice=/dev/kvm +AddDevice=/dev/bus/usb +Mount=type=bind,source=/dev/dri,destination=/dev/dri + [Install] WantedBy=multi-user.target From da51a97c774f7033be7a46ab497048529eef3f3f Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Wed, 22 Apr 2026 19:31:26 -0400 Subject: [PATCH 23/34] Rename everything for consistency --- .../ublue-os/dx/quadlets/cockpit-dx.container | 15 +++++++++++ ...s-quadlet.container => incus-dx.container} | 0 .../dx/quadlets/libvirt-quadlet.container | 6 ++--- ...ntainerd.service => containerd-dx.service} | 0 ...rew-dockerd.service => dockerd-dx.service} | 0 .../shared/usr/share/ublue-os/just/apps.just | 25 +++++++++++-------- 6 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 system_files/shared/usr/share/ublue-os/dx/quadlets/cockpit-dx.container rename system_files/shared/usr/share/ublue-os/dx/quadlets/{incus-quadlet.container => incus-dx.container} (100%) rename system_files/shared/usr/share/ublue-os/dx/units/{brew-containerd.service => containerd-dx.service} (100%) rename system_files/shared/usr/share/ublue-os/dx/units/{brew-dockerd.service => dockerd-dx.service} (100%) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/cockpit-dx.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/cockpit-dx.container new file mode 100644 index 00000000..2b4aed6a --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/cockpit-dx.container @@ -0,0 +1,15 @@ +[Unit] +Description=Cockpit Web Service +After=network-online.target +Wants=network-online.target sshd.service + +[Container] +Image=quay.io/cockpit/ws:latest +ContainerName=cockpit-ws +Volume=/:/host:rslave +PodmanArgs=--privileged --pid=host + +Network=host + +[Install] +WantedBy=multi-user.target diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/incus-dx.container similarity index 100% rename from system_files/shared/usr/share/ublue-os/dx/quadlets/incus-quadlet.container rename to system_files/shared/usr/share/ublue-os/dx/quadlets/incus-dx.container diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container index 4acc492e..bc96a5da 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container @@ -19,10 +19,10 @@ Mount=type=bind,source=/var/run/udev,destination=/run/udev,ro AddDevice=/dev/kvm AddDevice=/dev/bus/usb Mount=type=bind,source=/dev/dri,destination=/dev/dri -Mount=type=bind,source=/var/run/libvirt-quadlet,destination=/run/libvirt +Mount=type=bind,source=/var/run/libvirt-dx,destination=/run/libvirt # Storage -Mount=type=bind,source=/var/lib/libvirt-quadlet,destination=/var/lib/libvirt +Mount=type=bind,source=/var/lib/libvirt-dx,destination=/var/lib/libvirt Volume=libvirt-conf:/etc/libvirt:Z Exec=sh -c "virtlogd -d && libvirtd" @@ -31,4 +31,4 @@ Exec=sh -c "virtlogd -d && libvirtd" WantedBy=multi-user.target [Service] -RuntimeDirectory=libvirt-quadlet \ No newline at end of file +RuntimeDirectory=libvirt-dx \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service b/system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service similarity index 100% rename from system_files/shared/usr/share/ublue-os/dx/units/brew-containerd.service rename to system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service diff --git a/system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service b/system_files/shared/usr/share/ublue-os/dx/units/dockerd-dx.service similarity index 100% rename from system_files/shared/usr/share/ublue-os/dx/units/brew-dockerd.service rename to system_files/shared/usr/share/ublue-os/dx/units/dockerd-dx.service diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 0cdb3ef6..721db121 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -86,9 +86,6 @@ dx-next: brew install --cask ublue-os/tap/visual-studio-code-linux brew install --cask ublue-os/experimental-tap/dockerd-linux - #Remove this when my PR to experimental-tap is merged - brew install iptables - sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable brew-containerd @@ -104,14 +101,13 @@ dx-next: if [ ${#missing[@]} -ne 0 ]; then gum format -- "Adding $USER to: **${missing[*]}**" - gum style --foreground 220 "⏻ Please reboot when the script is finished to apply group changes." sudo mkdir -p /etc/sysusers.d/ for group in "${missing[@]}"; do echo "m $USER $group"; done | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null sudo systemd-sysusers /etc/sysusers.d/dx-groups.conf fi - SOCKET_DIR="/run/libvirt-quadlet" + SOCKET_DIR="/run/libvirt-dx" echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules - sudo mkdir -p /var/lib/images /var/lib/libvirt-quadlet /etc/libvirt-quadlet "$SOCKET_DIR" + sudo mkdir -p /var/lib/images /var/lib/libvirt-dx "$SOCKET_DIR" sudo chmod 775 "$SOCKET_DIR" if ! sudo firewall-cmd --permanent --get-zones | grep -qw libvirt; then @@ -124,10 +120,15 @@ dx-next: sudo mkdir -p /var/lib/libvirt/images/ sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ sudo systemctl daemon-reload - sudo systemctl start libvirt-quadlet + sudo systemctl start libvirt-dx + + gum style --foreground="#cc3d19" "  Incus is now available, but not started by default." + gum format -- " Use \`systemctl start incus-dx\` to start it." - gum style --foreground 39 " Incus is available, but not started by default." - gum format -- "Use \`systemctl start incus-quadlet\` to start it." + echo "" + + gum style --foreground="#2c77df" "  Cockpit is now available, but not started by default." + gum format -- " Use \`systemctl start cockpit-dx\` to start it." gum style --border normal --border-foreground 212 \ "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord! @@ -135,5 +136,7 @@ dx-next: 󰙯 https://discord.gg/8RZGC3uFzA  https://github.com/projectbluefin/common" - flatpak override --user --filesystem=/run/libvirt-quadlet org.virt_manager.virt-manager - flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-quadlet/libvirt-sock" & + gum style --foreground 220 "⏻ Please reboot to fully apply changes." + + flatpak override --user --filesystem=/run/libvirt-dx org.virt_manager.virt-manager + flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-dx/libvirt-sock" & From 54aca3bbe8110a82755ef563a729b385217ca9a9 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Wed, 22 Apr 2026 19:37:40 -0400 Subject: [PATCH 24/34] Fix path typo --- system_files/shared/usr/share/ublue-os/just/apps.just | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 721db121..58bab4da 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -117,7 +117,7 @@ dx-next: sudo firewall-cmd --reload sudo mkdir -p /etc/containers/systemd/ - sudo mkdir -p /var/lib/libvirt/images/ + sudo mkdir -p /var/lib/libvirt-dx/images/ sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ sudo systemctl daemon-reload sudo systemctl start libvirt-dx From 9a8274440f16b5f49aac9d33a935db919ec2bb56 Mon Sep 17 00:00:00 2001 From: JumpyVi <62212220+jumpyvi@users.noreply.github.com> Date: Wed, 22 Apr 2026 23:44:58 +0000 Subject: [PATCH 25/34] Rename missing quadlet --- .../quadlets/{libvirt-quadlet.container => libvirt-dx.container} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename system_files/shared/usr/share/ublue-os/dx/quadlets/{libvirt-quadlet.container => libvirt-dx.container} (100%) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container similarity index 100% rename from system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-quadlet.container rename to system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container From 1e71bfac9eada5e776ed94a312fe171689dea203 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 10:03:52 -0400 Subject: [PATCH 26/34] Use moby from upstream brew --- .../ublue-os/dx/units/containerd-dx.service | 23 --------------- .../dx/units/{ => system}/dockerd-dx.service | 0 .../dx/units/user/dockerd-rootless-dx.service | 28 +++++++++++++++++++ .../share/ublue-os/homebrew/dx-next.Brewfile | 2 +- .../shared/usr/share/ublue-os/just/apps.just | 20 +++++++++---- 5 files changed, 44 insertions(+), 29 deletions(-) delete mode 100644 system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service rename system_files/shared/usr/share/ublue-os/dx/units/{ => system}/dockerd-dx.service (100%) create mode 100644 system_files/shared/usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service diff --git a/system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service b/system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service deleted file mode 100644 index dfa9bba8..00000000 --- a/system_files/shared/usr/share/ublue-os/dx/units/containerd-dx.service +++ /dev/null @@ -1,23 +0,0 @@ -[Unit] -Description=containerd container runtime (brew) -Documentation=https://containerd.io -After=network.target local-fs.target dbus.service - -[Service] -ExecStart=/bin/bash -c "env PATH="$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" /home/linuxbrew/.linuxbrew/bin/containerd" - -Type=simple -Delegate=yes -KillMode=process -Restart=always -RestartSec=5 - -LimitNPROC=infinity -LimitCORE=infinity -LimitNOFILE=infinity - -TasksMax=infinity -OOMScoreAdjust=-999 - -[Install] -WantedBy=multi-user.target diff --git a/system_files/shared/usr/share/ublue-os/dx/units/dockerd-dx.service b/system_files/shared/usr/share/ublue-os/dx/units/system/dockerd-dx.service similarity index 100% rename from system_files/shared/usr/share/ublue-os/dx/units/dockerd-dx.service rename to system_files/shared/usr/share/ublue-os/dx/units/system/dockerd-dx.service diff --git a/system_files/shared/usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service b/system_files/shared/usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service new file mode 100644 index 00000000..02e70aa5 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service @@ -0,0 +1,28 @@ +[Unit] +Description=Docker Application Container Engine (Brew Rootless) +Documentation=https://docs.docker.com/go/rootless/ + +[Service] +Environment=PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/usr/bin:/usr/sbin:/bin +Environment=XDG_RUNTIME_DIR=/run/user/%U +ExecStart=/home/linuxbrew/.linuxbrew/bin/dockerd-rootless.sh --iptables=false +ExecReload=/bin/kill -s HUP $MAINPID +TimeoutSec=0 +RestartSec=2 +Restart=always +StartLimitBurst=3 +StartLimitInterval=60s +LimitNOFILE=infinity +LimitNPROC=infinity +LimitCORE=infinity +TasksMax=infinity +Delegate=yes +Type=notify +NotifyAccess=all +KillMode=mixed + +[Install] +WantedBy=default.target + +[Install] +WantedBy=default.target \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index 0f1061e8..ca4a10a0 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -1,7 +1,7 @@ tap "ublue-os/experimental-tap" tap "ublue-os/tap" -#brew "ublue-os/experimental-tap/dockerd-linux" + #brew "ublue-os/tap/visual-studio-code-linux" cask "android-platform-tools" flatpak "org.flatpak.Builder" diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 58bab4da..beca428a 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -84,14 +84,24 @@ dx-next: gum style --foreground 212 "󱗼 Initializing DX-Next environment..." brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile brew install --cask ublue-os/tap/visual-studio-code-linux - brew install --cask ublue-os/experimental-tap/dockerd-linux + brew install docker-engine iptables rootlesskit slirp4netns docker + + mkdir -p /.config/systemd/user/ + sudo cp /usr/share/ublue-os/dx/units/system/* /etc/systemd/system/ + cp /usr/share/ublue-os/dx/units/user/* ~/.config/systemd/user/ + + DOCKER_CLI="${HOMEBREW_PREFIX:-/usr/local}/bin/docker" + DOCKER_SOCKET="unix:///run/user/$(id -u)/docker.sock" + + CONTEXT_CREATE_CMD="$DOCKER_CLI context create rootless --docker host=$DOCKER_SOCKET" + + $DOCKER_CLI context inspect rootless >/dev/null 2>&1 || $CONTEXT_CREATE_CMD - sudo cp /usr/share/ublue-os/dx/units/* /etc/systemd/system/ sudo systemctl daemon-reload - sudo systemctl enable brew-containerd - sudo systemctl enable brew-dockerd + sudo systemctl enable --now dockerd-dx - /home/linuxbrew/.linuxbrew/bin/docker context use default + systemctl --user daemon-reload + systemctl start dockerd-rootless-dx current=$(groups "$USER") missing=() From b8b7db77148dae3317af5c8b0e9d4b95d80b52da Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 10:37:17 -0400 Subject: [PATCH 27/34] Modularize the whole thing --- .../shared/usr/share/ublue-os/just/apps.just | 97 ++++++++-------- .../shared/usr/share/ublue-os/just/dx.just | 104 ++++++++++++++++++ 2 files changed, 152 insertions(+), 49 deletions(-) create mode 100644 system_files/shared/usr/share/ublue-os/just/dx.just diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index beca428a..e7b8594c 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -74,79 +74,78 @@ cncf: fi bbrew -f "/usr/share/ublue-os/homebrew/cncf.Brewfile" +dx_justfile := "/usr/share/ublue-os/just/dx.just" # Experimental DX mode dx-next: #!/usr/bin/env bash - if ! gum confirm "Enter experimental DX mode?" ; then + if ! gum confirm "Enter experimental DX mode?"; then exit 0 fi - gum style --foreground 212 "󱗼 Initializing DX-Next environment..." - brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile - brew install --cask ublue-os/tap/visual-studio-code-linux - brew install docker-engine iptables rootlesskit slirp4netns docker + gum style \ + --border rounded \ + --border-foreground 212 \ + --padding "0 2" \ + --margin "1 0" \ + "DX-Next Environment Setup" "Please select your installation path." - mkdir -p /.config/systemd/user/ - sudo cp /usr/share/ublue-os/dx/units/system/* /etc/systemd/system/ - cp /usr/share/ublue-os/dx/units/user/* ~/.config/systemd/user/ + MODE=$(gum choose "Default" "Customize" --header "Installation Mode") - DOCKER_CLI="${HOMEBREW_PREFIX:-/usr/local}/bin/docker" - DOCKER_SOCKET="unix:///run/user/$(id -u)/docker.sock" + if [ -z "$MODE" ]; then + gum style --foreground 196 "Setup cancelled." + exit 0 + fi - CONTEXT_CREATE_CMD="$DOCKER_CLI context create rootless --docker host=$DOCKER_SOCKET" + if [ "$MODE" = "Default" ]; then + CHOICES="Virt Docker DX-Tools" + gum style --foreground 242 "Proceeding with Default options: $CHOICES" + else + echo "" + gum style --foreground 242 " Use to select/deselect, to confirm" + CHOICES=$(gum choose --no-limit \ + --selected="Virt,Docker,DX-Tools" \ + --header="--- Select Components ---" \ + --cursor.foreground 212 --selected.foreground 212 \ + "Virt" "Docker" "DX-Tools" "Incus" "Cockpit") + fi - $DOCKER_CLI context inspect rootless >/dev/null 2>&1 || $CONTEXT_CREATE_CMD + if [ -z "$CHOICES" ]; then + gum style --foreground 196 "No options selected. Exiting." + exit 0 + fi - sudo systemctl daemon-reload - sudo systemctl enable --now dockerd-dx + gum style --foreground 212 "󱗼 Initializing DX-Next environment..." - systemctl --user daemon-reload - systemctl start dockerd-rootless-dx + # Always run group setup + just -f {{dx_justfile}} dx-groups - current=$(groups "$USER") - missing=() - for group in libvirt docker incus-admin; do - echo "$current" | grep -qw "$group" || missing+=("$group") - done + # All subchoices + if echo "$CHOICES" | grep -q "DX-Tools"; then + just -f {{dx_justfile}} dx-tools + fi - if [ ${#missing[@]} -ne 0 ]; then - gum format -- "Adding $USER to: **${missing[*]}**" - sudo mkdir -p /etc/sysusers.d/ - for group in "${missing[@]}"; do echo "m $USER $group"; done | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null - sudo systemd-sysusers /etc/sysusers.d/dx-groups.conf + if echo "$CHOICES" | grep -q "Docker"; then + just -f {{dx_justfile}} dx-docker fi - SOCKET_DIR="/run/libvirt-dx" - echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules - sudo mkdir -p /var/lib/images /var/lib/libvirt-dx "$SOCKET_DIR" - sudo chmod 775 "$SOCKET_DIR" - if ! sudo firewall-cmd --permanent --get-zones | grep -qw libvirt; then - sudo firewall-cmd --permanent --new-zone=libvirt + if echo "$CHOICES" | grep -q "Virt"; then + just -f {{dx_justfile}} dx-virt fi - sudo firewall-cmd --permanent --zone=libvirt --set-target=ACCEPT - sudo firewall-cmd --reload - sudo mkdir -p /etc/containers/systemd/ - sudo mkdir -p /var/lib/libvirt-dx/images/ - sudo cp /usr/share/ublue-os/dx/quadlets/* /etc/containers/systemd/ - sudo systemctl daemon-reload - sudo systemctl start libvirt-dx + if echo "$CHOICES" | grep -q "Incus"; then + just -f {{dx_justfile}} dx-incus + fi - gum style --foreground="#cc3d19" "  Incus is now available, but not started by default." - gum format -- " Use \`systemctl start incus-dx\` to start it." + if echo "$CHOICES" | grep -q "Cockpit"; then + just -f {{dx_justfile}} dx-cockpit + fi + # Final Banner echo "" - - gum style --foreground="#2c77df" "  Cockpit is now available, but not started by default." - gum format -- " Use \`systemctl start cockpit-dx\` to start it." - gum style --border normal --border-foreground 212 \ "You are now testing the experimental DX mode. Please report any issues to the GitHub, or come talk with us on Discord! 󰙯 https://discord.gg/8RZGC3uFzA  https://github.com/projectbluefin/common" - gum style --foreground 220 "⏻ Please reboot to fully apply changes." - - flatpak override --user --filesystem=/run/libvirt-dx org.virt_manager.virt-manager - flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-dx/libvirt-sock" & + gum style --foreground 220 "⏻ Please reboot to fully apply changes." \ No newline at end of file diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just new file mode 100644 index 00000000..3fd61930 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -0,0 +1,104 @@ +dx_justfile := "/usr/share/ublue-os/just/dx.just" + +# Add user to all DX group with sysusers, this is always ran +dx-groups: + #!/usr/bin/env bash + current=$(groups "$USER") + missing=() + for group in libvirt docker incus-admin; do + echo "$current" | grep -qw "$group" || missing+=("$group") + done + + if [ ${#missing[@]} -ne 0 ]; then + gum format -- "Adding $USER to: **${missing[*]}**" + sudo mkdir -p /etc/sysusers.d/ + for group in "${missing[@]}"; do echo "m $USER $group"; done | sudo tee /etc/sysusers.d/dx-groups.conf > /dev/null + sudo systemd-sysusers /etc/sysusers.d/dx-groups.conf + fi + +# A developper's essential toolkit such as VSCode, podman-tui, etc +dx-tools: + #!/usr/bin/env bash + gum style --foreground 212 "󱁯 Installing DX-Tools & Base Apps..." + brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile + brew install --cask ublue-os/tap/visual-studio-code-linux + + + sudo cp /usr/share/ublue-os/dx/units/system/* /etc/systemd/system/ + cp /usr/share/ublue-os/dx/units/user/* ~/.config/systemd/user/ + + sudo systemctl daemon-reload + systemctl --user daemon-reload + +# Setup rootless and rootfull docker with brew +dx-docker: + #!/usr/bin/env bash + just -f {{dx_justfile}} _dx-docker-rootless + just -f {{dx_justfile}} _dx-docker-root + + +dx-docker-rootless: + #!/usr/bin/env bash + gum style --foreground 212 "󰡨 Setting up Rootless Docker..." + + brew install docker-engine iptables rootlesskit slirp4netns docker + mkdir -p ~/.config/systemd/user/ + cp /usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service ~/.config/systemd/user/ + + DOCKER_CLI="${HOMEBREW_PREFIX:-/usr/local}/bin/docker" + DOCKER_SOCKET="unix:///run/user/$(id -u)/docker.sock" + + CONTEXT_CREATE_CMD="$DOCKER_CLI context create rootless --docker host=$DOCKER_SOCKET" + $DOCKER_CLI context inspect rootless >/dev/null 2>&1 || $CONTEXT_CREATE_CMD + systemctl --user daemon-reload + systemctl --user enable --now dockerd-rootless-dx + +dx_docker-root: + #!/usr/bin/env bash + gum style --foreground 212 "󰡨 Setting up Rootfull Docker..." + sudo cp /usr/share/ublue-os/dx/units/system/dockerd-dx.service /etc/systemd/system/ + brew install docker-engine iptables docker + sudo systemctl daemon-reload + sudo systemctl enable --now dockerd-dx + + +# Setup qemu/libvirt using quadlets +dx-virt: + #!/usr/bin/env bash + gum style --foreground 212 " Setting up Libvirt/QEMU..." + SOCKET_DIR="/run/libvirt-dx" + echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules + sudo mkdir -p /var/lib/libvirt-dx "$SOCKET_DIR" + sudo chmod 775 "$SOCKET_DIR" + + if ! sudo firewall-cmd --permanent --get-zones | grep -qw libvirt; then + sudo firewall-cmd --permanent --new-zone=libvirt + fi + sudo firewall-cmd --permanent --zone=libvirt --set-target=ACCEPT + sudo firewall-cmd --reload + + sudo mkdir -p /etc/containers/systemd/ + sudo mkdir -p /var/lib/libvirt-dx/images/ + sudo cp /usr/share/ublue-os/dx/quadlets/libvirt-dx.container /etc/containers/systemd/ + sudo systemctl daemon-reload + sudo systemctl enable --now libvirt-dx + + flatpak override --user --filesystem=/run/libvirt-dx org.virt_manager.virt-manager + flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-dx/libvirt-sock" &>/dev/null & + flatpak run org.virt_manager.virt-manager -c "qemu:///session" &>/dev/null & + +# Setup incus and incus-webui with quadlet +dx-incus: + #!/usr/bin/env bash + gum style --foreground "#cc3d19" " Enabling and Starting Incus..." + sudo cp /usr/share/ublue-os/dx/quadlets/incus-dx.container /etc/containers/systemd/ + sudo systemctl daemon-reload + sudo systemctl enable --now incus-dx + +# Setup cockpit with quadlet +dx-cockpit: + #!/usr/bin/env bash + gum style --foreground "#2c77df" " Enabling and Starting Cockpit..." + sudo cp /usr/share/ublue-os/dx/quadlets/cockpit-dx.container /etc/containers/systemd/ + sudo systemctl daemon-reload + sudo systemctl enable --now cockpit-dx \ No newline at end of file From 1da13919fd4fab41356333f1351a7d81f99acfed Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 10:43:25 -0400 Subject: [PATCH 28/34] Fix flatpaks --- .../usr/share/ublue-os/homebrew/dx-next.Brewfile | 7 +++---- system_files/shared/usr/share/ublue-os/just/dx.just | 11 ++++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile index ca4a10a0..c32926f5 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/dx-next.Brewfile @@ -2,7 +2,6 @@ tap "ublue-os/experimental-tap" tap "ublue-os/tap" -#brew "ublue-os/tap/visual-studio-code-linux" cask "android-platform-tools" flatpak "org.flatpak.Builder" brew "git-svn" @@ -14,17 +13,17 @@ brew "podman-compose" brew "podman-tui" #brew "sysprof" brew "ublue-os/experimental-tap/ydotool" -flatpak "org.virt_manager.virt-manager" -flatpak "org.virt_manager.virt_manager.Extension.Qemu" # New brew "lima" brew "kind" brew "incus" +brew "squashfs" +brew "devcontainer" vscode "ms-vscode-remote.remote-containers" +flatpak "io.podman_desktop.PodmanDesktop" # Wall of shame -#cockpit #iotop #bcc #bpftrace diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index 3fd61930..495079aa 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -22,13 +22,6 @@ dx-tools: gum style --foreground 212 "󱁯 Installing DX-Tools & Base Apps..." brew bundle --file=/usr/share/ublue-os/homebrew/dx-next.Brewfile brew install --cask ublue-os/tap/visual-studio-code-linux - - - sudo cp /usr/share/ublue-os/dx/units/system/* /etc/systemd/system/ - cp /usr/share/ublue-os/dx/units/user/* ~/.config/systemd/user/ - - sudo systemctl daemon-reload - systemctl --user daemon-reload # Setup rootless and rootfull docker with brew dx-docker: @@ -66,6 +59,10 @@ dx_docker-root: dx-virt: #!/usr/bin/env bash gum style --foreground 212 " Setting up Libvirt/QEMU..." + flatpak install -y org.virt_manager.virt-manager + flatpak install -y org.virt_manager.virt_manager.Extension.Qemu + + SOCKET_DIR="/run/libvirt-dx" echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="libvirt"' | sudo tee /etc/udev/rules.d/50-spice-usb.rules sudo mkdir -p /var/lib/libvirt-dx "$SOCKET_DIR" From 15739c257a2be3f23d26617cbee6917ce0c01e28 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 10:49:29 -0400 Subject: [PATCH 29/34] Fix docker paths --- system_files/shared/usr/share/ublue-os/just/dx.just | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index 495079aa..d83908bc 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -26,8 +26,8 @@ dx-tools: # Setup rootless and rootfull docker with brew dx-docker: #!/usr/bin/env bash - just -f {{dx_justfile}} _dx-docker-rootless - just -f {{dx_justfile}} _dx-docker-root + just -f {{dx_justfile}} dx-docker-rootless + just -f {{dx_justfile}} dx-docker-root dx-docker-rootless: From f05e42e6b3fb272847f34c98df00b184a646d577 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 10:51:23 -0400 Subject: [PATCH 30/34] Add incus-cli --- system_files/shared/usr/share/ublue-os/just/dx.just | 1 + 1 file changed, 1 insertion(+) diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index d83908bc..39efa99f 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -88,6 +88,7 @@ dx-virt: dx-incus: #!/usr/bin/env bash gum style --foreground "#cc3d19" " Enabling and Starting Incus..." + brew install incus sudo cp /usr/share/ublue-os/dx/quadlets/incus-dx.container /etc/containers/systemd/ sudo systemctl daemon-reload sudo systemctl enable --now incus-dx From 4ff964ec5699b82c302654de418ecd8bc9ed383f Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 11:07:25 -0400 Subject: [PATCH 31/34] Swap enable for start --- system_files/shared/usr/share/ublue-os/just/dx.just | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index 39efa99f..f1da30d7 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -78,7 +78,7 @@ dx-virt: sudo mkdir -p /var/lib/libvirt-dx/images/ sudo cp /usr/share/ublue-os/dx/quadlets/libvirt-dx.container /etc/containers/systemd/ sudo systemctl daemon-reload - sudo systemctl enable --now libvirt-dx + sudo systemctl start libvirt-dx flatpak override --user --filesystem=/run/libvirt-dx org.virt_manager.virt-manager flatpak run org.virt_manager.virt-manager -c "qemu:///system?socket=/run/libvirt-dx/libvirt-sock" &>/dev/null & @@ -91,7 +91,7 @@ dx-incus: brew install incus sudo cp /usr/share/ublue-os/dx/quadlets/incus-dx.container /etc/containers/systemd/ sudo systemctl daemon-reload - sudo systemctl enable --now incus-dx + sudo systemctl start incus-dx # Setup cockpit with quadlet dx-cockpit: @@ -99,4 +99,4 @@ dx-cockpit: gum style --foreground "#2c77df" " Enabling and Starting Cockpit..." sudo cp /usr/share/ublue-os/dx/quadlets/cockpit-dx.container /etc/containers/systemd/ sudo systemctl daemon-reload - sudo systemctl enable --now cockpit-dx \ No newline at end of file + sudo systemctl start cockpit-dx \ No newline at end of file From 502cdcd3fc43419abebffc5bd93861e8f128a29c Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 11:08:33 -0400 Subject: [PATCH 32/34] Typo --- system_files/shared/usr/share/ublue-os/just/dx.just | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index f1da30d7..f7fa220a 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -46,7 +46,7 @@ dx-docker-rootless: systemctl --user daemon-reload systemctl --user enable --now dockerd-rootless-dx -dx_docker-root: +dx-docker-root: #!/usr/bin/env bash gum style --foreground 212 "󰡨 Setting up Rootfull Docker..." sudo cp /usr/share/ublue-os/dx/units/system/dockerd-dx.service /etc/systemd/system/ From 424de1520676cadf58588f92c2ffe3fb805d8f65 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 13:25:22 -0400 Subject: [PATCH 33/34] Switch back to custom docker cask --- system_files/shared/usr/share/ublue-os/just/dx.just | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/just/dx.just b/system_files/shared/usr/share/ublue-os/just/dx.just index f7fa220a..6cb7b6c9 100644 --- a/system_files/shared/usr/share/ublue-os/just/dx.just +++ b/system_files/shared/usr/share/ublue-os/just/dx.just @@ -34,15 +34,11 @@ dx-docker-rootless: #!/usr/bin/env bash gum style --foreground 212 "󰡨 Setting up Rootless Docker..." - brew install docker-engine iptables rootlesskit slirp4netns docker + brew install docker + brew install --cask ublue-os/experimental-tap/dockerd-linux mkdir -p ~/.config/systemd/user/ cp /usr/share/ublue-os/dx/units/user/dockerd-rootless-dx.service ~/.config/systemd/user/ - DOCKER_CLI="${HOMEBREW_PREFIX:-/usr/local}/bin/docker" - DOCKER_SOCKET="unix:///run/user/$(id -u)/docker.sock" - - CONTEXT_CREATE_CMD="$DOCKER_CLI context create rootless --docker host=$DOCKER_SOCKET" - $DOCKER_CLI context inspect rootless >/dev/null 2>&1 || $CONTEXT_CREATE_CMD systemctl --user daemon-reload systemctl --user enable --now dockerd-rootless-dx @@ -50,9 +46,11 @@ dx-docker-root: #!/usr/bin/env bash gum style --foreground 212 "󰡨 Setting up Rootfull Docker..." sudo cp /usr/share/ublue-os/dx/units/system/dockerd-dx.service /etc/systemd/system/ - brew install docker-engine iptables docker + brew install --cask ublue-os/experimental-tap/dockerd-linux + brew install iptables docker sudo systemctl daemon-reload sudo systemctl enable --now dockerd-dx + /home/linuxbrew/.linuxbrew/bin/docker context switch default # Setup qemu/libvirt using quadlets From 46b472246ae5551225f37667041a7c4c5e6457b3 Mon Sep 17 00:00:00 2001 From: JumpyVi Date: Thu, 23 Apr 2026 20:39:09 -0400 Subject: [PATCH 34/34] Fix edge case where kvm isnt owned by kvm --- .../shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container index bc96a5da..0c9ccb25 100644 --- a/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container +++ b/system_files/shared/usr/share/ublue-os/dx/quadlets/libvirt-dx.container @@ -25,7 +25,7 @@ Mount=type=bind,source=/var/run/libvirt-dx,destination=/run/libvirt Mount=type=bind,source=/var/lib/libvirt-dx,destination=/var/lib/libvirt Volume=libvirt-conf:/etc/libvirt:Z -Exec=sh -c "virtlogd -d && libvirtd" +Exec=sh -c "chgrp kvm /dev/kvm && virtlogd -d && libvirtd" [Install] WantedBy=multi-user.target