mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
As documented, this for file system objects themselves, since `MemorySourceAccessor` is an implementation detail.
65 lines
1.6 KiB
YAML
65 lines
1.6 KiB
YAML
"$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/symlink"
|
|
required: ["type", "target"]
|
|
|
|
- $ref: "#/$defs/directory"
|
|
required: ["type", "contents"]
|
|
|
|
"$defs":
|
|
regular:
|
|
title: Regular File
|
|
required: ["contents"]
|
|
properties:
|
|
type:
|
|
const: "regular"
|
|
contents:
|
|
type: string
|
|
description: Base64-encoded file contents
|
|
executable:
|
|
type: boolean
|
|
description: Whether the file is executable.
|
|
default: false
|
|
additionalProperties: false
|
|
|
|
symlink:
|
|
title: Symbolic Link
|
|
required: ["target"]
|
|
properties:
|
|
type:
|
|
const: "symlink"
|
|
target:
|
|
type: string
|
|
description: Target path of the symlink.
|
|
additionalProperties: false
|
|
|
|
directory:
|
|
title: Directory
|
|
required: ["contents"]
|
|
properties:
|
|
type:
|
|
const: "directory"
|
|
contents:
|
|
type: object
|
|
description: |
|
|
Map of names to nested file system objects (for type=directory)
|
|
additionalProperties:
|
|
$ref: "#"
|
|
additionalProperties: false
|