"$schema": http://json-schema.org/draft-04/schema# "$id": https://nix.dev/manual/nix/latest/protocols/json/schema/file-system-object-v1.json title: File System Object description: | This schema describes the JSON representation of Nix's [File System Object](@docroot@/store/file-system-object.md). The schema is recursive because file system objects contain other file system objects. type: object required: ["type"] properties: type: type: string enum: ["regular", "symlink", "directory"] # Enforce conditional structure based on `type` anyOf: - $ref: "#/$defs/regular" required: ["type", "contents"] - $ref: "#/$defs/directory" required: ["type", "entries"] - $ref: "#/$defs/symlink" required: ["type", "target"] "$defs": regular: title: Regular File description: | See [Regular File](@docroot@/store/file-system-object.md#regular) in the manual for details. required: ["contents"] properties: type: const: "regular" contents: type: string description: File contents executable: type: boolean description: Whether the file is executable. default: false additionalProperties: false directory: title: Directory description: | See [Directory](@docroot@/store/file-system-object.md#directory) in the manual for details. required: ["entries"] properties: type: const: "directory" entries: type: object description: | Map of names to nested file system objects (for type=directory) additionalProperties: $ref: "#" additionalProperties: false symlink: title: Symbolic Link description: | See [Symbolic Link](@docroot@/store/file-system-object.md#symlink) in the manual for details. required: ["target"] properties: type: const: "symlink" target: type: string description: Target path of the symlink. additionalProperties: false