Add kde patch update script

This commit is contained in:
Davíð Steinn Geirsson 2026-03-27 18:32:33 +00:00
parent e47027cf9b
commit 9de2b4693c
17 changed files with 463 additions and 29 deletions

View file

@ -39,26 +39,29 @@ in
kfinal: kprev: {
kwin = kprev.kwin.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [
../patches/kwin-0001-vmsilo-add-security-context-color-borders-and-protoc.patch
../patches/kwin-0002-vmsilo-add-clipboard-isolation-for-VMs-whitelist-pro.patch
../patches/kwin-0003-vmsilo-prefix-window-titles-and-namespace-app_ids-fo.patch
../patches/kwin-0004-vmsilo-fix-clipboard-lockup-by-eagerly-snapshotting-.patch
../patches/kwin-0005-decorations-cache-vmsilo-color-and-harden-format-par.patch
../patches/kwin-0001-Add-Nix-flake-for-development-shell-environment.patch
../patches/kwin-0002-vmsilo-add-security-context-color-borders-and-protoc.patch
../patches/kwin-0003-vmsilo-add-clipboard-isolation-for-VMs-whitelist-pro.patch
../patches/kwin-0004-vmsilo-prefix-window-titles-and-namespace-app_ids-fo.patch
../patches/kwin-0005-vmsilo-fix-clipboard-lockup-by-eagerly-snapshotting-.patch
../patches/kwin-0006-decorations-cache-vmsilo-color-and-harden-format-par.patch
];
});
plasma-workspace = kprev.plasma-workspace.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [
../patches/plasma-workspace-0001-libtaskmanager-add-VmSilo-roles-for-VM-sandboxed-win.patch
../patches/plasma-workspace-0002-feat-add-VM-folder-running-indicator-to-kicker-app-m.patch
../patches/plasma-workspace-0003-feat-add-VmSiloColorRole-to-kicker-data-model.patch
../patches/plasma-workspace-0004-feat-add-colored-security-border-to-VM-generated-not.patch
../patches/plasma-workspace-0001-Add-nix-dev-shell-for-building-plasma-workspace.patch
../patches/plasma-workspace-0002-libtaskmanager-add-VmSilo-roles-for-VM-sandboxed-win.patch
../patches/plasma-workspace-0003-feat-add-VM-folder-running-indicator-to-kicker-app-m.patch
../patches/plasma-workspace-0004-feat-add-VmSiloColorRole-to-kicker-data-model.patch
../patches/plasma-workspace-0005-feat-add-colored-security-border-to-VM-generated-not.patch
];
});
plasma-desktop = kprev.plasma-desktop.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [
../patches/plasma-desktop-0001-taskmanager-add-vmsilo-border-and-VM-name-in-tooltip.patch
../patches/plasma-desktop-0002-feat-add-VM-running-indicator-to-Kickoff-category-li.patch
../patches/plasma-desktop-0003-feat-add-vmsilo-colored-icon-borders-to-kicker-and-k.patch
../patches/plasma-desktop-0001-Add-Nix-flake-with-dev-shell-for-building-plasma-des.patch
../patches/plasma-desktop-0002-taskmanager-add-vmsilo-border-and-VM-name-in-tooltip.patch
../patches/plasma-desktop-0003-feat-add-VM-running-indicator-to-Kickoff-category-li.patch
../patches/plasma-desktop-0004-feat-add-vmsilo-colored-icon-borders-to-kicker-and-k.patch
];
});
}

View file

