make template overrides chainable

This commit is contained in:
Valentin Gagarin 2024-11-13 15:24:41 +01:00 committed by Valentin Gagarin
parent 67d00fea7e
commit 18864f2738

View file

@ -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`