···7788## Den as a Library
991010-Den's core (`nix/lib.nix`) is domain-agnostic. It provides:
1010+Den's core (`/default.nix`) is domain-agnostic. It provides:
11111212| Function | Purpose |
1313|---|---|
···28282929## Using Den for Non-OS Domains
30303131+<Aside title="Source" icon="github">
3232+[default.nix](https://github.com/vic/den/tree/main/default.nix) - [CI test: den-as-lib.nix](https://github.com/vic/den/tree/main/templates/ci/modules/features/den-as-lib.nix)
3333+</Aside>
3434+3135Nothing about `den.lib` assumes NixOS, Darwin, or Home Manager. You can build
3236context pipelines for any Nix module system:
33373438```nix
3535-{ my-aspects, den, ... }: {
3636-3737- # create a private isolated aspect namespace independent of den.aspects
3838- imports = [ (den.namespace "my-aspects" false) ];
3939+# see den-as-lib.nix CI test for working example
39404040- # Define aspects for a custom domain
4141- my-aspects = {
4242- web-server = den.lib.parametric {
4343- terranix.resource.aws_instance.web = { ami = "..."; };
4444- includes = [
4545- # configures using the terranix Nix class
4646- ({ env, ... }: { terranix.resource.aws_instance.web.tags.Env = env; })
4747- ];
4848- };
4141+# Define aspects for a custom domain
4242+den.aspects = {
4343+ web-server = den.lib.parametric {
4444+ terranix.resource.aws_instance.web = { ami = "..."; };
4545+ includes = [
4646+ # configures using the terranix Nix class
4747+ ({ env, ... }: { terranix.resource.aws_instance.web.tags.Env = env; })
4848+ ];
4949 };
5050+};
50515151- # Resolve for your custom class
5252- aspect = my-aspects.web-server { env = "production"; };
5353- module = aspect.resolve { class = "terranix"; };
5454-}
5252+# Resolve for your custom class
5353+aspect = den.aspects.web-server { env = "production"; };
5454+module = aspect.resolve { class = "terranix"; };
5555```
56565757## Den as a Framework