fake.modules transposition for aspect-oriented Dendritic Nix. with cross-aspect dependencies. Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/ dendrix.oeiuwq.com/Dendritic.html
dendritic nix aspect oriented

use providerType in aspects

+3 -9
+3 -9
nix/types.nix
··· 5 aspectsType = lib.types.submodule ( 6 { config, ... }: 7 { 8 - freeformType = lib.types.attrsOf (lib.types.either aspectSubmoduleAttrs providerType); 9 config._module.args.aspects = config; 10 } 11 ); ··· 30 ); 31 32 functionProviderType = lib.types.either functionToAspect (lib.types.functionTo providerType); 33 - providerType = lib.types.either functionProviderType aspectSubmodule; 34 35 aspectSubmoduleAttrs = lib.types.addCheck aspectSubmodule ( 36 m: (!builtins.isFunction m) || (isAspectSubmoduleFn m) ··· 78 options.provides = lib.mkOption { 79 description = "Providers of aspect for other aspects"; 80 default = { }; 81 - type = lib.types.submodule ( 82 - { config, ... }: 83 - { 84 - freeformType = lib.types.attrsOf providerType; 85 - config._module.args.provides = config; 86 - } 87 - ); 88 }; 89 options.__functor = lib.mkOption { 90 internal = true;
··· 5 aspectsType = lib.types.submodule ( 6 { config, ... }: 7 { 8 + freeformType = lib.types.attrsOf providerType; 9 config._module.args.aspects = config; 10 } 11 ); ··· 30 ); 31 32 functionProviderType = lib.types.either functionToAspect (lib.types.functionTo providerType); 33 + providerType = lib.types.either aspectSubmoduleAttrs functionProviderType; 34 35 aspectSubmoduleAttrs = lib.types.addCheck aspectSubmodule ( 36 m: (!builtins.isFunction m) || (isAspectSubmoduleFn m) ··· 78 options.provides = lib.mkOption { 79 description = "Providers of aspect for other aspects"; 80 default = { }; 81 + type = aspectsType; 82 }; 83 options.__functor = lib.mkOption { 84 internal = true;