mirror of
https://github.com/nix-community/flakelight.git
synced 2025-06-21 10:07:51 +02:00
Make mkFlake extensible with additional modules
This is intended to allow flakes implementing a flakelight module to export a mkFlake that automatically includes its module.
This commit is contained in:
parent
62083df539
commit
53f35dc91c
15
default.nix
15
default.nix
@ -6,7 +6,7 @@ nixpkgs:
|
|||||||
let
|
let
|
||||||
inherit (builtins) isAttrs isPath readDir;
|
inherit (builtins) isAttrs isPath readDir;
|
||||||
inherit (nixpkgs.lib) attrNames composeManyExtensions
|
inherit (nixpkgs.lib) attrNames composeManyExtensions
|
||||||
filter findFirst genAttrs getValues hasSuffix isFunction isList
|
filter findFirst fix genAttrs getValues hasSuffix isFunction isList
|
||||||
mapAttrsToList pathExists pipe removePrefix removeSuffix evalModules
|
mapAttrsToList pathExists pipe removePrefix removeSuffix evalModules
|
||||||
mkDefault mkOptionType singleton;
|
mkDefault mkOptionType singleton;
|
||||||
inherit (nixpkgs.lib.types) coercedTo functionTo listOf;
|
inherit (nixpkgs.lib.types) coercedTo functionTo listOf;
|
||||||
@ -14,15 +14,24 @@ let
|
|||||||
builtinModules = mapAttrsToList (k: _: ./builtinModules + ("/" + k))
|
builtinModules = mapAttrsToList (k: _: ./builtinModules + ("/" + k))
|
||||||
(readDir ./builtinModules);
|
(readDir ./builtinModules);
|
||||||
|
|
||||||
mkFlake = src: root: (evalModules {
|
mkFlake = {
|
||||||
|
__functor = self: src: root: (evalModules {
|
||||||
specialArgs.modulesPath = ./builtinModules;
|
specialArgs.modulesPath = ./builtinModules;
|
||||||
modules = builtinModules ++ [
|
modules = builtinModules ++ self.extraModules ++ [
|
||||||
{ inputs.nixpkgs = mkDefault nixpkgs; }
|
{ inputs.nixpkgs = mkDefault nixpkgs; }
|
||||||
{ _module.args = { inherit src flakelight; }; }
|
{ _module.args = { inherit src flakelight; }; }
|
||||||
root
|
root
|
||||||
];
|
];
|
||||||
}).config.outputs;
|
}).config.outputs;
|
||||||
|
|
||||||
|
# Attributes to allow module flakes to extend mkFlake
|
||||||
|
extraModules = [ ];
|
||||||
|
extend = (fix (extend': mkFlake': modules: fix (self: mkFlake' // {
|
||||||
|
extraModules = mkFlake'.extraModules ++ modules;
|
||||||
|
extend = extend' self;
|
||||||
|
}))) mkFlake;
|
||||||
|
};
|
||||||
|
|
||||||
flakelight = {
|
flakelight = {
|
||||||
inherit mkFlake supportedSystem autoImport autoImportArgs;
|
inherit mkFlake supportedSystem autoImport autoImportArgs;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user