@ -0,0 +1,182 @@
From ec5e2a95a523d165cd1c8f5ba17e3546815a3ba2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sun, 15 Feb 2026 13:38:18 +0000
Subject: [PATCH 1/6] Add Nix flake for development shell environment
Provides a complete dev shell with all build dependencies (Qt 6, KDE
Frameworks 6, Plasma, Wayland, X11/XCB, graphics, input, and audio
libraries) so contributors can build KWin with `nix develop`.
---
flake.lock | 27 ++++++++++++
flake.nix | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 152 insertions(+)
create mode 100644 flake.lock
create mode 100644 flake.nix
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000000..53569e7fa8
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1774041495,
+ "narHash": "sha256-Jbzx23j3YPRChU/djx7EhhupGlDq7CRQ8L0IWYCbav4=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "5ba249aa104c36c3542e3017d85cf55196732b7b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000000..287e827f01
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,125 @@
+{
+ description = "KWin development environment";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
+ };
+
+ outputs =
+ { self, nixpkgs }:
+ let
+ system = "x86_64-linux";
+ pkgs = import nixpkgs { inherit system; };
+ in
+ {
+ devShells.${system}.default = pkgs.mkShell {
+ nativeBuildInputs = with pkgs; [
+ cmake
+ ninja
+ pkg-config
+ python3
+ kdePackages.extra-cmake-modules
+ kdePackages.wrapQtAppsHook
+ ];
+
+ buildInputs = with pkgs; [
+ # Qt 6
+ kdePackages.qt5compat
+ kdePackages.qtbase
+ kdePackages.qtdeclarative
+ kdePackages.qtquick3d
+ kdePackages.qtsensors
+ kdePackages.qtsvg
+ kdePackages.qttools
+ kdePackages.qtvirtualkeyboard
+ kdePackages.qtwayland
+
+ # KDE Frameworks 6
+ kdePackages.kauth
+ kdePackages.kcmutils
+ kdePackages.kcolorscheme
+ kdePackages.kconfig
+ kdePackages.kcoreaddons
+ kdePackages.kcrash
+ kdePackages.kdbusaddons
+ kdePackages.kdeclarative
+ kdePackages.kdoctools
+ kdePackages.kglobalaccel
+ kdePackages.kguiaddons
+ kdePackages.ki18n
+ kdePackages.kidletime
+ kdePackages.kirigami
+ kdePackages.knewstuff
+ kdePackages.knotifications
+ kdePackages.kpackage
+ kdePackages.krunner
+ kdePackages.kservice
+ kdePackages.ksvg
+ kdePackages.kwidgetsaddons
+ kdePackages.kwindowsystem
+ kdePackages.kxmlgui
+
+ # Plasma
+ kdePackages.aurorae
+ kdePackages.breeze
+ kdePackages.breeze-icons
+ kdePackages.kdecoration
+ kdePackages.kglobalacceld
+ kdePackages.knighttime
+ kdePackages.kpipewire
+ kdePackages.kscreenlocker
+ kdePackages.kwayland
+ kdePackages.libplasma
+ kdePackages.libqaccessibilityclient
+ kdePackages.plasma-activities
+ kdePackages.plasma-wayland-protocols
+
+ # Wayland
+ wayland
+ wayland-protocols
+ libxkbcommon
+
+ # Graphics & rendering
+ lcms2
+ libGL
+ libdrm
+ libepoxy
+ libgbm
+ libxcvt
+
+ # X11 / XCB
+ libx11
+ libxi
+ libxcb
+ libxcb-cursor
+ libxcb-keysyms
+ libxcb-wm
+ xwayland
+
+ # Fonts
+ fontconfig
+ freetype
+
+ # Input & hardware
+ libdisplay-info
+ libinput
+ udev
+
+ # Audio
+ libcanberra
+
+ # Optional
+ hwdata
+ libei
+ libevdev
+ pipewire
+ ];
+
+ shellHook = ''
+ echo "KWin development environment loaded"
+ echo "Configure: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug"
+ echo "Build: cmake --build build"
+ '';
+ };
+ };
+}
--
2.53.0

View file

@ -1,7 +1,7 @@
From fbabaf1a58508f1134cdc24bcf7661a7ff17d8d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sun, 15 Feb 2026 13:38:14 +0000
Subject: [PATCH 1/5] vmsilo: add security context color borders and protocol
Subject: [PATCH 2/6] vmsilo: add security context color borders and protocol
- decorations: support vmsilo security context color override
- decorations: force SSD and Tiny borders for vmsilo security context

