···1818 added: [ <keys only in the second object> ],
1919 removed: [ <keys only in the first object> ],
2020 changed: [ <keys with different values between the two objects> ],
2121+ rebuilds: [ <keys in the second object with values not present at all in first object> ],
2122 }
2223 */
2324 diff =
2525+ old: new:
2426 let
2527 filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs);
2828+ oldOutputs = lib.pipe old [
2929+ (lib.mapAttrsToList (_: lib.attrValues))
3030+ lib.concatLists
3131+ (lib.flip lib.genAttrs (_: true))
3232+ ];
2633 in
2727- old: new: {
3434+ {
2835 added = filterKeys (n: _: !(old ? ${n})) new;
2936 removed = filterKeys (n: _: !(new ? ${n})) old;
3037 changed = filterKeys (
···3542 # Filter out attributes that are the same as the new value
3643 && (v != (new.${n}))
3744 ) old;
4545+ # A "rebuild" is every attrpath ...
4646+ rebuilds = filterKeys (
4747+ _: pkg:
4848+ # ... that has at least one output ...
4949+ lib.any (
5050+ output:
5151+ # ... which has not been built in "old" already.
5252+ !(oldOutputs ? ${output})
5353+ ) (lib.attrValues pkg)
5454+ ) new;
3855 };
39564057 getAttrs =
···19191. `cp -r pkgs/by-name/ka/kanidm/patches/1_4 pkgs/by-name/ka/kanidm/patches/1_5`
20201. Update `1_5.nix` hashes/paths, and as needed for upstream changes, `generic.nix`
21211. Update `all-packages.nix` to add `kanidm_1_5` and `kanidmWithSecretProvisioning_1_5`, leave default
2222+1. Update the previous release, e.g. `1_4.nix` and set `eolDate = "YYYY-MM-DD"` where the date is 30 days from release of 1.5.
22231. Create commit, `kanidm_1_5: init at 1.5.0` - this is the only commit that will be backported
23242425### Update default