Commit graph

5 commits

Author SHA1 Message Date
Josh Robson Chase 7c8bf29df3 generators.toKDL: support repeated nodes, break JiK compat
Replaces the list attr -> KDL conversion logic with a more flexible approach,
allowing for multiple nodes with the same name in a scope. This unfortunately
also breaks the existing JSON-in-KDL semantics in favor of ergonomics. As far
as I can tell though, zellij is the only program using it, and it doesn't accept
JiK anyway.

For example, the following KDL was previously impossible to generate, since nix
attrs were mapped 1:1 to KDL nodes:
```
resize {
	bind "k" "Up" { Resize "Increase Up"; }
	bind "j" "Down" { Resize "Increase Down"; }
}
```

Now, this can be achieved with the nix expression:

```
resize.bind = [
	{ _args = ["k" "Up"]; Resize = "Increase Up"; }
	{ _args = ["j" "Down"]; Resize = "Increase Down"; }
];
```

which would previously have generated the not-very-useful:

```
resize {
	bind {
		- "k" "Up" { Resize "Increase Up"; }
		- "j" "Down" { Resize "Increase Down"; }
	}
}
```

which, in turn, can now be generated via:

```
resize.bind."-" = [
	{ _args = ["k" "Up"]; Resize = "Increase Up"; }
	{ _args = ["j" "Down"]; Resize = "Increase Down"; }
];
```
2024-04-15 08:42:12 -04:00
Patrick Widmer ca922258e1
senpai: switch to scfg format 2024-03-15 11:42:17 +01:00
h7x4 fce9dbfeb4
lib: add generator for KDL
Added a generator for the KDL document language.
This is in order for home-manager to natively generate
the new config format for zellij, as described in nix-community#3364.

There is not a one to one mapping between KDL and nix types,
but attrset translation is heavily based on KDLs JSON-IN-KDL microsyntax.
The exception here is the `_args` and `_props` arguments, which lets you
specify arguments and properties as described in the spec.

See more here:
- https://kdl.dev/
- https://github.com/kdl-org/kdl/blob/main/SPEC.md

The generator also conforms to the interface from the nixpkgs manual:
https://nixos.org/manual/nixpkgs/stable/#sec-generators

Co-authored-by: Gaetan Lepage <gaetan@glepage.com>
2023-03-10 16:48:10 +01:00
Robert Helgesson 61042c7606
lib: use generators from Nixpkgs 2017-09-21 13:18:33 +02:00
Robert Helgesson d7d02c3ce8
Initial import 2017-01-14 13:15:24 +01:00