From b2cb606e5daf3b4825d2d9e423fe40ba90d755f1 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Fri, 5 Jun 2026 11:54:14 -0700 Subject: [PATCH] Make patch-overlays idempotent --- overlays/squashfs-labels/default.nix | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/overlays/squashfs-labels/default.nix b/overlays/squashfs-labels/default.nix index 8a482d3..a8ef856 100644 --- a/overlays/squashfs-labels/default.nix +++ b/overlays/squashfs-labels/default.nix @@ -1,12 +1,18 @@ # We patch in support for squashfs labels because # https://github.com/NixOS/nixpkgs/pull/236656 requires filesystems to have labels and # https://github.com/plougher/squashfs-tools/issues/59 squashfs doesn't support labels -final: prev: { - squashfsTools = prev.squashfsTools.overrideAttrs (old: { - patches = (old.patches or [ ]) ++ [ ./squashfs-tools-label.patch ]; - }); - - util-linux = prev.util-linux.overrideAttrs (old: { - patches = (old.patches or [ ]) ++ [ ./util-linux-squashfs-label.patch ]; - }); +final: prev: +let + idempontenlyAddPatch = + pkg: patch: + if builtins.elem patch (pkg.drvAttrs.patches or [ ]) then + pkg + else + pkg.overrideAttrs (old: { + patches = (old.patches or [ ]) ++ [ patch ]; + }); +in +{ + squashfsTools = idempontenlyAddPatch prev.squashfsTools ./squashfs-tools-label.patch; + util-linux = idempontenlyAddPatch prev.util-linux ./util-linux-squashfs-label.patch; } -- 2.51.2