View file

@ -1,7 +1,7 @@
From 9bd6f0a62d1ac5fb93803a0dfb26c61870b9b6b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Wed, 18 Feb 2026 10:39:15 +0000
Subject: [PATCH 2/5] vmsilo: add clipboard isolation for VMs, whitelist
Subject: [PATCH 3/6] vmsilo: add clipboard isolation for VMs, whitelist
protocols
Isolate clipboard (selection + primary selection) between vmsilo security

View file

@ -1,7 +1,7 @@
From d7b025bec0a5f92c23cc56369011aa21f5257e29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Thu, 19 Feb 2026 17:05:00 +0000
Subject: [PATCH 3/5] vmsilo: prefix window titles and namespace app_ids for VM
Subject: [PATCH 4/6] vmsilo: prefix window titles and namespace app_ids for VM
isolation
Prefix vmsilo window captions with [vmname] so users can identify

View file

@ -1,7 +1,7 @@
From 7be54472f9e05eee0f79234998264b9f38b535a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Fri, 27 Mar 2026 13:08:28 +0000
Subject: [PATCH 4/5] vmsilo: fix clipboard lockup by eagerly snapshotting
Subject: [PATCH 5/6] vmsilo: fix clipboard lockup by eagerly snapshotting
sources on context switch
When restoring a client-owned data source to the seat, data control

View file

@ -1,7 +1,7 @@
From 16bc5cd8c9b8b282a37a96b5712a4e4ae233e88d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Fri, 27 Mar 2026 14:54:02 +0000
Subject: [PATCH 5/5] decorations: cache vmsilo color and harden format parsing
Subject: [PATCH 6/6] decorations: cache vmsilo color and harden format parsing
Cache the parsed vmsilo security context color at decoration
construction time instead of re-parsing from the security context

View file

@ -0,0 +1,74 @@
From fb684888961f331026acc6e249a863640e3e40bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sun, 15 Feb 2026 13:45:02 +0000
Subject: [PATCH 1/4] Add Nix flake with dev shell for building plasma-desktop
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---
flake.lock | 27 +++++++++++++++++++++++++++
flake.nix | 19 +++++++++++++++++++
2 files changed, 46 insertions(+)
create mode 100644 flake.lock
create mode 100644 flake.nix
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000000..15e16c8f97
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1771353015,
+ "narHash": "sha256-gvMwFEdFCM2zFxLVDaAbhV2N9zK0IW/RceBundHUdZs=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "931ef4db402cdab9dfe66fe4a2b01d50f6fe435d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000000..58ba7a3d9a
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,19 @@
+{
+ description = "plasma-desktop development shell";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
+ };
+
+ outputs =
+ { nixpkgs, ... }:
+ let
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ in
+ {
+ devShells.${system}.default = pkgs.mkShell {
+ inputsFrom = [ pkgs.kdePackages.plasma-desktop ];
+ };
+ };
+}
--
2.53.0

View file

