add backport helpers to lib.backport
parent
07c9126aa9
commit
ef0f816b70
@ -0,0 +1,42 @@
|
||||
{ inputs, self, ... }@flakeArg:
|
||||
let
|
||||
inherit (inputs) nixpkgs nixpkgs_unstable;
|
||||
inherit (nixpkgs) lib; # prevent infinite recursion
|
||||
inherit (builtins) isString;
|
||||
inherit (lib.attrsets) attrByPath hasAttrByPath updateManyAttrsByPath;
|
||||
inherit (lib.options) showOption;
|
||||
inherit (lib.strings) splitString;
|
||||
inherit (lib.trivial) flip pipe warnIf;
|
||||
inherit (self) backportByPath;
|
||||
in
|
||||
{
|
||||
|
||||
backportByPath =
|
||||
let
|
||||
pathInterpret = p: if isString p then splitString "." p else p;
|
||||
in
|
||||
new: orig: prefix:
|
||||
flip pipe [
|
||||
(map (
|
||||
path:
|
||||
let
|
||||
pathList = pathInterpret path;
|
||||
pathFull = pathInterpret prefix ++ pathList;
|
||||
error = abort "attr not found on path ${showOption pathFull}";
|
||||
newVal = attrByPath pathFull error new;
|
||||
origVal = attrByPath pathFull newVal orig;
|
||||
in
|
||||
{
|
||||
path = pathList;
|
||||
update =
|
||||
_:
|
||||
warnIf (hasAttrByPath pathFull orig) "${showOption pathFull} no longer needs to be backported"
|
||||
origVal;
|
||||
}
|
||||
))
|
||||
(flip updateManyAttrsByPath { })
|
||||
];
|
||||
|
||||
backportNixpkg = backportByPath nixpkgs_unstable nixpkgs;
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue