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

+9 -10
+6 -1
.github/workflows/test.yml
··· 8 8 runs-on: ubuntu-latest 9 9 steps: 10 10 - uses: cachix/install-nix-action@v30 11 - - run: nix flake check -L github:$GITHUB_REPOSITORY/$GITHUB_SHA?dir=checkmate --override-input target github:$GITHUB_REPOSITORY/$GITHUB_SHA 11 + - uses: actions/checkout@v5 12 + - run: | 13 + cd checkmate 14 + nix flake lock 15 + nix flake update target 16 + nix flake check -L
+3 -9
nix/types.nix
··· 5 5 aspectsType = lib.types.submodule ( 6 6 { config, ... }: 7 7 { 8 - freeformType = lib.types.attrsOf (lib.types.either aspectSubmoduleAttrs providerType); 8 + freeformType = lib.types.attrsOf providerType; 9 9 config._module.args.aspects = config; 10 10 } 11 11 ); ··· 30 30 ); 31 31 32 32 functionProviderType = lib.types.either functionToAspect (lib.types.functionTo providerType); 33 - providerType = lib.types.either functionProviderType aspectSubmodule; 33 + providerType = lib.types.either aspectSubmoduleAttrs functionProviderType; 34 34 35 35 aspectSubmoduleAttrs = lib.types.addCheck aspectSubmodule ( 36 36 m: (!builtins.isFunction m) || (isAspectSubmoduleFn m) ··· 78 78 options.provides = lib.mkOption { 79 79 description = "Providers of aspect for other aspects"; 80 80 default = { }; 81 - type = lib.types.submodule ( 82 - { config, ... }: 83 - { 84 - freeformType = lib.types.attrsOf providerType; 85 - config._module.args.provides = config; 86 - } 87 - ); 81 + type = aspectsType; 88 82 }; 89 83 options.__functor = lib.mkOption { 90 84 internal = true;