summaryrefslogtreecommitdiff
path: root/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib.nix')
-rw-r--r--lib.nix52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib.nix b/lib.nix
new file mode 100644
index 0000000..e5a019c
--- /dev/null
+++ b/lib.nix
@@ -0,0 +1,52 @@
+{
+ lib ? import <nixpkgs/lib>,
+}:
+
+lib.fix (self: {
+ evalCores =
+ {
+ modules,
+ specialArgs,
+ }:
+
+ lib.evalModules {
+ modules = [ ./modules ] ++ modules;
+ inherit specialArgs;
+ class = "core";
+ };
+
+ mkCores =
+ {
+ module,
+ specialArgs,
+ sources,
+ }:
+
+ self.outputsWithExtend (
+ self.evalCores {
+ modules = [
+ module
+
+ (
+ { lib, ... }:
+
+ {
+ sources = lib.mkDefault sources;
+ }
+ )
+ ];
+
+ inherit specialArgs;
+ }
+ );
+
+ outputsWithExtend =
+ cores:
+
+ assert cores.class == "core";
+
+ cores.config.outputs
+ // {
+ extendCores = module: self.outputsWithExtend (cores.extendModules { modules = [ module ]; });
+ };
+})