From 9c2b543e47982f785eed234aca79003d0c698b44 Mon Sep 17 00:00:00 2001 From: valentin gagarin Date: Wed, 13 Nov 2024 15:24:41 +0100 Subject: [PATCH] make template overrides chainable --- lib.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib.nix b/lib.nix index aa8cdaa7..47961906 100644 --- a/lib.nix +++ b/lib.nix @@ -1,7 +1,20 @@ { lib }: rec { template = g: f: x: - (g (f x)) // { override = o: g (lib.recursiveUpdate (f x) o); }; + let + base = f x; + result = g base; + in + result // { + override = new: + let + base' = lib.recursiveUpdate base new; + result' = g base'; + in + result' // { + override = new: (template g (x': base') x).override new; + }; + }; /** Recursively replace occurrences of `from` with `to` within `string`