@ -1,7 +1,7 @@
From 2fdf43420b9528e77cd6853281793235d8a789e1 Mon Sep 17 00:00:00 2001
From 15eedaf565e3767b9ca41d13e0195b8b13384c20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Tue, 17 Feb 2026 23:47:02 +0000
Subject: [PATCH 1/3] taskmanager: add vmsilo border and VM name in tooltip
Subject: [PATCH 2/4] taskmanager: add vmsilo border and VM name in tooltip
Add colored border overlay and VM name display for VM-sandboxed
windows in the task manager. Reads VmSiloColor and VmSiloName
@ -94,7 +94,7 @@ index 05cb5e2d6d..da0335a7c0 100644
}
}
diff --git a/applets/taskmanager/qml/ToolTipInstance.qml b/applets/taskmanager/qml/ToolTipInstance.qml
index 9fd2759143..33327bd2fd 100644
index 7809c0ee4b..c040c0a821 100644
--- a/applets/taskmanager/qml/ToolTipInstance.qml
+++ b/applets/taskmanager/qml/ToolTipInstance.qml
@@ -33,6 +33,7 @@ ColumnLayout {
@ -105,7 +105,7 @@ index 9fd2759143..33327bd2fd 100644
property bool hasTrackInATitle: false
property int orientation: ListView.Vertical // vertical for compact single-window tooltips
@@ -504,6 +505,10 @@ ColumnLayout {
@@ -516,6 +517,10 @@ ColumnLayout {
function generateSubText(): string {
const subTextEntries = [];

View file

@ -1,7 +1,7 @@
From f30690ca6e3a96fcca00c686bb9929d072e26589 Mon Sep 17 00:00:00 2001
From 4475660009f5931751e7ea5f3c6b62138a0686fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Wed, 18 Feb 2026 22:02:58 +0000
Subject: [PATCH 2/3] feat: add VM running indicator to Kickoff category list
Subject: [PATCH 3/4] feat: add VM running indicator to Kickoff category list
items
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

View file

@ -1,7 +1,7 @@
From 0bebe8369347bf83caa611886f9f36e4af11c55a Mon Sep 17 00:00:00 2001
From 9e548eac50c79c34bdc0272d0d9f8ca0646bdb72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sat, 7 Mar 2026 17:30:47 +0000
Subject: [PATCH 3/3] feat: add vmsilo colored icon borders to kicker and
Subject: [PATCH 4/4] feat: add vmsilo colored icon borders to kicker and
kickoff delegates
Draw a thin colored border around icons for VM folders and VM app

View file

@ -0,0 +1,75 @@
From 095836f3d9e930917762b02fc35415120942416c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sun, 15 Feb 2026 13:44:42 +0000
Subject: [PATCH 1/5] Add nix dev shell for building plasma-workspace
---
flake.lock | 27 +++++++++++++++++++++++++++
flake.nix | 21 +++++++++++++++++++++
2 files changed, 48 insertions(+)
create mode 100644 flake.lock
create mode 100644 flake.nix
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000000..8c55476e50
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1774085698,
+ "narHash": "sha256-gTy8ItjKOM4k2arEdMDl+LZax06NPXqG/yKnl21i/B0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "44cfc63d12ba52679746e701176f19afb9c537b9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000000..6d8377b9f3
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,21 @@
+{
+ description = "Development shell for plasma-workspace";
+
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
+
+ outputs =
+ { self, nixpkgs }:
+ let
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ in
+ {
+ devShells.${system}.default = pkgs.mkShell {
+ inputsFrom = [ pkgs.kdePackages.plasma-workspace ];
+ packages = [
+ pkgs.xdotool
+ ];
+ CMAKE_PROGRAM_PATH = "${pkgs.kdePackages.kglobalacceld}/libexec";
+ };
+ };
+}
--
2.53.0

View file

@ -1,7 +1,7 @@
From 6c605b8bb359baa90f951233b7e12fa4a2c934fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Tue, 17 Feb 2026 23:49:05 +0000
Subject: [PATCH 1/4] libtaskmanager: add VmSilo roles for VM-sandboxed window
Subject: [PATCH 2/5] libtaskmanager: add VmSilo roles for VM-sandboxed window
metadata
Expose VmSiloColor and VmSiloName model roles in libtaskmanager by

View file

@ -1,7 +1,7 @@
From d4fa58f3406d1e47fd2de8f72cd594a5348d5aa9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Wed, 18 Feb 2026 22:24:27 +0000
Subject: [PATCH 2/4] feat: add VM folder running indicator to kicker app menu
Subject: [PATCH 3/5] feat: add VM folder running indicator to kicker app menu
Add model roles and a systemd D-Bus monitor so the Kickoff app menu can
show whether a VM folder's corresponding systemd unit is running.

View file

@ -1,7 +1,7 @@
From aef4dee7fa73172b008fd70d01a773090b35ec8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sat, 7 Mar 2026 17:30:54 +0000
Subject: [PATCH 3/4] feat: add VmSiloColorRole to kicker data model
Subject: [PATCH 4/5] feat: add VmSiloColorRole to kicker data model
Expose X-VmSilo-Color from .directory and .desktop files as a new
vmSiloColor role so QML can style VM folders and apps with their

View file

@ -1,7 +1,7 @@
From 91cfb80d2e5b24383fbbc2841a395cad3124738c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= <david@dsg.is>
Date: Sat, 21 Mar 2026 14:37:47 +0000
Subject: [PATCH 4/4] feat: add colored security border to VM-generated
Subject: [PATCH 5/5] feat: add colored security border to VM-generated
notifications
Parse the x-vmsilo-color D-Bus notification hint and render a colored

100
update-kde-patches.sh Executable file
View file

@ -0,0 +1,100 @@
#!/usr/bin/env bash
# Regenerate KDE patches from local checkouts in ../kde/<project>/
# and update modules/overlay.nix to reference them.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PATCHES_DIR="$SCRIPT_DIR/patches"
KDE_DIR="$SCRIPT_DIR/../kde"
OVERLAY_NIX="$SCRIPT_DIR/modules/overlay.nix"
projects=(kwin plasma-desktop plasma-workspace)
# Associative array: project -> space-separated list of patch filenames
declare -A patch_files
for project in "${projects[@]}"; do
project_dir="$KDE_DIR/$project"
if [[ ! -d "$project_dir/.git" ]]; then
echo "error: $project_dir is not a git repository" >&2
exit 1
fi
# Everything after the latest upstream tag is ours.
base_tag=$(git -C "$project_dir" describe --tags --abbrev=0 HEAD 2>/dev/null)
if [[ -z "$base_tag" ]]; then
echo "error: no tags found in $project" >&2
exit 1
fi
patch_count=$(git -C "$project_dir" rev-list --count "$base_tag..HEAD")
if [[ "$patch_count" -eq 0 ]]; then
echo "$project: no patches (HEAD is at $base_tag)"
patch_files[$project]=""
rm -f "$PATCHES_DIR/$project"-[0-9]*.patch
continue
fi
tmpdir=$(mktemp -d)
git -C "$project_dir" format-patch "$base_tag..HEAD" -o "$tmpdir" --quiet
# Remove old patches for this project
rm -f "$PATCHES_DIR/$project"-[0-9]*.patch
# Copy with project prefix
files=()
for patch in "$tmpdir"/*.patch; do
name="$project-$(basename "$patch")"
cp "$patch" "$PATCHES_DIR/$name"
files+=("$name")
done
rm -rf "$tmpdir"
patch_files[$project]="${files[*]}"
echo "$project: ${#files[@]} patches"
done
# --- Update modules/overlay.nix ---
for project in "${projects[@]}"; do
IFS=' ' read -ra names <<< "${patch_files[$project]:-}"
# Build indented patch lines for Nix
new_lines=""
for name in "${names[@]}"; do
[[ -z "$name" ]] && continue
new_lines+=" ../patches/$name"$'\n'
done
# Replace the patch list between "patches = (old.patches or [ ]) ++ ["
# and the closing "];" for this project's overrideAttrs block.
awk -v project="$project" -v new_patches="$new_lines" '
BEGIN { replacing = 0; found = 0 }
{
if (!found && index($0, project " = kprev." project ".overrideAttrs") > 0) {
found = 1
}
if (found && !replacing && /patches = \(old\.patches/) {
print
replacing = 1
next
}
if (replacing) {
if (/\];/) {
printf "%s", new_patches
print
replacing = 0
found = 0
next
}
next
}
print
}
' "$OVERLAY_NIX" > "${OVERLAY_NIX}.tmp" && mv "${OVERLAY_NIX}.tmp" "$OVERLAY_NIX"
done
echo "updated $OVERLAY_NIX"