tangled
alpha
login
or
join now
oeiuwq.com
/
den
Modular, context-aware and aspect-oriented dendritic Nix configurations. Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/
den.oeiuwq.com
configurations
den
dendritic
nix
aspect
oriented
7
fork
atom
overview
issues
4
pulls
pipelines
Compare changes
Choose any two refs to compare.
base:
theirs
noflake
main
cross
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.0
v0.2.0
v0.1.0
compare:
theirs
noflake
main
cross
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.0
v0.2.0
v0.1.0
go
+146
5 changed files
expand all
collapse all
unified
split
templates
examples
flake.lock
flake.nix
modules
_example
ci
cross-flake-parametric.nix
provider
flake.nix
modules
den.nix
+29
templates/examples/flake.lock
···
234
"type": "github"
235
}
236
},
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
237
"root": {
238
"inputs": {
239
"darwin": "darwin",
···
251
"nixpkgs"
252
],
253
"nixpkgs-stable": "nixpkgs-stable",
0
254
"systems": "systems"
255
}
256
},
···
234
"type": "github"
235
}
236
},
237
+
"provider": {
238
+
"inputs": {
239
+
"den": [
240
+
"den"
241
+
],
242
+
"flake-aspects": [
243
+
"flake-aspects"
244
+
],
245
+
"flake-parts": [
246
+
"flake-parts"
247
+
],
248
+
"import-tree": [
249
+
"import-tree"
250
+
],
251
+
"nixpkgs": [
252
+
"nixpkgs"
253
+
]
254
+
},
255
+
"locked": {
256
+
"path": "./provider",
257
+
"type": "path"
258
+
},
259
+
"original": {
260
+
"path": "./provider",
261
+
"type": "path"
262
+
},
263
+
"parent": []
264
+
},
265
"root": {
266
"inputs": {
267
"darwin": "darwin",
···
279
"nixpkgs"
280
],
281
"nixpkgs-stable": "nixpkgs-stable",
282
+
"provider": "provider",
283
"systems": "systems"
284
}
285
},
+10
templates/examples/flake.nix
···
42
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
43
nixpkgs-lib.follows = "nixpkgs";
44
nixpkgs-stable.url = "github:nixos/nixpkgs/release-25.05";
0
0
0
0
0
0
0
0
0
0
45
systems.url = "github:nix-systems/default";
46
};
47
···
42
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
43
nixpkgs-lib.follows = "nixpkgs";
44
nixpkgs-stable.url = "github:nixos/nixpkgs/release-25.05";
45
+
provider = {
46
+
inputs = {
47
+
den.follows = "den";
48
+
flake-aspects.follows = "flake-aspects";
49
+
flake-parts.follows = "flake-parts";
50
+
import-tree.follows = "import-tree";
51
+
nixpkgs.follows = "nixpkgs";
52
+
};
53
+
url = "path:./provider";
54
+
};
55
systems.url = "github:nix-systems/default";
56
};
57
+67
templates/examples/modules/_example/ci/cross-flake-parametric.nix
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
{
2
+
inputs,
3
+
lib,
4
+
provider,
5
+
...
6
+
}:
7
+
let
8
+
providerModule.nixos.options.providerVars = lib.mkOption {
9
+
type = lib.types.attrsOf lib.types.str;
10
+
default = { };
11
+
};
12
+
in
13
+
{
14
+
flake-file.inputs.provider = {
15
+
url = "path:./provider";
16
+
inputs.den.follows = "den";
17
+
inputs.flake-aspects.follows = "flake-aspects";
18
+
inputs.flake-parts.follows = "flake-parts";
19
+
inputs.import-tree.follows = "import-tree";
20
+
inputs.nixpkgs.follows = "nixpkgs";
21
+
};
22
+
23
+
imports = [
24
+
(inputs.den.namespace "provider" [
25
+
true
26
+
inputs.provider
27
+
])
28
+
];
29
+
30
+
provider.tools._.dev._.editors = {
31
+
nixos.providerVars.LOCAL_EDITOR = "emacs";
32
+
};
33
+
34
+
den.aspects.rockhopper.includes = [
35
+
providerModule
36
+
provider.tools._.dev._.editors
37
+
provider.tools._.dev._.shells
38
+
];
39
+
40
+
perSystem =
41
+
{ checkCond, rockhopper, ... }:
42
+
let
43
+
vars = rockhopper.config.providerVars;
44
+
env = rockhopper.config.environment.variables;
45
+
in
46
+
{
47
+
checks.cross-flake-provider-editor = checkCond "provider editor var set" (
48
+
env.PROVIDER_EDITOR == "vim"
49
+
);
50
+
51
+
checks.cross-flake-provider-shell = checkCond "provider shell var set" (
52
+
env.PROVIDER_SHELL == "fish"
53
+
);
54
+
55
+
checks.cross-flake-local-editor = checkCond "local editor var set" (vars.LOCAL_EDITOR == "emacs");
56
+
57
+
checks.cross-flake-namespace-merged = checkCond "namespace merged from provider input" (
58
+
provider.tools._.dev._.editors == inputs.self.denful.provider.tools._.dev._.editors
59
+
&& provider.tools._.dev._.shells == inputs.self.denful.provider.tools._.dev._.shells
60
+
);
61
+
62
+
checks.cross-flake-input-denful = checkCond "input provider denful accessible" (
63
+
inputs.provider.denful.provider.tools._.dev._.editors.description
64
+
== "Editor configurations from provider flake"
65
+
);
66
+
};
67
+
}
+12
templates/examples/provider/flake.nix
···
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
{
2
+
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
3
+
4
+
inputs = {
5
+
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
6
+
flake-parts.url = "github:hercules-ci/flake-parts";
7
+
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
8
+
flake-aspects.url = "github:vic/flake-aspects";
9
+
import-tree.url = "github:vic/import-tree";
10
+
den.url = "github:vic/den";
11
+
};
12
+
}
+28
templates/examples/provider/modules/den.nix
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
{ inputs, ... }:
2
+
{
3
+
systems = [
4
+
"x86_64-linux"
5
+
"aarch64-darwin"
6
+
];
7
+
8
+
imports = [
9
+
inputs.den.flakeModule
10
+
(inputs.den.namespace "provider" true)
11
+
];
12
+
13
+
provider.tools._.dev._.editors = {
14
+
description = "Editor configurations from provider flake";
15
+
nixos.environment.variables.PROVIDER_EDITOR = "vim";
16
+
homeManager =
17
+
{ pkgs, ... }:
18
+
{
19
+
home.packages = [ pkgs.vim ];
20
+
};
21
+
};
22
+
23
+
provider.tools._.dev._.shells = {
24
+
description = "Shell configurations from provider flake";
25
+
nixos.environment.variables.PROVIDER_SHELL = "fish";
26
+
nixos.environment.systemPackages = [ ];
27
+
};
28
+
}