1import "struct"
2
3#BootspecV1: {
4 system: string
5 init: string
6 initrd?: string
7 initrdSecrets?: string
8 kernel: string
9 kernelParams: [...string]
10 label: string
11 toplevel: string
12}
13
14// A restricted document does not allow any official specialisation
15// information in it to avoid "recursive specialisations".
16#RestrictedDocument: struct.MinFields(1) & {
17 "org.nixos.bootspec.v1": #BootspecV1
18 [=~"^"]: #BootspecExtension
19}
20
21// Specialisations are a hashmap of strings
22#BootspecSpecialisationV1: [string]: #RestrictedDocument
23
24// Bootspec extensions are defined by the extension author.
25#BootspecExtension: {...}
26
27// A "full" document allows official specialisation information
28// in the top-level with a reserved namespaced key.
29Document: #RestrictedDocument & {
30 "org.nixos.specialisation.v1"?: #BootspecSpecialisationV1
31}