Skip to content

Commit

Permalink
refactor(pops.load): add __functor
Browse files Browse the repository at this point in the history
  • Loading branch information
GTrunSec committed May 1, 2024
1 parent a43abde commit 8cfade6
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 116 deletions.
109 changes: 40 additions & 69 deletions docs/org/pops-packages.org
Original file line number Diff line number Diff line change
Expand Up @@ -22,78 +22,58 @@ function: ~omnibus.pops.packages~ is responsible for loading packages in a tree
POP,
flops,
lib,
inputs,
}:
load:
let
inherit (flops) recursiveMerge';
in
(super.load (
recursiveMerge' [
{
loader =
__inputs__: path:
# without the scope loader
(__inputs__.inputs.nixpkgs.extend (_: _: { inherit __inputs__; })).callPackage
path
{ };
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
}
load
]
)).addExporters
(super.load.setInit {
loader =
__inputs__: path:
# without the scope loader
(__inputs__.inputs.nixpkgs.extend (_: _: { inherit __inputs__; })).callPackage path { };
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
}).addExporters
[
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
exports =
let
inherit
(root.errors.requiredInputsLazily self.layouts.self.load.inputs.inputs
"omnibus.pops.packages"
[ "nixpkgs" ]
)
(root.errors.requiredInputsLazily self.layouts.self.load.inputs.inputs "omnibus.pops.packages" [
"nixpkgs"
])
nixpkgs
;
inherit (nixpkgs) newScope;
inherit (nixpkgs.lib) makeScope;
in
{
derivations =
lib.attrsets.filterDerivations self.exports.packages
// (lib.optionalAttrs (self.exports.packages ? by-loader)
lib.attrsets.filterDerivations
(lib.concatMapAttrs (_: v: v) self.exports.packages.by-loader)
);
derivations = inputs.self.flake.inputs.flake-utils.lib.flattenTree (
self.exports.packages // self.exports.packages.by-loader
);

scopePackagesPop =
selfScope:
(self.layouts.self.addLoadExtender {
load = {
loader =
__inputs__: path:
(selfScope.overrideScope (_: _: { inherit __inputs__; })).callPackage path { };
__inputs__: path: (selfScope.overrideScope (_: _: { inherit __inputs__; })).callPackage path { };
inputs = { };
};
});

packages =
(makeScope newScope (
selfScope: (self.exports.scopePackagesPop selfScope).exports.default
)).overrideScope
(makeScope newScope (selfScope: (self.exports.scopePackagesPop selfScope).exports.default))
.overrideScope
(
selfScope: _:
let
checkPath =
pathSuffix:
if lib.pathExists (self.layouts.self.load.src + pathSuffix) then
true
else
false;
pathSuffix: if lib.pathExists (self.layouts.self.load.src + pathSuffix) then true else false;
in
{
by-loader = lib.optionalAttrs (checkPath "/by-loader/python3Packages") {
python3Packages =
selfScope.callPackage lib.omnibus.mkPython3PackagesWithScope
{ };
python3Packages = (selfScope.callPackage lib.omnibus.mkPython3PackagesWithScope { }).overrideScope (
_: _: { recurseForDerivations = true; }
);
};
__inputs__ = {
__load__ = self.layouts.self.load;
Expand All @@ -105,10 +85,7 @@ in
(super.load {
loader =
_: path:
(selfScope.overrideScope (
_: _: { __inputs__ = self.layouts.self.load.inputs; }
)).callPackage
path
(selfScope.overrideScope (_: _: { __inputs__ = self.layouts.self.load.inputs; })).callPackage path
{ };
inherit src;
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
Expand All @@ -128,30 +105,24 @@ in
(
(self.exports.packages.overrideScope (
_: scopeSuper: {
python3 = prev.python3.override (
old: {
packageOverrides =
prev.lib.composeExtensions (old.packageOverrides or (_: _: { }))
(
pythonSelf: _:
if (scopeSuper ? by-loader && scopeSuper.by-loader ? python3Packages) then
scopeSuper.by-loader.python3Packages.packages pythonSelf
else
{ }
);
}
);
python3Packages = prev.python3Packages.override (
old: {
overrides = prev.lib.composeExtensions (old.overrides or (_: _: { })) (
pythonSelf: _:
if (scopeSuper ? by-loader && scopeSuper.by-loader ? python3Packages) then
scopeSuper.by-loader.python3Packages.packages pythonSelf
else
{ }
);
}
);
python3 = prev.python3.override (old: {
packageOverrides = prev.lib.composeExtensions (old.packageOverrides or (_: _: { })) (
pythonSelf: _:
if (scopeSuper ? by-loader && scopeSuper.by-loader ? python3Packages) then
scopeSuper.by-loader.python3Packages.packages pythonSelf
else
{ }
);
});
python3Packages = prev.python3Packages.override (old: {
overrides = prev.lib.composeExtensions (old.overrides or (_: _: { })) (
pythonSelf: _:
if (scopeSuper ? by-loader && scopeSuper.by-loader ? python3Packages) then
scopeSuper.by-loader.python3Packages.packages pythonSelf
else
{ }
);
});
}
)).packages
(final // { overrideScope = self.exports.packages.overrideScope; })
Expand Down
15 changes: 9 additions & 6 deletions src/pops/load.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,17 @@
let
inherit (flops) recursiveMerge';
in
load:
(flops.haumea.pops.default.setInit (recursiveMerge' [
{
(POP.extendPop
(flops.haumea.pops.default.setInit {
loader = with haumea; [ (matchers.nix loaders.default) ];
inputs = root.lib.omnibus.loaderInputs;
}
load
])).addExporters
})
(
_: _: {
__functor = self: selectors: self.addLoadExtender { load = selectors; };
}
)
).addExporters
[
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
Expand Down
37 changes: 13 additions & 24 deletions src/pops/overlays.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,18 @@
{
flops,
haumea,
root,
super,
POP,
lib,
flops,
}:
let
inherit (flops) recursiveMerge';
in
load:
(flops.haumea.pops.default.setInit (recursiveMerge' [
{
loader = with haumea; [ (matchers.nix loaders.default) ];
inputs = root.lib.omnibus.loaderInputs;
}
load
])).addExporters
[
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
exports = {
composeOverlays = lib.composeManyExtensions (
lib.recursiveAttrValues self.layouts.default
);
};
}
))
]
super.load.addExporters [
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
exports = {
composeOverlays = lib.composeManyExtensions (
lib.recursiveAttrValues self.layouts.default
);
};
}
))
]
25 changes: 9 additions & 16 deletions src/pops/packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,15 @@
lib,
inputs,
}:
load:
let
inherit (flops) recursiveMerge';
in
(super.load (recursiveMerge' [
{
loader =
__inputs__: path:
# without the scope loader
(__inputs__.inputs.nixpkgs.extend (_: _: { inherit __inputs__; })).callPackage
path
{ };
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
}
load
])).addExporters
(super.load.setInit {
loader =
__inputs__: path:
# without the scope loader
(__inputs__.inputs.nixpkgs.extend (_: _: { inherit __inputs__; })).callPackage
path
{ };
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
}).addExporters
[
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
Expand Down
23 changes: 22 additions & 1 deletion src/pops/scripts.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
lib,
haumea,
projectRoot,
POP,
flops,
}:
(super.load {
src = projectRoot + "/units/scripts";
Expand Down Expand Up @@ -61,7 +63,26 @@

loader = with haumea; [ (matchers.nix loaders.scoped) ];
transformer = [ (_cursor: dir: if dir ? default then dir.default else dir) ];
})
}).addExporters
[
(POP.extendPop flops.haumea.pops.exporter (
self: _super: {
exports = {
apps = lib.mapAttrs (
_: target:
let
inherit (lib) getName;
programName = target.meta.mainProgram or (getName target);
in
{
type = "app";
program = "${target}/bin/${programName}";
}
) self.layouts.default;
};
}
))
]

/*
(matchers.regex "^(default)\\.(nix)" (
Expand Down

0 comments on commit 8cfade6

Please sign in to comment.