29 lines
794 B
Nix
29 lines
794 B
Nix
{ pkgs, lib }:
|
|
flakeDef:
|
|
let
|
|
rewritePerSystem = final: sectionDef:
|
|
lib.forAllSystems (system:
|
|
builtins.mapAttrs (name: value:
|
|
if lib.isDerivation value then
|
|
value
|
|
else
|
|
(pkgs system).callPackage value { self = (final system); }
|
|
) sectionDef
|
|
);
|
|
rewriteAttr = final: name: value:
|
|
let
|
|
final_self = system: (builtins.mapAttrs (aname: avalue:
|
|
if aname == "packages" || aname == "legacyPackages" || aname == "devShells" then
|
|
avalue.${system}
|
|
else
|
|
avalue
|
|
) final);
|
|
in
|
|
if name == "packages" || name == "legacyPackages" || name == "devShells" then
|
|
rewritePerSystem final_self value
|
|
else
|
|
value;
|
|
self = builtins.mapAttrs (rewriteAttr self) flakeDef;
|
|
in
|
|
self
|