Skip to content

Angle Brackets Syntax

import { Aside } from ‘@astrojs/starlight/components’;

Den’s __findFile resolves angle-bracket expressions to aspect paths:

ExpressionResolves to
<den.lib>den.lib
<den.default>den.default
<igloo>den.aspects.igloo
<foo/bar>den.aspects.foo.provides.bar
<foo/bar/baz>den.aspects.foo.provides.bar.provides.baz
<ns/tools>den.ful.ns.tools

Bring __findFile into scope from module arguments:

{ den, __findFile, ... }: {
_module.args.__findFile = den.lib.__findFile;
den.aspects.igloo.includes = [ <den/define-user> ];
}

Create a module that sets it for all modules:

{ den, ... }: {
_module.args.__findFile = den.lib.__findFile;
}

Then use it anywhere:

{ __findFile, ... }: {
den.default.includes = [ <den/define-user> ];
den.aspects.igloo.includes = [ <foo/bar/baz> ];
}

For a single lexical scope:

{ den, ... }:
let
inherit (den.lib) __findFile;
in {
den.aspects.igloo.includes = [ <den/define-user> ];
}

With a namespace ns enabled:

{ __findFile, ns, ... }: {
ns.moo.silly = true;
# access:
expr = <ns/moo>; # resolves to den.ful.ns.moo
}

Slashes translate to .provides. in the aspect tree:

den.aspects.foo.provides.bar.provides.baz.nixos.programs.fish.enable = true;
den.aspects.igloo.includes = [ <foo/bar/baz> ];
# igloo gets fish enabled