* Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a
shorthand for {x = {y = {z = ...;};};}. This is especially useful for NixOS configuration files, e.g. { services = { sshd = { enable = true; port = 2022; }; }; } can now be written as { services.sshd.enable = true; services.sshd.port = 2022; } However, it is currently not permitted to write { services.sshd = {enable = true;}; services.sshd.port = 2022; } as this is considered a duplicate definition of `services.sshd'.
This commit is contained in:
parent
e42975490f
commit
d407d572fd
9 changed files with 118 additions and 26 deletions
1
tests/lang/eval-okay-attrs3.exp
Normal file
1
tests/lang/eval-okay-attrs3.exp
Normal file
|
@ -0,0 +1 @@
|
|||
Str("foo 22 80 itchyxac",[])
|
22
tests/lang/eval-okay-attrs3.nix
Normal file
22
tests/lang/eval-okay-attrs3.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
let
|
||||
|
||||
config =
|
||||
{
|
||||
services.sshd.enable = true;
|
||||
services.sshd.port = 22;
|
||||
services.httpd.port = 80;
|
||||
hostName = "itchy";
|
||||
a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z = "x";
|
||||
foo = {
|
||||
a = "a";
|
||||
b.c = "c";
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
if config.services.sshd.enable
|
||||
then "foo ${toString config.services.sshd.port} ${toString config.services.httpd.port} ${config.hostName}"
|
||||
+ "${config.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z}"
|
||||
+ "${config.foo.a}"
|
||||
+ "${config.foo.b.c}"
|
||||
else "bar"
|
4
tests/lang/parse-fail-dup-attrs-4.nix
Normal file
4
tests/lang/parse-fail-dup-attrs-4.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
services.ssh.port = 22;
|
||||
services.ssh.port = 23;
|
||||
}
|
4
tests/lang/parse-fail-dup-attrs-5.nix
Normal file
4
tests/lang/parse-fail-dup-attrs-5.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
services.ssh = { enable = true; };
|
||||
services.ssh.port = 23;
|
||||
}
|
4
tests/lang/parse-fail-dup-attrs-6.nix
Normal file
4
tests/lang/parse-fail-dup-attrs-6.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
services.ssh.port = 23;
|
||||
services.ssh = { enable = true; };
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue