summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/system/activation/bootspec.cue27
1 files changed, 20 insertions, 7 deletions
diff --git a/nixos/modules/system/activation/bootspec.cue b/nixos/modules/system/activation/bootspec.cue
index 9f857a1b1cd8..1f7b4afa87ac 100644
--- a/nixos/modules/system/activation/bootspec.cue
+++ b/nixos/modules/system/activation/bootspec.cue
@@ -1,4 +1,6 @@
-#V1: {
+import "struct"
+
+#BootspecV1: {
system: string
init: string
initrd?: string
@@ -7,12 +9,23 @@
kernelParams: [...string]
label: string
toplevel: string
- specialisation?: {
- [=~"^"]: #V1
- }
- extensions?: {...}
}
-Document: {
- v1: #V1
+// A restricted document does not allow any official specialisation
+// information in it to avoid "recursive specialisations".
+#RestrictedDocument: struct.MinFields(1) & {
+ "org.nixos.bootspec.v1": #BootspecV1
+ [=~"^"]: #BootspecExtension
+}
+
+// Specialisations are a hashmap of strings
+#BootspecSpecialisationV1: [string]: #RestrictedDocument
+
+// Bootspec extensions are defined by the extension author.
+#BootspecExtension: {...}
+
+// A "full" document allows official specialisation information
+// in the top-level with a reserved namespaced key.
+Document: #RestrictedDocument & {
+ "org.nixos.specialisation.v1"?: #BootspecSpecialisationV1
}