Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 3, column: 6, }, end: Position { line: 3, column: 9, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isLocalPath", span: Span { start: Position { line: 7, column: 3, }, end: Position { line: 7, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 8, column: 5, }, end: Position { line: 8, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "substring", span: Span { start: Position { line: 8, column: 14, }, end: Position { line: 8, column: 23, }, }, }, ), ], default: None, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 8, column: 24, }, end: Position { line: 8, column: 25, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 8, column: 26, }, end: Position { line: 8, column: 27, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 8, column: 28, }, end: Position { line: 8, column: 29, }, }, }, ), ], }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 8, column: 34, }, end: Position { line: 8, column: 35, }, }, }, ), ], span: Span { start: Position { line: 8, column: 33, }, end: Position { line: 8, column: 36, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 9, column: 8, }, end: Position { line: 9, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "substring", span: Span { start: Position { line: 9, column: 17, }, end: Position { line: 9, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 9, column: 27, }, end: Position { line: 9, column: 28, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 9, column: 29, }, end: Position { line: 9, column: 30, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 9, column: 31, }, end: Position { line: 9, column: 32, }, }, }, ), ], }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: ".", span: Span { start: Position { line: 9, column: 37, }, end: Position { line: 9, column: 38, }, }, }, ), ], span: Span { start: Position { line: 9, column: 36, }, end: Position { line: 9, column: 39, }, }, }, ), }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 10, column: 8, }, end: Position { line: 10, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "match", span: Span { start: Position { line: 10, column: 17, }, end: Position { line: 10, column: 22, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[.*:.*]", span: Span { start: Position { line: 10, column: 24, }, end: Position { line: 10, column: 31, }, }, }, ), ], span: Span { start: Position { line: 10, column: 23, }, end: Position { line: 10, column: 32, }, }, }, ), ], }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 10, column: 36, }, end: Position { line: 10, column: 40, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 7, column: 17, }, end: Position { line: 10, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkExcludeFile", span: Span { start: Position { line: 12, column: 3, }, end: Position { line: 12, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 14, column: 5, }, end: Position { line: 14, column: 9, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 14, column: 10, }, end: Position { line: 14, column: 19, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "excludefile", span: Span { start: Position { line: 14, column: 21, }, end: Position { line: 14, column: 32, }, }, }, ), ], span: Span { start: Position { line: 14, column: 20, }, end: Position { line: 14, column: 33, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 14, column: 35, }, end: Position { line: 14, column: 51, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 14, column: 53, }, end: Position { line: 14, column: 55, }, }, }, ), ], span: Span { start: Position { line: 14, column: 52, }, end: Position { line: 14, column: 56, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 14, column: 57, }, end: Position { line: 14, column: 60, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "exclude", span: Span { start: Position { line: 14, column: 61, }, end: Position { line: 14, column: 68, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 12, column: 19, }, end: Position { line: 14, column: 69, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkKeepArgs", span: Span { start: Position { line: 16, column: 3, }, end: Position { line: 16, column: 13, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 19, column: 5, }, end: Position { line: 19, column: 21, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 19, column: 23, }, end: Position { line: 19, column: 24, }, }, }, ), ], span: Span { start: Position { line: 19, column: 22, }, end: Position { line: 19, column: 25, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 20, column: 8, }, end: Position { line: 20, column: 22, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--keep-", span: Span { start: Position { line: 20, column: 31, }, end: Position { line: 20, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 20, column: 40, }, end: Position { line: 20, column: 41, }, }, }, ), }, ), Raw( PartRaw { content: "=", span: Span { start: Position { line: 20, column: 31, }, end: Position { line: 20, column: 43, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 20, column: 45, }, end: Position { line: 20, column: 53, }, }, }, ), arguments: [ Identifier( Identifier { id: "y", span: Span { start: Position { line: 20, column: 54, }, end: Position { line: 20, column: 55, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 20, column: 30, }, end: Position { line: 20, column: 57, }, }, }, ), span: Span { start: Position { line: 20, column: 27, }, end: Position { line: 20, column: 57, }, }, }, ), span: Span { start: Position { line: 20, column: 24, }, end: Position { line: 20, column: 57, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 20, column: 59, }, end: Position { line: 20, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 20, column: 63, }, end: Position { line: 20, column: 68, }, }, }, ), Raw( PartRaw { content: "keep", span: Span { start: Position { line: 20, column: 69, }, end: Position { line: 20, column: 73, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 16, column: 16, }, end: Position { line: 20, column: 74, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkBackupScript", span: Span { start: Position { line: 22, column: 3, }, end: Position { line: 22, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "on_exit()\n{\n exitStatus=$?\n ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 26, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 26, column: 9, }, end: Position { line: 26, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postHook", span: Span { start: Position { line: 26, column: 13, }, end: Position { line: 26, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n exit $exitStatus\n}\ntrap on_exit EXIT\n\narchiveName=\"", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 31, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 31, column: 23, }, end: Position { line: 31, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "archiveBaseName", span: Span { start: Position { line: 31, column: 27, }, end: Position { line: 31, column: 42, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 31, column: 46, }, end: Position { line: 31, column: 50, }, }, }, ), }, ), then: String( String_ { parts: [], span: Span { start: Position { line: 31, column: 56, }, end: Position { line: 31, column: 58, }, }, }, ), else_: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 31, column: 64, }, end: Position { line: 31, column: 67, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "archiveBaseName", span: Span { start: Position { line: 31, column: 68, }, end: Position { line: 31, column: 83, }, }, }, ), ], default: None, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-", span: Span { start: Position { line: 31, column: 87, }, end: Position { line: 31, column: 88, }, }, }, ), ], span: Span { start: Position { line: 31, column: 86, }, end: Position { line: 31, column: 89, }, }, }, ), }, ), span: Span { start: Position { line: 31, column: 20, }, end: Position { line: 31, column: 89, }, }, }, ), }, ), Raw( PartRaw { content: "$(date ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 31, column: 97, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 31, column: 99, }, end: Position { line: 31, column: 102, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dateFormat", span: Span { start: Position { line: 31, column: 103, }, end: Position { line: 31, column: 113, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")\"\narchiveSuffix=\"", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 32, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 32, column: 22, }, end: Position { line: 32, column: 36, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 32, column: 37, }, end: Position { line: 32, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "appendFailedSuffix", span: Span { start: Position { line: 32, column: 41, }, end: Position { line: 32, column: 59, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: ".failed", span: Span { start: Position { line: 32, column: 61, }, end: Position { line: 32, column: 68, }, }, }, ), ], span: Span { start: Position { line: 32, column: 60, }, end: Position { line: 32, column: 69, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\"\n", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 33, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 33, column: 7, }, end: Position { line: 33, column: 10, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "preHook", span: Span { start: Position { line: 33, column: 11, }, end: Position { line: 33, column: 18, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 34, column: 3, }, }, }, ), ], span: Span { start: Position { line: 22, column: 25, }, end: Position { line: 34, column: 5, }, }, }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 34, column: 8, }, end: Position { line: 34, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 34, column: 23, }, end: Position { line: 34, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "doInit", span: Span { start: Position { line: 34, column: 27, }, end: Position { line: 34, column: 33, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Run borg init if the repo doesn't exist yet\nif ! borg list $extraArgs > /dev/null; then\n borg init $extraArgs \\\n --encryption ", span: Span { start: Position { line: 35, column: 1, }, end: Position { line: 38, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 38, column: 24, }, end: Position { line: 38, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 38, column: 28, }, end: Position { line: 38, column: 38, }, }, }, ), Raw( PartRaw { content: "mode", span: Span { start: Position { line: 38, column: 39, }, end: Position { line: 38, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " \\\n $extraInitArgs\n ", span: Span { start: Position { line: 35, column: 1, }, end: Position { line: 40, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 40, column: 9, }, end: Position { line: 40, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postInit", span: Span { start: Position { line: 40, column: 13, }, end: Position { line: 40, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nfi\n", span: Span { start: Position { line: 35, column: 1, }, end: Position { line: 42, column: 3, }, }, }, ), ], span: Span { start: Position { line: 34, column: 34, }, end: Position { line: 42, column: 5, }, }, }, ), ], }, ), }, ), operator: Addition, right: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "(\n set -o pipefail\n ", span: Span { start: Position { line: 43, column: 1, }, end: Position { line: 45, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 45, column: 9, }, end: Position { line: 45, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 45, column: 25, }, end: Position { line: 45, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dumpCommand", span: Span { start: Position { line: 45, column: 29, }, end: Position { line: 45, column: 40, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 45, column: 44, }, end: Position { line: 45, column: 48, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 45, column: 54, }, end: Position { line: 45, column: 68, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 45, column: 69, }, end: Position { line: 45, column: 72, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dumpCommand", span: Span { start: Position { line: 45, column: 73, }, end: Position { line: 45, column: 84, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " | \\", span: Span { start: Position { line: 45, column: 52, }, end: Position { line: 45, column: 89, }, }, }, ), ], span: Span { start: Position { line: 45, column: 50, }, end: Position { line: 45, column: 91, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n borg create $extraArgs \\\n --compression ", span: Span { start: Position { line: 43, column: 1, }, end: Position { line: 47, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 47, column: 25, }, end: Position { line: 47, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "compression", span: Span { start: Position { line: 47, column: 29, }, end: Position { line: 47, column: 40, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " \\\n --exclude-from ", span: Span { start: Position { line: 43, column: 1, }, end: Position { line: 48, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkExcludeFile", span: Span { start: Position { line: 48, column: 26, }, end: Position { line: 48, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 48, column: 40, }, end: Position { line: 48, column: 43, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n $extraCreateArgs \\\n \"::$archiveName$archiveSuffix\" \\\n ", span: Span { start: Position { line: 43, column: 1, }, end: Position { line: 51, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 51, column: 14, }, end: Position { line: 51, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "paths", span: Span { start: Position { line: 51, column: 18, }, end: Position { line: 51, column: 23, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 51, column: 27, }, end: Position { line: 51, column: 31, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "-", span: Span { start: Position { line: 51, column: 38, }, end: Position { line: 51, column: 39, }, }, }, ), ], span: Span { start: Position { line: 51, column: 37, }, end: Position { line: 51, column: 40, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArgs", span: Span { start: Position { line: 51, column: 46, }, end: Position { line: 51, column: 61, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 51, column: 62, }, end: Position { line: 51, column: 65, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "paths", span: Span { start: Position { line: 51, column: 66, }, end: Position { line: 51, column: 71, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 51, column: 11, }, end: Position { line: 51, column: 71, }, }, }, ), }, ), Raw( PartRaw { content: "\n)\n", span: Span { start: Position { line: 43, column: 1, }, end: Position { line: 53, column: 3, }, }, }, ), ], span: Span { start: Position { line: 42, column: 8, }, end: Position { line: 53, column: 5, }, }, }, ), }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 53, column: 8, }, end: Position { line: 53, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 53, column: 23, }, end: Position { line: 53, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "appendFailedSuffix", span: Span { start: Position { line: 53, column: 27, }, end: Position { line: 53, column: 45, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "borg rename $extraArgs \\\n \"::$archiveName$archiveSuffix\" \"$archiveName\"\n", span: Span { start: Position { line: 54, column: 1, }, end: Position { line: 56, column: 3, }, }, }, ), ], span: Span { start: Position { line: 53, column: 46, }, end: Position { line: 56, column: 5, }, }, }, ), ], }, ), }, ), operator: Addition, right: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "", span: Span { start: Position { line: 57, column: 1, }, end: Position { line: 57, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 57, column: 7, }, end: Position { line: 57, column: 10, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postCreate", span: Span { start: Position { line: 57, column: 11, }, end: Position { line: 57, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 57, column: 1, }, end: Position { line: 58, column: 3, }, }, }, ), ], span: Span { start: Position { line: 56, column: 8, }, end: Position { line: 58, column: 5, }, }, }, ), }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 58, column: 8, }, end: Position { line: 58, column: 22, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 58, column: 24, }, end: Position { line: 58, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 58, column: 28, }, end: Position { line: 58, column: 33, }, }, }, ), Raw( PartRaw { content: "keep", span: Span { start: Position { line: 58, column: 34, }, end: Position { line: 58, column: 38, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 58, column: 42, }, end: Position { line: 58, column: 45, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "borg prune $extraArgs \\\n ", span: Span { start: Position { line: 59, column: 1, }, end: Position { line: 60, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkKeepArgs", span: Span { start: Position { line: 60, column: 9, }, end: Position { line: 60, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 60, column: 20, }, end: Position { line: 60, column: 23, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n ", span: Span { start: Position { line: 59, column: 1, }, end: Position { line: 61, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 61, column: 9, }, end: Position { line: 61, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 61, column: 25, }, end: Position { line: 61, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 61, column: 29, }, end: Position { line: 61, column: 34, }, }, }, ), Raw( PartRaw { content: "prefix", span: Span { start: Position { line: 61, column: 35, }, end: Position { line: 61, column: 41, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 61, column: 45, }, end: Position { line: 61, column: 49, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--prefix ", span: Span { start: Position { line: 61, column: 52, }, end: Position { line: 61, column: 95, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 61, column: 63, }, end: Position { line: 61, column: 77, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 61, column: 78, }, end: Position { line: 61, column: 81, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 61, column: 82, }, end: Position { line: 61, column: 87, }, }, }, ), Raw( PartRaw { content: "prefix", span: Span { start: Position { line: 61, column: 88, }, end: Position { line: 61, column: 94, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " \\", span: Span { start: Position { line: 61, column: 52, }, end: Position { line: 61, column: 98, }, }, }, ), ], span: Span { start: Position { line: 61, column: 51, }, end: Position { line: 61, column: 99, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n $extraPruneArgs\n", span: Span { start: Position { line: 59, column: 1, }, end: Position { line: 63, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 63, column: 7, }, end: Position { line: 63, column: 10, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postPrune", span: Span { start: Position { line: 63, column: 11, }, end: Position { line: 63, column: 20, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 59, column: 1, }, end: Position { line: 64, column: 3, }, }, }, ), ], span: Span { start: Position { line: 58, column: 47, }, end: Position { line: 64, column: 5, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 22, column: 20, }, end: Position { line: 64, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkPassEnv", span: Span { start: Position { line: 66, column: 3, }, end: Position { line: 66, column: 12, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 66, column: 25, }, end: Position { line: 66, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 66, column: 29, }, end: Position { line: 66, column: 39, }, }, }, ), ], default: None, }, ), target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "passCommand", span: Span { start: Position { line: 67, column: 8, }, end: Position { line: 67, column: 19, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 67, column: 23, }, end: Position { line: 67, column: 27, }, }, }, ), }, ), then: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "BORG_PASSCOMMAND", span: Span { start: Position { line: 68, column: 9, }, end: Position { line: 68, column: 25, }, }, }, ), ], to: Identifier( Identifier { id: "passCommand", span: Span { start: Position { line: 68, column: 28, }, end: Position { line: 68, column: 39, }, }, }, ), }, ), ], span: Span { start: Position { line: 68, column: 7, }, end: Position { line: 68, column: 42, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "passphrase", span: Span { start: Position { line: 69, column: 13, }, end: Position { line: 69, column: 23, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 69, column: 27, }, end: Position { line: 69, column: 31, }, }, }, ), }, ), then: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "BORG_PASSPHRASE", span: Span { start: Position { line: 70, column: 9, }, end: Position { line: 70, column: 24, }, }, }, ), ], to: Identifier( Identifier { id: "passphrase", span: Span { start: Position { line: 70, column: 27, }, end: Position { line: 70, column: 37, }, }, }, ), }, ), ], span: Span { start: Position { line: 70, column: 7, }, end: Position { line: 70, column: 40, }, }, }, ), else_: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 71, column: 10, }, end: Position { line: 71, column: 13, }, }, }, ), span: Span { start: Position { line: 69, column: 10, }, end: Position { line: 71, column: 13, }, }, }, ), span: Span { start: Position { line: 67, column: 5, }, end: Position { line: 71, column: 13, }, }, }, ), span: Span { start: Position { line: 66, column: 20, }, end: Position { line: 71, column: 13, }, }, }, ), span: Span { start: Position { line: 66, column: 15, }, end: Position { line: 71, column: 13, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkBackupService", span: Span { start: Position { line: 73, column: 3, }, end: Position { line: 73, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "userHome", span: Span { start: Position { line: 75, column: 7, }, end: Position { line: 75, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 75, column: 18, }, end: Position { line: 75, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 75, column: 25, }, end: Position { line: 75, column: 30, }, }, }, ), Raw( PartRaw { content: "users", span: Span { start: Position { line: 75, column: 31, }, end: Position { line: 75, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 75, column: 39, }, end: Position { line: 75, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 75, column: 43, }, end: Position { line: 75, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "home", span: Span { start: Position { line: 75, column: 49, }, end: Position { line: 75, column: 53, }, }, }, ), ], default: None, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 76, column: 8, }, end: Position { line: 76, column: 21, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "borgbackup-job-", span: Span { start: Position { line: 76, column: 23, }, end: Position { line: 76, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 76, column: 40, }, end: Position { line: 76, column: 44, }, }, }, ), }, ), ], span: Span { start: Position { line: 76, column: 22, }, end: Position { line: 76, column: 46, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 77, column: 7, }, end: Position { line: 77, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "BorgBackup job ", span: Span { start: Position { line: 77, column: 22, }, end: Position { line: 77, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 77, column: 39, }, end: Position { line: 77, column: 43, }, }, }, ), }, ), ], span: Span { start: Position { line: 77, column: 21, }, end: Position { line: 77, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 78, column: 7, }, end: Position { line: 78, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 78, column: 19, }, end: Position { line: 78, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "borgbackup", span: Span { start: Position { line: 79, column: 9, }, end: Position { line: 79, column: 19, }, }, }, ), Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 79, column: 20, }, end: Position { line: 79, column: 27, }, }, }, ), ], span: Span { start: Position { line: 78, column: 25, }, end: Position { line: 80, column: 8, }, }, }, ), span: Span { start: Position { line: 78, column: 14, }, end: Position { line: 80, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 81, column: 7, }, end: Position { line: 81, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkBackupScript", span: Span { start: Position { line: 81, column: 16, }, end: Position { line: 81, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 81, column: 31, }, end: Position { line: 81, column: 34, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 82, column: 7, }, end: Position { line: 82, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 83, column: 9, }, end: Position { line: 83, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 83, column: 16, }, end: Position { line: 83, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 83, column: 20, }, end: Position { line: 83, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 84, column: 9, }, end: Position { line: 84, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 84, column: 17, }, end: Position { line: 84, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 84, column: 21, }, end: Position { line: 84, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "CPUSchedulingPolicy", span: Span { start: Position { line: 86, column: 9, }, end: Position { line: 86, column: 28, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "idle", span: Span { start: Position { line: 86, column: 32, }, end: Position { line: 86, column: 36, }, }, }, ), ], span: Span { start: Position { line: 86, column: 31, }, end: Position { line: 86, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "IOSchedulingClass", span: Span { start: Position { line: 87, column: 9, }, end: Position { line: 87, column: 26, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "idle", span: Span { start: Position { line: 87, column: 30, }, end: Position { line: 87, column: 34, }, }, }, ), ], span: Span { start: Position { line: 87, column: 29, }, end: Position { line: 87, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ProtectSystem", span: Span { start: Position { line: 88, column: 9, }, end: Position { line: 88, column: 22, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "strict", span: Span { start: Position { line: 88, column: 26, }, end: Position { line: 88, column: 32, }, }, }, ), ], span: Span { start: Position { line: 88, column: 25, }, end: Position { line: 88, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ReadWritePaths", span: Span { start: Position { line: 89, column: 9, }, end: Position { line: 89, column: 23, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "userHome", span: Span { start: Position { line: 90, column: 16, }, end: Position { line: 90, column: 24, }, }, }, ), }, ), Raw( PartRaw { content: "/.config/borg", span: Span { start: Position { line: 90, column: 14, }, end: Position { line: 90, column: 38, }, }, }, ), ], span: Span { start: Position { line: 90, column: 13, }, end: Position { line: 90, column: 39, }, }, }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "userHome", span: Span { start: Position { line: 90, column: 43, }, end: Position { line: 90, column: 51, }, }, }, ), }, ), Raw( PartRaw { content: "/.cache/borg", span: Span { start: Position { line: 90, column: 41, }, end: Position { line: 90, column: 64, }, }, }, ), ], span: Span { start: Position { line: 90, column: 40, }, end: Position { line: 90, column: 65, }, }, }, ), ], span: Span { start: Position { line: 90, column: 11, }, end: Position { line: 90, column: 67, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 91, column: 14, }, end: Position { line: 91, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "readWritePaths", span: Span { start: Position { line: 91, column: 18, }, end: Position { line: 91, column: 32, }, }, }, ), ], default: None, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 93, column: 14, }, end: Position { line: 93, column: 22, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isLocalPath", span: Span { start: Position { line: 93, column: 24, }, end: Position { line: 93, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 93, column: 36, }, end: Position { line: 93, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 93, column: 40, }, end: Position { line: 93, column: 44, }, }, }, ), ], default: None, }, ), ], }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 93, column: 46, }, end: Position { line: 93, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 93, column: 50, }, end: Position { line: 93, column: 54, }, }, }, ), ], default: None, }, ), ], }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "PrivateTmp", span: Span { start: Position { line: 94, column: 9, }, end: Position { line: 94, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 94, column: 22, }, end: Position { line: 94, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "privateTmp", span: Span { start: Position { line: 94, column: 26, }, end: Position { line: 94, column: 36, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 82, column: 23, }, end: Position { line: 95, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 96, column: 7, }, end: Position { line: 96, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "BORG_REPO", span: Span { start: Position { line: 97, column: 9, }, end: Position { line: 97, column: 18, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 97, column: 21, }, end: Position { line: 97, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 97, column: 25, }, end: Position { line: 97, column: 29, }, }, }, ), ], default: None, }, ), }, ), Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 98, column: 18, }, end: Position { line: 98, column: 21, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "extraArgs", span: Span { start: Position { line: 98, column: 23, }, end: Position { line: 98, column: 32, }, }, }, ), Raw( PartRaw { content: "extraInitArgs", span: Span { start: Position { line: 98, column: 33, }, end: Position { line: 98, column: 46, }, }, }, ), Raw( PartRaw { content: "extraCreateArgs", span: Span { start: Position { line: 98, column: 47, }, end: Position { line: 98, column: 62, }, }, }, ), Raw( PartRaw { content: "extraPruneArgs", span: Span { start: Position { line: 98, column: 63, }, end: Position { line: 98, column: 77, }, }, }, ), ], span: Span { start: Position { line: 96, column: 22, }, end: Position { line: 98, column: 78, }, }, }, ), ], span: Span { start: Position { line: 96, column: 21, }, end: Position { line: 99, column: 8, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkPassEnv", span: Span { start: Position { line: 99, column: 13, }, end: Position { line: 99, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 99, column: 23, }, end: Position { line: 99, column: 26, }, }, }, ), ], }, ), operator: Update, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 99, column: 31, }, end: Position { line: 99, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 99, column: 35, }, end: Position { line: 99, column: 46, }, }, }, ), ], default: None, }, ), }, ), }, ), }, ), ], span: Span { start: Position { line: 76, column: 47, }, end: Position { line: 100, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 74, column: 5, }, end: Position { line: 100, column: 6, }, }, }, ), span: Span { start: Position { line: 73, column: 27, }, end: Position { line: 100, column: 6, }, }, }, ), span: Span { start: Position { line: 73, column: 21, }, end: Position { line: 100, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkBackupTimers", span: Span { start: Position { line: 102, column: 3, }, end: Position { line: 102, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 103, column: 5, }, end: Position { line: 103, column: 18, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "borgbackup-job-", span: Span { start: Position { line: 103, column: 20, }, end: Position { line: 103, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 103, column: 37, }, end: Position { line: 103, column: 41, }, }, }, ), }, ), ], span: Span { start: Position { line: 103, column: 19, }, end: Position { line: 103, column: 43, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 104, column: 7, }, end: Position { line: 104, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "BorgBackup job ", span: Span { start: Position { line: 104, column: 22, }, end: Position { line: 104, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 104, column: 39, }, end: Position { line: 104, column: 43, }, }, }, ), }, ), Raw( PartRaw { content: " timer", span: Span { start: Position { line: 104, column: 22, }, end: Position { line: 104, column: 50, }, }, }, ), ], span: Span { start: Position { line: 104, column: 21, }, end: Position { line: 104, column: 51, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 105, column: 7, }, end: Position { line: 105, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "timers.target", span: Span { start: Position { line: 105, column: 21, }, end: Position { line: 105, column: 34, }, }, }, ), ], span: Span { start: Position { line: 105, column: 20, }, end: Position { line: 105, column: 35, }, }, }, ), ], span: Span { start: Position { line: 105, column: 18, }, end: Position { line: 105, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timerConfig", span: Span { start: Position { line: 106, column: 7, }, end: Position { line: 106, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Persistent", span: Span { start: Position { line: 107, column: 9, }, end: Position { line: 107, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 107, column: 22, }, end: Position { line: 107, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "persistentTimer", span: Span { start: Position { line: 107, column: 26, }, end: Position { line: 107, column: 41, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OnCalendar", span: Span { start: Position { line: 108, column: 9, }, end: Position { line: 108, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 108, column: 22, }, end: Position { line: 108, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 108, column: 26, }, end: Position { line: 108, column: 33, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 106, column: 21, }, end: Position { line: 109, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 111, column: 7, }, end: Position { line: 111, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 111, column: 15, }, end: Position { line: 111, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 111, column: 25, }, end: Position { line: 111, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "persistentTimer", span: Span { start: Position { line: 111, column: 29, }, end: Position { line: 111, column: 44, }, }, }, ), ], default: None, }, ), operator: LogicalAnd, right: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isLocalPath", span: Span { start: Position { line: 111, column: 49, }, end: Position { line: 111, column: 60, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 111, column: 61, }, end: Position { line: 111, column: 64, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 111, column: 65, }, end: Position { line: 111, column: 69, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 111, column: 48, }, end: Position { line: 111, column: 69, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "network-online.target", span: Span { start: Position { line: 111, column: 72, }, end: Position { line: 111, column: 93, }, }, }, ), ], span: Span { start: Position { line: 111, column: 71, }, end: Position { line: 111, column: 94, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 103, column: 44, }, end: Position { line: 112, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 102, column: 26, }, end: Position { line: 112, column: 6, }, }, }, ), span: Span { start: Position { line: 102, column: 20, }, end: Position { line: 112, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkWrapperDrv", span: Span { start: Position { line: 115, column: 3, }, end: Position { line: 115, column: 15, }, }, }, ), ], to: Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: false, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "original", default: None, }, FunctionHeadDestructuredArgument { identifier: "name", default: None, }, FunctionHeadDestructuredArgument { identifier: "set", default: Some( Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 116, column: 29, }, end: Position { line: 116, column: 31, }, }, }, ), ), }, ], }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 118, column: 5, }, end: Position { line: 118, column: 9, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runCommand", span: Span { start: Position { line: 118, column: 10, }, end: Position { line: 118, column: 20, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 118, column: 24, }, end: Position { line: 118, column: 28, }, }, }, ), }, ), Raw( PartRaw { content: "-wrapper", span: Span { start: Position { line: 118, column: 22, }, end: Position { line: 118, column: 37, }, }, }, ), ], span: Span { start: Position { line: 118, column: 21, }, end: Position { line: 118, column: 38, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nativeBuildInputs", span: Span { start: Position { line: 119, column: 7, }, end: Position { line: 119, column: 24, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 119, column: 29, }, end: Position { line: 119, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "makeWrapper", span: Span { start: Position { line: 119, column: 34, }, end: Position { line: 119, column: 45, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 119, column: 27, }, end: Position { line: 119, column: 47, }, }, }, ), }, ), ], span: Span { start: Position { line: 118, column: 39, }, end: Position { line: 120, column: 6, }, }, }, ), With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 120, column: 13, }, end: Position { line: 120, column: 16, }, }, }, ), target: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "makeWrapper \"", span: Span { start: Position { line: 121, column: 1, }, end: Position { line: 121, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "original", span: Span { start: Position { line: 121, column: 22, }, end: Position { line: 121, column: 30, }, }, }, ), }, ), Raw( PartRaw { content: "\" \"$out/bin/", span: Span { start: Position { line: 121, column: 1, }, end: Position { line: 121, column: 43, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 121, column: 45, }, end: Position { line: 121, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: "\" \\\n ", span: Span { start: Position { line: 121, column: 1, }, end: Position { line: 122, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 122, column: 11, }, end: Position { line: 122, column: 27, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " \\\n ", span: Span { start: Position { line: 122, column: 29, }, end: Position { line: 122, column: 35, }, }, }, ), ], span: Span { start: Position { line: 122, column: 28, }, end: Position { line: 122, column: 36, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 122, column: 38, }, end: Position { line: 122, column: 52, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "--set ", span: Span { start: Position { line: 122, column: 69, }, end: Position { line: 122, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 122, column: 77, }, end: Position { line: 122, column: 81, }, }, }, ), }, ), Raw( PartRaw { content: " \"", span: Span { start: Position { line: 122, column: 69, }, end: Position { line: 122, column: 84, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 122, column: 86, }, end: Position { line: 122, column: 91, }, }, }, ), }, ), Raw( PartRaw { content: "\"", span: Span { start: Position { line: 122, column: 69, }, end: Position { line: 122, column: 93, }, }, }, ), ], span: Span { start: Position { line: 122, column: 67, }, end: Position { line: 122, column: 95, }, }, }, ), span: Span { start: Position { line: 122, column: 60, }, end: Position { line: 122, column: 95, }, }, }, ), span: Span { start: Position { line: 122, column: 54, }, end: Position { line: 122, column: 95, }, }, }, ), Identifier( Identifier { id: "set", span: Span { start: Position { line: 122, column: 97, }, end: Position { line: 122, column: 100, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 121, column: 1, }, end: Position { line: 123, column: 5, }, }, }, ), ], span: Span { start: Position { line: 120, column: 18, }, end: Position { line: 123, column: 7, }, }, }, ), span: Span { start: Position { line: 120, column: 8, }, end: Position { line: 123, column: 7, }, }, }, ), ], }, ), span: Span { start: Position { line: 115, column: 18, }, end: Position { line: 123, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkBorgWrapper", span: Span { start: Position { line: 125, column: 3, }, end: Position { line: 125, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkWrapperDrv", span: Span { start: Position { line: 125, column: 30, }, end: Position { line: 125, column: 42, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "original", span: Span { start: Position { line: 126, column: 5, }, end: Position { line: 126, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 126, column: 19, }, end: Position { line: 126, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "borgbackup", span: Span { start: Position { line: 126, column: 24, }, end: Position { line: 126, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/borg", span: Span { start: Position { line: 126, column: 17, }, end: Position { line: 126, column: 44, }, }, }, ), ], span: Span { start: Position { line: 126, column: 16, }, end: Position { line: 126, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 127, column: 5, }, end: Position { line: 127, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "borg-job-", span: Span { start: Position { line: 127, column: 13, }, end: Position { line: 127, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 127, column: 24, }, end: Position { line: 127, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 127, column: 12, }, end: Position { line: 127, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "set", span: Span { start: Position { line: 128, column: 5, }, end: Position { line: 128, column: 8, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "BORG_REPO", span: Span { start: Position { line: 128, column: 13, }, end: Position { line: 128, column: 22, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 128, column: 25, }, end: Position { line: 128, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 128, column: 29, }, end: Position { line: 128, column: 33, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 128, column: 11, }, end: Position { line: 128, column: 36, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkPassEnv", span: Span { start: Position { line: 128, column: 41, }, end: Position { line: 128, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 128, column: 51, }, end: Position { line: 128, column: 54, }, }, }, ), ], }, ), operator: Update, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 128, column: 59, }, end: Position { line: 128, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 128, column: 63, }, end: Position { line: 128, column: 74, }, }, }, ), ], default: None, }, ), }, ), }, ), }, ), ], span: Span { start: Position { line: 125, column: 43, }, end: Position { line: 129, column: 4, }, }, }, ), ], }, ), span: Span { start: Position { line: 125, column: 25, }, end: Position { line: 129, column: 4, }, }, }, ), span: Span { start: Position { line: 125, column: 19, }, end: Position { line: 129, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkActivationScript", span: Span { start: Position { line: 132, column: 3, }, end: Position { line: 132, column: 21, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "install", span: Span { start: Position { line: 134, column: 7, }, end: Position { line: 134, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "install -o ", span: Span { start: Position { line: 134, column: 18, }, end: Position { line: 134, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 134, column: 31, }, end: Position { line: 134, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 134, column: 35, }, end: Position { line: 134, column: 39, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -g ", span: Span { start: Position { line: 134, column: 18, }, end: Position { line: 134, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 134, column: 46, }, end: Position { line: 134, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 134, column: 50, }, end: Position { line: 134, column: 55, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 134, column: 17, }, end: Position { line: 134, column: 57, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 136, column: 7, }, end: Position { line: 136, column: 20, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "borgbackup-job-", span: Span { start: Position { line: 136, column: 22, }, end: Position { line: 136, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 136, column: 39, }, end: Position { line: 136, column: 43, }, }, }, ), }, ), ], span: Span { start: Position { line: 136, column: 21, }, end: Position { line: 136, column: 45, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringAfter", span: Span { start: Position { line: 136, column: 47, }, end: Position { line: 136, column: 58, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 136, column: 62, }, end: Position { line: 136, column: 67, }, }, }, ), ], span: Span { start: Position { line: 136, column: 61, }, end: Position { line: 136, column: 68, }, }, }, ), ], span: Span { start: Position { line: 136, column: 59, }, end: Position { line: 136, column: 70, }, }, }, ), BinaryOperation( BinaryOperation { left: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Ensure that the home directory already exists\n# We can't assert createHome == true because that's not the case for root\ncd \"", span: Span { start: Position { line: 137, column: 1, }, end: Position { line: 139, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 139, column: 15, }, end: Position { line: 139, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 139, column: 22, }, end: Position { line: 139, column: 27, }, }, }, ), Raw( PartRaw { content: "users", span: Span { start: Position { line: 139, column: 28, }, end: Position { line: 139, column: 33, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 139, column: 36, }, end: Position { line: 139, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 139, column: 40, }, end: Position { line: 139, column: 44, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "home", span: Span { start: Position { line: 139, column: 46, }, end: Position { line: 139, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\n", span: Span { start: Position { line: 137, column: 1, }, end: Position { line: 140, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "install", span: Span { start: Position { line: 140, column: 11, }, end: Position { line: 140, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: " -d .config/borg\n", span: Span { start: Position { line: 137, column: 1, }, end: Position { line: 141, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "install", span: Span { start: Position { line: 141, column: 11, }, end: Position { line: 141, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: " -d .cache/borg\n", span: Span { start: Position { line: 137, column: 1, }, end: Position { line: 142, column: 7, }, }, }, ), ], span: Span { start: Position { line: 136, column: 72, }, end: Position { line: 142, column: 9, }, }, }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 142, column: 12, }, end: Position { line: 142, column: 26, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isLocalPath", span: Span { start: Position { line: 142, column: 28, }, end: Position { line: 142, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 142, column: 40, }, end: Position { line: 142, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 142, column: 44, }, end: Position { line: 142, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), operator: LogicalAnd, right: UnaryOperation( UnaryOperation { operator: Not, operand: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 142, column: 53, }, end: Position { line: 142, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "removableDevice", span: Span { start: Position { line: 142, column: 57, }, end: Position { line: 142, column: 72, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 142, column: 52, }, end: Position { line: 142, column: 72, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "", span: Span { start: Position { line: 143, column: 1, }, end: Position { line: 143, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "install", span: Span { start: Position { line: 143, column: 11, }, end: Position { line: 143, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: " -d ", span: Span { start: Position { line: 143, column: 1, }, end: Position { line: 143, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 143, column: 25, }, end: Position { line: 143, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 143, column: 40, }, end: Position { line: 143, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 143, column: 44, }, end: Position { line: 143, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 143, column: 1, }, end: Position { line: 144, column: 7, }, }, }, ), ], span: Span { start: Position { line: 142, column: 74, }, end: Position { line: 144, column: 9, }, }, }, ), ], }, ), }, ), ], }, ), ], }, ), span: Span { start: Position { line: 133, column: 5, }, end: Position { line: 144, column: 11, }, }, }, ), span: Span { start: Position { line: 132, column: 30, }, end: Position { line: 144, column: 11, }, }, }, ), span: Span { start: Position { line: 132, column: 24, }, end: Position { line: 144, column: 11, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkPassAssertion", span: Span { start: Position { line: 146, column: 3, }, end: Position { line: 146, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 147, column: 5, }, end: Position { line: 147, column: 14, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 147, column: 22, }, end: Position { line: 147, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 147, column: 26, }, end: Position { line: 147, column: 36, }, }, }, ), ], default: None, }, ), target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "mode", span: Span { start: Position { line: 148, column: 7, }, end: Position { line: 148, column: 11, }, }, }, ), operator: NotEqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "none", span: Span { start: Position { line: 148, column: 16, }, end: Position { line: 148, column: 20, }, }, }, ), ], span: Span { start: Position { line: 148, column: 15, }, end: Position { line: 148, column: 21, }, }, }, ), }, ), operator: Implication, right: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "passCommand", span: Span { start: Position { line: 148, column: 25, }, end: Position { line: 148, column: 36, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 148, column: 40, }, end: Position { line: 148, column: 44, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "passphrase", span: Span { start: Position { line: 148, column: 48, }, end: Position { line: 148, column: 58, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 148, column: 62, }, end: Position { line: 148, column: 66, }, }, }, ), }, ), }, ), }, ), span: Span { start: Position { line: 147, column: 17, }, end: Position { line: 148, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 149, column: 5, }, end: Position { line: 149, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "passCommand or passphrase has to be specified because", span: Span { start: Position { line: 150, column: 8, }, end: Position { line: 150, column: 61, }, }, }, ), ], span: Span { start: Position { line: 150, column: 7, }, end: Position { line: 150, column: 62, }, }, }, ), operator: Addition, right: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: " borgbackup.jobs.", span: Span { start: Position { line: 151, column: 11, }, end: Position { line: 151, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 151, column: 30, }, end: Position { line: 151, column: 34, }, }, }, ), }, ), Raw( PartRaw { content: ".encryption != \"none\"", span: Span { start: Position { line: 151, column: 11, }, end: Position { line: 151, column: 56, }, }, }, ), ], span: Span { start: Position { line: 151, column: 9, }, end: Position { line: 151, column: 58, }, }, }, ), }, ), }, ), ], span: Span { start: Position { line: 146, column: 32, }, end: Position { line: 152, column: 4, }, }, }, ), span: Span { start: Position { line: 146, column: 27, }, end: Position { line: 152, column: 4, }, }, }, ), span: Span { start: Position { line: 146, column: 21, }, end: Position { line: 152, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkRepoService", span: Span { start: Position { line: 154, column: 3, }, end: Position { line: 154, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 155, column: 5, }, end: Position { line: 155, column: 18, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "borgbackup-repo-", span: Span { start: Position { line: 155, column: 20, }, end: Position { line: 155, column: 43, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 155, column: 38, }, end: Position { line: 155, column: 42, }, }, }, ), }, ), ], span: Span { start: Position { line: 155, column: 19, }, end: Position { line: 155, column: 44, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 156, column: 7, }, end: Position { line: 156, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Create BorgBackup repository ", span: Span { start: Position { line: 156, column: 22, }, end: Position { line: 156, column: 58, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 156, column: 53, }, end: Position { line: 156, column: 57, }, }, }, ), }, ), Raw( PartRaw { content: " directory", span: Span { start: Position { line: 156, column: 22, }, end: Position { line: 156, column: 68, }, }, }, ), ], span: Span { start: Position { line: 156, column: 21, }, end: Position { line: 156, column: 69, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 157, column: 7, }, end: Position { line: 157, column: 13, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p ", span: Span { start: Position { line: 158, column: 1, }, end: Position { line: 158, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 158, column: 20, }, end: Position { line: 158, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 158, column: 35, }, end: Position { line: 158, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 158, column: 39, }, end: Position { line: 158, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nchown ", span: Span { start: Position { line: 158, column: 1, }, end: Position { line: 159, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 159, column: 17, }, end: Position { line: 159, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 159, column: 21, }, end: Position { line: 159, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 158, column: 1, }, end: Position { line: 159, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 159, column: 29, }, end: Position { line: 159, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 159, column: 33, }, end: Position { line: 159, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 158, column: 1, }, end: Position { line: 159, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 159, column: 42, }, end: Position { line: 159, column: 56, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 159, column: 57, }, end: Position { line: 159, column: 60, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 159, column: 61, }, end: Position { line: 159, column: 65, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 158, column: 1, }, end: Position { line: 160, column: 7, }, }, }, ), ], span: Span { start: Position { line: 157, column: 16, }, end: Position { line: 160, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 161, column: 7, }, end: Position { line: 161, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 163, column: 9, }, end: Position { line: 163, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 163, column: 17, }, end: Position { line: 163, column: 24, }, }, }, ), ], span: Span { start: Position { line: 163, column: 16, }, end: Position { line: 163, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 161, column: 23, }, end: Position { line: 164, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 165, column: 7, }, end: Position { line: 165, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 165, column: 21, }, end: Position { line: 165, column: 38, }, }, }, ), ], span: Span { start: Position { line: 165, column: 20, }, end: Position { line: 165, column: 39, }, }, }, ), ], span: Span { start: Position { line: 165, column: 18, }, end: Position { line: 165, column: 41, }, }, }, ), }, ), ], span: Span { start: Position { line: 155, column: 45, }, end: Position { line: 166, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 154, column: 25, }, end: Position { line: 166, column: 6, }, }, }, ), span: Span { start: Position { line: 154, column: 19, }, end: Position { line: 166, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkAuthorizedKey", span: Span { start: Position { line: 168, column: 3, }, end: Position { line: 168, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "appendOnly", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "key", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cdCommand", span: Span { start: Position { line: 171, column: 7, }, end: Position { line: 171, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "cd ", span: Span { start: Position { line: 171, column: 20, }, end: Position { line: 171, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 171, column: 25, }, end: Position { line: 171, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 171, column: 40, }, end: Position { line: 171, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 171, column: 44, }, end: Position { line: 171, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 171, column: 19, }, end: Position { line: 171, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "restrictedArg", span: Span { start: Position { line: 172, column: 7, }, end: Position { line: 172, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "--restrict-to-", span: Span { start: Position { line: 172, column: 24, }, end: Position { line: 172, column: 91, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 172, column: 43, }, end: Position { line: 172, column: 46, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "allowSubRepos", span: Span { start: Position { line: 172, column: 47, }, end: Position { line: 172, column: 60, }, }, }, ), ], default: None, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 172, column: 67, }, end: Position { line: 172, column: 71, }, }, }, ), ], span: Span { start: Position { line: 172, column: 66, }, end: Position { line: 172, column: 72, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "repository", span: Span { start: Position { line: 172, column: 79, }, end: Position { line: 172, column: 89, }, }, }, ), ], span: Span { start: Position { line: 172, column: 78, }, end: Position { line: 172, column: 90, }, }, }, ), span: Span { start: Position { line: 172, column: 40, }, end: Position { line: 172, column: 90, }, }, }, ), }, ), Raw( PartRaw { content: " .", span: Span { start: Position { line: 172, column: 24, }, end: Position { line: 172, column: 93, }, }, }, ), ], span: Span { start: Position { line: 172, column: 23, }, end: Position { line: 172, column: 94, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "appendOnlyArg", span: Span { start: Position { line: 173, column: 7, }, end: Position { line: 173, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 173, column: 23, }, end: Position { line: 173, column: 37, }, }, }, ), arguments: [ Identifier( Identifier { id: "appendOnly", span: Span { start: Position { line: 173, column: 38, }, end: Position { line: 173, column: 48, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--append-only", span: Span { start: Position { line: 173, column: 50, }, end: Position { line: 173, column: 63, }, }, }, ), ], span: Span { start: Position { line: 173, column: 49, }, end: Position { line: 173, column: 64, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "quotaArg", span: Span { start: Position { line: 174, column: 7, }, end: Position { line: 174, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 174, column: 18, }, end: Position { line: 174, column: 32, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 174, column: 34, }, end: Position { line: 174, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "quota", span: Span { start: Position { line: 174, column: 38, }, end: Position { line: 174, column: 43, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 174, column: 47, }, end: Position { line: 174, column: 51, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--storage-quota ", span: Span { start: Position { line: 174, column: 54, }, end: Position { line: 174, column: 82, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 174, column: 72, }, end: Position { line: 174, column: 75, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "quota", span: Span { start: Position { line: 174, column: 76, }, end: Position { line: 174, column: 81, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 174, column: 53, }, end: Position { line: 174, column: 83, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serveCommand", span: Span { start: Position { line: 175, column: 7, }, end: Position { line: 175, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "borg serve ", span: Span { start: Position { line: 175, column: 23, }, end: Position { line: 175, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "restrictedArg", span: Span { start: Position { line: 175, column: 36, }, end: Position { line: 175, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 175, column: 23, }, end: Position { line: 175, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "appendOnlyArg", span: Span { start: Position { line: 175, column: 53, }, end: Position { line: 175, column: 66, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 175, column: 23, }, end: Position { line: 175, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "quotaArg", span: Span { start: Position { line: 175, column: 70, }, end: Position { line: 175, column: 78, }, }, }, ), }, ), ], span: Span { start: Position { line: 175, column: 22, }, end: Position { line: 175, column: 80, }, }, }, ), }, ), ], target: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "command=\"", span: Span { start: Position { line: 177, column: 9, }, end: Position { line: 177, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cdCommand", span: Span { start: Position { line: 177, column: 20, }, end: Position { line: 177, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: " && ", span: Span { start: Position { line: 177, column: 9, }, end: Position { line: 177, column: 34, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "serveCommand", span: Span { start: Position { line: 177, column: 36, }, end: Position { line: 177, column: 48, }, }, }, ), }, ), Raw( PartRaw { content: "\",restrict ", span: Span { start: Position { line: 177, column: 9, }, end: Position { line: 177, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "key", span: Span { start: Position { line: 177, column: 62, }, end: Position { line: 177, column: 65, }, }, }, ), }, ), ], span: Span { start: Position { line: 177, column: 7, }, end: Position { line: 177, column: 68, }, }, }, ), span: Span { start: Position { line: 169, column: 5, }, end: Position { line: 177, column: 68, }, }, }, ), span: Span { start: Position { line: 168, column: 38, }, end: Position { line: 177, column: 68, }, }, }, ), span: Span { start: Position { line: 168, column: 26, }, end: Position { line: 177, column: 68, }, }, }, ), span: Span { start: Position { line: 168, column: 21, }, end: Position { line: 177, column: 68, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkUsersConfig", span: Span { start: Position { line: 179, column: 3, }, end: Position { line: 179, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 180, column: 5, }, end: Position { line: 180, column: 10, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 180, column: 13, }, end: Position { line: 180, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 180, column: 17, }, end: Position { line: 180, column: 21, }, }, }, ), ], default: None, }, ), }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "openssh", span: Span { start: Position { line: 181, column: 7, }, end: Position { line: 181, column: 14, }, }, }, ), Raw( PartRaw { content: "authorizedKeys", span: Span { start: Position { line: 181, column: 15, }, end: Position { line: 181, column: 29, }, }, }, ), Raw( PartRaw { content: "keys", span: Span { start: Position { line: 181, column: 30, }, end: Position { line: 181, column: 34, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 182, column: 10, }, end: Position { line: 182, column: 13, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkAuthorizedKey", span: Span { start: Position { line: 182, column: 15, }, end: Position { line: 182, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 182, column: 31, }, end: Position { line: 182, column: 34, }, }, }, ), Identifier( Identifier { id: "false", span: Span { start: Position { line: 182, column: 35, }, end: Position { line: 182, column: 40, }, }, }, ), ], }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 182, column: 42, }, end: Position { line: 182, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "authorizedKeys", span: Span { start: Position { line: 182, column: 46, }, end: Position { line: 182, column: 60, }, }, }, ), ], default: None, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 183, column: 12, }, end: Position { line: 183, column: 15, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkAuthorizedKey", span: Span { start: Position { line: 183, column: 17, }, end: Position { line: 183, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 183, column: 33, }, end: Position { line: 183, column: 36, }, }, }, ), Identifier( Identifier { id: "true", span: Span { start: Position { line: 183, column: 37, }, end: Position { line: 183, column: 41, }, }, }, ), ], }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 183, column: 43, }, end: Position { line: 183, column: 46, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "authorizedKeysAppendOnly", span: Span { start: Position { line: 183, column: 47, }, end: Position { line: 183, column: 71, }, }, }, ), ], default: None, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "useDefaultShell", span: Span { start: Position { line: 184, column: 7, }, end: Position { line: 184, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 184, column: 25, }, end: Position { line: 184, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 185, column: 7, }, end: Position { line: 185, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 185, column: 15, }, end: Position { line: 185, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 185, column: 19, }, end: Position { line: 185, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isSystemUser", span: Span { start: Position { line: 186, column: 7, }, end: Position { line: 186, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 186, column: 22, }, end: Position { line: 186, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 180, column: 25, }, end: Position { line: 187, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "groups", span: Span { start: Position { line: 188, column: 5, }, end: Position { line: 188, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 188, column: 14, }, end: Position { line: 188, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 188, column: 18, }, end: Position { line: 188, column: 23, }, }, }, ), ], default: None, }, ), }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 188, column: 27, }, end: Position { line: 188, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 179, column: 30, }, end: Position { line: 189, column: 4, }, }, }, ), span: Span { start: Position { line: 179, column: 25, }, end: Position { line: 189, column: 4, }, }, }, ), span: Span { start: Position { line: 179, column: 19, }, end: Position { line: 189, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkKeysAssertion", span: Span { start: Position { line: 191, column: 3, }, end: Position { line: 191, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 192, column: 5, }, end: Position { line: 192, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 192, column: 17, }, end: Position { line: 192, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "authorizedKeys", span: Span { start: Position { line: 192, column: 21, }, end: Position { line: 192, column: 35, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 192, column: 39, }, end: Position { line: 192, column: 42, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 192, column: 46, }, end: Position { line: 192, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "authorizedKeysAppendOnly", span: Span { start: Position { line: 192, column: 50, }, end: Position { line: 192, column: 74, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 192, column: 78, }, end: Position { line: 192, column: 81, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 193, column: 5, }, end: Position { line: 193, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "borgbackup.repos.", span: Span { start: Position { line: 194, column: 8, }, end: Position { line: 194, column: 32, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 194, column: 27, }, end: Position { line: 194, column: 31, }, }, }, ), }, ), Raw( PartRaw { content: " does not make sense", span: Span { start: Position { line: 194, column: 8, }, end: Position { line: 194, column: 52, }, }, }, ), ], span: Span { start: Position { line: 194, column: 7, }, end: Position { line: 194, column: 53, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: " without at least one public key", span: Span { start: Position { line: 195, column: 10, }, end: Position { line: 195, column: 42, }, }, }, ), ], span: Span { start: Position { line: 195, column: 9, }, end: Position { line: 195, column: 43, }, }, }, ), }, ), }, ), ], span: Span { start: Position { line: 191, column: 32, }, end: Position { line: 196, column: 4, }, }, }, ), span: Span { start: Position { line: 191, column: 27, }, end: Position { line: 196, column: 4, }, }, }, ), span: Span { start: Position { line: 191, column: 21, }, end: Position { line: 196, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkSourceAssertions", span: Span { start: Position { line: 198, column: 3, }, end: Position { line: 198, column: 21, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 199, column: 5, }, end: Position { line: 199, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "count", span: Span { start: Position { line: 199, column: 17, }, end: Position { line: 199, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "isNull", span: Span { start: Position { line: 199, column: 23, }, end: Position { line: 199, column: 29, }, }, }, ), List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 199, column: 32, }, end: Position { line: 199, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dumpCommand", span: Span { start: Position { line: 199, column: 36, }, end: Position { line: 199, column: 47, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 199, column: 48, }, end: Position { line: 199, column: 51, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "paths", span: Span { start: Position { line: 199, column: 52, }, end: Position { line: 199, column: 57, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 199, column: 30, }, end: Position { line: 199, column: 59, }, }, }, ), ], }, ), operator: EqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 199, column: 63, }, end: Position { line: 199, column: 64, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 200, column: 5, }, end: Position { line: 200, column: 12, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Exactly one of borgbackup.jobs.", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 201, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 201, column: 40, }, end: Position { line: 201, column: 44, }, }, }, ), }, ), Raw( PartRaw { content: ".paths or borgbackup.jobs.", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 201, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 201, column: 73, }, end: Position { line: 201, column: 77, }, }, }, ), }, ), Raw( PartRaw { content: ".dumpCommand\nmust be set.\n", span: Span { start: Position { line: 201, column: 1, }, end: Position { line: 203, column: 5, }, }, }, ), ], span: Span { start: Position { line: 200, column: 15, }, end: Position { line: 203, column: 7, }, }, }, ), }, ), ], span: Span { start: Position { line: 198, column: 35, }, end: Position { line: 204, column: 4, }, }, }, ), span: Span { start: Position { line: 198, column: 30, }, end: Position { line: 204, column: 4, }, }, }, ), span: Span { start: Position { line: 198, column: 24, }, end: Position { line: 204, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkRemovableDeviceAssertions", span: Span { start: Position { line: 206, column: 3, }, end: Position { line: 206, column: 30, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 207, column: 5, }, end: Position { line: 207, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isLocalPath", span: Span { start: Position { line: 207, column: 19, }, end: Position { line: 207, column: 30, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 207, column: 31, }, end: Position { line: 207, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 207, column: 35, }, end: Position { line: 207, column: 39, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 207, column: 17, }, end: Position { line: 207, column: 40, }, }, }, ), operator: Implication, right: UnaryOperation( UnaryOperation { operator: Not, operand: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 207, column: 45, }, end: Position { line: 207, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "removableDevice", span: Span { start: Position { line: 207, column: 49, }, end: Position { line: 207, column: 64, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 207, column: 44, }, end: Position { line: 207, column: 64, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 208, column: 5, }, end: Position { line: 208, column: 12, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "borgbackup.repos.", span: Span { start: Position { line: 209, column: 1, }, end: Position { line: 209, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 209, column: 26, }, end: Position { line: 209, column: 30, }, }, }, ), }, ), Raw( PartRaw { content: ": repo isn't a local path, thus it can't be a removable device!\n", span: Span { start: Position { line: 209, column: 1, }, end: Position { line: 210, column: 5, }, }, }, ), ], span: Span { start: Position { line: 208, column: 15, }, end: Position { line: 210, column: 7, }, }, }, ), }, ), ], span: Span { start: Position { line: 206, column: 44, }, end: Position { line: 211, column: 4, }, }, }, ), span: Span { start: Position { line: 206, column: 39, }, end: Position { line: 211, column: 4, }, }, }, ), span: Span { start: Position { line: 206, column: 33, }, end: Position { line: 211, column: 4, }, }, }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 214, column: 3, }, end: Position { line: 214, column: 7, }, }, }, ), Raw( PartRaw { content: "maintainers", span: Span { start: Position { line: 214, column: 8, }, end: Position { line: 214, column: 19, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "maintainers", span: Span { start: Position { line: 214, column: 27, }, end: Position { line: 214, column: 38, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "dotlambda", span: Span { start: Position { line: 214, column: 42, }, end: Position { line: 214, column: 51, }, }, }, ), ], span: Span { start: Position { line: 214, column: 40, }, end: Position { line: 214, column: 53, }, }, }, ), span: Span { start: Position { line: 214, column: 22, }, end: Position { line: 214, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 215, column: 3, }, end: Position { line: 215, column: 7, }, }, }, ), Raw( PartRaw { content: "doc", span: Span { start: Position { line: 215, column: 8, }, end: Position { line: 215, column: 11, }, }, }, ), ], to: Path( Path { parts: [ Raw( PartRaw { content: "./borgbackup.xml", span: Span { start: Position { line: 215, column: 14, }, end: Position { line: 215, column: 30, }, }, }, ), ], span: Span { start: Position { line: 215, column: 14, }, end: Position { line: 215, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 219, column: 3, }, end: Position { line: 219, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 219, column: 11, }, end: Position { line: 219, column: 19, }, }, }, ), Raw( PartRaw { content: "borgbackup", span: Span { start: Position { line: 219, column: 20, }, end: Position { line: 219, column: 30, }, }, }, ), Raw( PartRaw { content: "jobs", span: Span { start: Position { line: 219, column: 31, }, end: Position { line: 219, column: 35, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 219, column: 38, }, end: Position { line: 219, column: 46, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 220, column: 5, }, end: Position { line: 220, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 220, column: 19, }, end: Position { line: 220, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 220, column: 23, }, end: Position { line: 220, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Deduplicating backups using BorgBackup.\nAdding a job will cause a borg-job-NAME wrapper to be added\nto your system path, so that you can perform maintenance easily.\nSee also the chapter about BorgBackup in the NixOS manual.\n", span: Span { start: Position { line: 221, column: 1, }, end: Position { line: 225, column: 5, }, }, }, ), ], span: Span { start: Position { line: 220, column: 29, }, end: Position { line: 225, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 226, column: 5, }, end: Position { line: 226, column: 12, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 226, column: 15, }, end: Position { line: 226, column: 18, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 227, column: 5, }, end: Position { line: 227, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 227, column: 15, }, end: Position { line: 227, column: 32, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: " { # for a local backup\n rootBackup = {\n paths = \"/\";\n exclude = [ \"/nix\" ];\n repo = \"/path/to/local/repo\";\n encryption = {\n mode = \"repokey\";\n passphrase = \"secret\";\n };\n compression = \"auto,lzma\";\n startAt = \"weekly\";\n };\n }\n { # Root backing each day up to a remote backup server. We assume that you have\n # * created a password less key: ssh-keygen -N \"\" -t ed25519 -f /path/to/ssh_key\n # best practices are: use -t ed25519, /path/to = /run/keys\n # * the passphrase is in the file /run/keys/borgbackup_passphrase\n # * you have initialized the repository manually\n paths = [ \"/etc\" \"/home\" ];\n exclude = [ \"/nix\" \"'**/.cache'\" ];\n doInit = false;\n repo = \"user3@arep.repo.borgbase.com:repo\";\n encryption = {\n mode = \"repokey-blake2\";\n passCommand = \"cat /path/to/passphrase\";\n };\n environment = { BORG_RSH = \"ssh -i /path/to/ssh_key\"; };\n compression = \"auto,lzma\";\n startAt = \"daily\";\n};\n", span: Span { start: Position { line: 228, column: 1, }, end: Position { line: 258, column: 5, }, }, }, ), ], span: Span { start: Position { line: 227, column: 33, }, end: Position { line: 258, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 259, column: 5, }, end: Position { line: 259, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 259, column: 12, }, end: Position { line: 259, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsOf", span: Span { start: Position { line: 259, column: 18, }, end: Position { line: 259, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 259, column: 27, }, end: Position { line: 259, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "submodule", span: Span { start: Position { line: 259, column: 33, }, end: Position { line: 259, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "globalConfig", span: Span { start: Position { line: 259, column: 48, }, end: Position { line: 259, column: 60, }, }, }, ), ], to: Identifier( Identifier { id: "config", span: Span { start: Position { line: 259, column: 63, }, end: Position { line: 259, column: 69, }, }, }, ), }, ), ], target: Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "name", default: None, }, FunctionHeadDestructuredArgument { identifier: "config", default: None, }, ], }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 261, column: 9, }, end: Position { line: 261, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "paths", span: Span { start: Position { line: 263, column: 11, }, end: Position { line: 263, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 263, column: 19, }, end: Position { line: 263, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 264, column: 13, }, end: Position { line: 264, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 264, column: 25, }, end: Position { line: 264, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 264, column: 32, }, end: Position { line: 264, column: 38, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "coercedTo", span: Span { start: Position { line: 264, column: 40, }, end: Position { line: 264, column: 49, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 264, column: 50, }, end: Position { line: 264, column: 53, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 264, column: 54, }, end: Position { line: 264, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "singleton", span: Span { start: Position { line: 264, column: 58, }, end: Position { line: 264, column: 67, }, }, }, ), ], default: None, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 264, column: 69, }, end: Position { line: 264, column: 75, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 264, column: 76, }, end: Position { line: 264, column: 79, }, }, }, ), ], }, ), ], }, ), ], }, ), span: Span { start: Position { line: 264, column: 20, }, end: Position { line: 264, column: 81, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 265, column: 13, }, end: Position { line: 265, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 265, column: 23, }, end: Position { line: 265, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 266, column: 13, }, end: Position { line: 266, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 266, column: 27, }, end: Position { line: 266, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 266, column: 31, }, end: Position { line: 266, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Path(s) to back up.\nMutually exclusive with {option}`dumpCommand`.\n", span: Span { start: Position { line: 267, column: 1, }, end: Position { line: 269, column: 13, }, }, }, ), ], span: Span { start: Position { line: 266, column: 37, }, end: Position { line: 269, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 270, column: 13, }, end: Position { line: 270, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/home/user", span: Span { start: Position { line: 270, column: 24, }, end: Position { line: 270, column: 34, }, }, }, ), ], span: Span { start: Position { line: 270, column: 23, }, end: Position { line: 270, column: 35, }, }, }, ), }, ), ], span: Span { start: Position { line: 263, column: 28, }, end: Position { line: 271, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dumpCommand", span: Span { start: Position { line: 273, column: 11, }, end: Position { line: 273, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 273, column: 25, }, end: Position { line: 273, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 274, column: 13, }, end: Position { line: 274, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 274, column: 25, }, end: Position { line: 274, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 274, column: 32, }, end: Position { line: 274, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 274, column: 39, }, end: Position { line: 274, column: 43, }, }, }, ), ], }, ), span: Span { start: Position { line: 274, column: 20, }, end: Position { line: 274, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 275, column: 13, }, end: Position { line: 275, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 275, column: 23, }, end: Position { line: 275, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 276, column: 13, }, end: Position { line: 276, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 276, column: 27, }, end: Position { line: 276, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 276, column: 31, }, end: Position { line: 276, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Backup the stdout of this program instead of filesystem paths.\nMutually exclusive with {option}`paths`.\n", span: Span { start: Position { line: 277, column: 1, }, end: Position { line: 279, column: 13, }, }, }, ), ], span: Span { start: Position { line: 276, column: 37, }, end: Position { line: 279, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 280, column: 13, }, end: Position { line: 280, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/path/to/createZFSsend.sh", span: Span { start: Position { line: 280, column: 24, }, end: Position { line: 280, column: 49, }, }, }, ), ], span: Span { start: Position { line: 280, column: 23, }, end: Position { line: 280, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 273, column: 34, }, end: Position { line: 281, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repo", span: Span { start: Position { line: 283, column: 11, }, end: Position { line: 283, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 283, column: 18, }, end: Position { line: 283, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 284, column: 13, }, end: Position { line: 284, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 284, column: 20, }, end: Position { line: 284, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 284, column: 26, }, end: Position { line: 284, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 285, column: 13, }, end: Position { line: 285, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 285, column: 27, }, end: Position { line: 285, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 285, column: 31, }, end: Position { line: 285, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Remote or local repository to back up to.", span: Span { start: Position { line: 285, column: 38, }, end: Position { line: 285, column: 79, }, }, }, ), ], span: Span { start: Position { line: 285, column: 37, }, end: Position { line: 285, column: 80, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 286, column: 13, }, end: Position { line: 286, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "user@machine:/path/to/repo", span: Span { start: Position { line: 286, column: 24, }, end: Position { line: 286, column: 50, }, }, }, ), ], span: Span { start: Position { line: 286, column: 23, }, end: Position { line: 286, column: 51, }, }, }, ), }, ), ], span: Span { start: Position { line: 283, column: 27, }, end: Position { line: 287, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "removableDevice", span: Span { start: Position { line: 289, column: 11, }, end: Position { line: 289, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 289, column: 29, }, end: Position { line: 289, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 290, column: 13, }, end: Position { line: 290, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 290, column: 20, }, end: Position { line: 290, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 290, column: 26, }, end: Position { line: 290, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 291, column: 13, }, end: Position { line: 291, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 291, column: 23, }, end: Position { line: 291, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 292, column: 13, }, end: Position { line: 292, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 292, column: 27, }, end: Position { line: 292, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 292, column: 31, }, end: Position { line: 292, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether the repo (which must be local) is a removable device.", span: Span { start: Position { line: 292, column: 38, }, end: Position { line: 292, column: 99, }, }, }, ), ], span: Span { start: Position { line: 292, column: 37, }, end: Position { line: 292, column: 100, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 289, column: 38, }, end: Position { line: 293, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "archiveBaseName", span: Span { start: Position { line: 295, column: 11, }, end: Position { line: 295, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 295, column: 29, }, end: Position { line: 295, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 296, column: 13, }, end: Position { line: 296, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 296, column: 20, }, end: Position { line: 296, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 296, column: 26, }, end: Position { line: 296, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 296, column: 34, }, end: Position { line: 296, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "strMatching", span: Span { start: Position { line: 296, column: 40, }, end: Position { line: 296, column: 51, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[^/{}]+", span: Span { start: Position { line: 296, column: 53, }, end: Position { line: 296, column: 60, }, }, }, ), ], span: Span { start: Position { line: 296, column: 52, }, end: Position { line: 296, column: 61, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 297, column: 13, }, end: Position { line: 297, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "globalConfig", span: Span { start: Position { line: 297, column: 26, }, end: Position { line: 297, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 297, column: 39, }, end: Position { line: 297, column: 49, }, }, }, ), Raw( PartRaw { content: "hostName", span: Span { start: Position { line: 297, column: 50, }, end: Position { line: 297, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "-", span: Span { start: Position { line: 297, column: 24, }, end: Position { line: 297, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 297, column: 62, }, end: Position { line: 297, column: 66, }, }, }, ), }, ), ], span: Span { start: Position { line: 297, column: 23, }, end: Position { line: 297, column: 68, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 298, column: 13, }, end: Position { line: 298, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 298, column: 27, }, end: Position { line: 298, column: 44, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 298, column: 47, }, end: Position { line: 298, column: 48, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 298, column: 47, }, end: Position { line: 298, column: 51, }, }, }, ), Raw( PartRaw { content: "{config.networking.hostName}-\"", span: Span { start: Position { line: 298, column: 47, }, end: Position { line: 298, column: 87, }, }, }, ), ], span: Span { start: Position { line: 298, column: 45, }, end: Position { line: 298, column: 89, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 299, column: 13, }, end: Position { line: 299, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 299, column: 27, }, end: Position { line: 299, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 299, column: 31, }, end: Position { line: 299, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "How to name the created archives. A timestamp, whose format is\ndetermined by {option}`dateFormat`, will be appended. The full\nname can be modified at runtime (`$archiveName`).\nPlaceholders like `{hostname}` must not be used.\nUse `null` for no base name.\n", span: Span { start: Position { line: 300, column: 1, }, end: Position { line: 305, column: 13, }, }, }, ), ], span: Span { start: Position { line: 299, column: 37, }, end: Position { line: 305, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 295, column: 38, }, end: Position { line: 306, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dateFormat", span: Span { start: Position { line: 308, column: 11, }, end: Position { line: 308, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 308, column: 24, }, end: Position { line: 308, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 309, column: 13, }, end: Position { line: 309, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 309, column: 20, }, end: Position { line: 309, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 309, column: 26, }, end: Position { line: 309, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 310, column: 13, }, end: Position { line: 310, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 310, column: 27, }, end: Position { line: 310, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 310, column: 31, }, end: Position { line: 310, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Arguments passed to {command}`date`\nto create a timestamp suffix for the archive name.\n", span: Span { start: Position { line: 311, column: 1, }, end: Position { line: 313, column: 13, }, }, }, ), ], span: Span { start: Position { line: 310, column: 37, }, end: Position { line: 313, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 314, column: 13, }, end: Position { line: 314, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "+%Y-%m-%dT%H:%M:%S", span: Span { start: Position { line: 314, column: 24, }, end: Position { line: 314, column: 42, }, }, }, ), ], span: Span { start: Position { line: 314, column: 23, }, end: Position { line: 314, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 315, column: 13, }, end: Position { line: 315, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "-u +%s", span: Span { start: Position { line: 315, column: 24, }, end: Position { line: 315, column: 30, }, }, }, ), ], span: Span { start: Position { line: 315, column: 23, }, end: Position { line: 315, column: 31, }, }, }, ), }, ), ], span: Span { start: Position { line: 308, column: 33, }, end: Position { line: 316, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 318, column: 11, }, end: Position { line: 318, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 318, column: 21, }, end: Position { line: 318, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 319, column: 13, }, end: Position { line: 319, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 319, column: 25, }, end: Position { line: 319, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "either", span: Span { start: Position { line: 319, column: 32, }, end: Position { line: 319, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 319, column: 39, }, end: Position { line: 319, column: 42, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 319, column: 44, }, end: Position { line: 319, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 319, column: 51, }, end: Position { line: 319, column: 54, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 319, column: 20, }, end: Position { line: 319, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 320, column: 13, }, end: Position { line: 320, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "daily", span: Span { start: Position { line: 320, column: 24, }, end: Position { line: 320, column: 29, }, }, }, ), ], span: Span { start: Position { line: 320, column: 23, }, end: Position { line: 320, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 321, column: 13, }, end: Position { line: 321, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 321, column: 27, }, end: Position { line: 321, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 321, column: 31, }, end: Position { line: 321, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "When or how often the backup should run.\nMust be in the format described in\n{manpage}`systemd.time(7)`.\nIf you do not want the backup to start\nautomatically, use `[ ]`.\nIt will generate a systemd service borgbackup-job-NAME.\nYou may trigger it manually via systemctl restart borgbackup-job-NAME.\n", span: Span { start: Position { line: 322, column: 1, }, end: Position { line: 329, column: 13, }, }, }, ), ], span: Span { start: Position { line: 321, column: 37, }, end: Position { line: 329, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 318, column: 30, }, end: Position { line: 330, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "persistentTimer", span: Span { start: Position { line: 332, column: 11, }, end: Position { line: 332, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 332, column: 29, }, end: Position { line: 332, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 333, column: 13, }, end: Position { line: 333, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 333, column: 23, }, end: Position { line: 333, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 334, column: 13, }, end: Position { line: 334, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 334, column: 20, }, end: Position { line: 334, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 334, column: 26, }, end: Position { line: 334, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 335, column: 13, }, end: Position { line: 335, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 335, column: 23, }, end: Position { line: 335, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 336, column: 13, }, end: Position { line: 336, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 336, column: 27, }, end: Position { line: 336, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 336, column: 31, }, end: Position { line: 336, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set the `persistentTimer` option for the\n{manpage}`systemd.timer(5)`\nwhich triggers the backup immediately if the last trigger\nwas missed (e.g. if the system was powered down).\n", span: Span { start: Position { line: 337, column: 1, }, end: Position { line: 341, column: 13, }, }, }, ), ], span: Span { start: Position { line: 336, column: 37, }, end: Position { line: 341, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 332, column: 38, }, end: Position { line: 342, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 344, column: 11, }, end: Position { line: 344, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 344, column: 18, }, end: Position { line: 344, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 345, column: 13, }, end: Position { line: 345, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 345, column: 20, }, end: Position { line: 345, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 345, column: 26, }, end: Position { line: 345, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 346, column: 13, }, end: Position { line: 346, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 346, column: 27, }, end: Position { line: 346, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 346, column: 31, }, end: Position { line: 346, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The user {command}`borg` is run as.\nUser or group need read permission\nfor the specified {option}`paths`.\n", span: Span { start: Position { line: 347, column: 1, }, end: Position { line: 350, column: 13, }, }, }, ), ], span: Span { start: Position { line: 346, column: 37, }, end: Position { line: 350, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 351, column: 13, }, end: Position { line: 351, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "root", span: Span { start: Position { line: 351, column: 24, }, end: Position { line: 351, column: 28, }, }, }, ), ], span: Span { start: Position { line: 351, column: 23, }, end: Position { line: 351, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 344, column: 27, }, end: Position { line: 352, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 354, column: 11, }, end: Position { line: 354, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 354, column: 19, }, end: Position { line: 354, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 355, column: 13, }, end: Position { line: 355, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 355, column: 20, }, end: Position { line: 355, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 355, column: 26, }, end: Position { line: 355, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 356, column: 13, }, end: Position { line: 356, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 356, column: 27, }, end: Position { line: 356, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 356, column: 31, }, end: Position { line: 356, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The group borg is run as. User or group needs read permission\nfor the specified {option}`paths`.\n", span: Span { start: Position { line: 357, column: 1, }, end: Position { line: 359, column: 13, }, }, }, ), ], span: Span { start: Position { line: 356, column: 37, }, end: Position { line: 359, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 360, column: 13, }, end: Position { line: 360, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "root", span: Span { start: Position { line: 360, column: 24, }, end: Position { line: 360, column: 28, }, }, }, ), ], span: Span { start: Position { line: 360, column: 23, }, end: Position { line: 360, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 354, column: 28, }, end: Position { line: 361, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 363, column: 11, }, end: Position { line: 363, column: 21, }, }, }, ), Raw( PartRaw { content: "mode", span: Span { start: Position { line: 363, column: 22, }, end: Position { line: 363, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 363, column: 29, }, end: Position { line: 363, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 364, column: 13, }, end: Position { line: 364, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 364, column: 20, }, end: Position { line: 364, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enum", span: Span { start: Position { line: 364, column: 26, }, end: Position { line: 364, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "repokey", span: Span { start: Position { line: 365, column: 16, }, end: Position { line: 365, column: 23, }, }, }, ), ], span: Span { start: Position { line: 365, column: 15, }, end: Position { line: 365, column: 24, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "keyfile", span: Span { start: Position { line: 365, column: 26, }, end: Position { line: 365, column: 33, }, }, }, ), ], span: Span { start: Position { line: 365, column: 25, }, end: Position { line: 365, column: 34, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "repokey-blake2", span: Span { start: Position { line: 366, column: 16, }, end: Position { line: 366, column: 30, }, }, }, ), ], span: Span { start: Position { line: 366, column: 15, }, end: Position { line: 366, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "keyfile-blake2", span: Span { start: Position { line: 366, column: 33, }, end: Position { line: 366, column: 47, }, }, }, ), ], span: Span { start: Position { line: 366, column: 32, }, end: Position { line: 366, column: 48, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "authenticated", span: Span { start: Position { line: 367, column: 16, }, end: Position { line: 367, column: 29, }, }, }, ), ], span: Span { start: Position { line: 367, column: 15, }, end: Position { line: 367, column: 30, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "authenticated-blake2", span: Span { start: Position { line: 367, column: 32, }, end: Position { line: 367, column: 52, }, }, }, ), ], span: Span { start: Position { line: 367, column: 31, }, end: Position { line: 367, column: 53, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "none", span: Span { start: Position { line: 368, column: 16, }, end: Position { line: 368, column: 20, }, }, }, ), ], span: Span { start: Position { line: 368, column: 15, }, end: Position { line: 368, column: 21, }, }, }, ), ], span: Span { start: Position { line: 364, column: 31, }, end: Position { line: 369, column: 14, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 370, column: 13, }, end: Position { line: 370, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 370, column: 27, }, end: Position { line: 370, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 370, column: 31, }, end: Position { line: 370, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Encryption mode to use. Setting a mode\nother than `\"none\"` requires\nyou to specify a {option}`passCommand`\nor a {option}`passphrase`.\n", span: Span { start: Position { line: 371, column: 1, }, end: Position { line: 375, column: 13, }, }, }, ), ], span: Span { start: Position { line: 370, column: 37, }, end: Position { line: 375, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 376, column: 13, }, end: Position { line: 376, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "repokey-blake2", span: Span { start: Position { line: 376, column: 24, }, end: Position { line: 376, column: 38, }, }, }, ), ], span: Span { start: Position { line: 376, column: 23, }, end: Position { line: 376, column: 39, }, }, }, ), }, ), ], span: Span { start: Position { line: 363, column: 38, }, end: Position { line: 377, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 379, column: 11, }, end: Position { line: 379, column: 21, }, }, }, ), Raw( PartRaw { content: "passCommand", span: Span { start: Position { line: 379, column: 22, }, end: Position { line: 379, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 379, column: 36, }, end: Position { line: 379, column: 44, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 380, column: 13, }, end: Position { line: 380, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 380, column: 25, }, end: Position { line: 380, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 380, column: 32, }, end: Position { line: 380, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 380, column: 39, }, end: Position { line: 380, column: 42, }, }, }, ), ], }, ), span: Span { start: Position { line: 380, column: 20, }, end: Position { line: 380, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 381, column: 13, }, end: Position { line: 381, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 381, column: 27, }, end: Position { line: 381, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 381, column: 31, }, end: Position { line: 381, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "A command which prints the passphrase to stdout.\nMutually exclusive with {option}`passphrase`.\n", span: Span { start: Position { line: 382, column: 1, }, end: Position { line: 384, column: 13, }, }, }, ), ], span: Span { start: Position { line: 381, column: 37, }, end: Position { line: 384, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 385, column: 13, }, end: Position { line: 385, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 385, column: 23, }, end: Position { line: 385, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 386, column: 13, }, end: Position { line: 386, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "cat /path/to/passphrase_file", span: Span { start: Position { line: 386, column: 24, }, end: Position { line: 386, column: 52, }, }, }, ), ], span: Span { start: Position { line: 386, column: 23, }, end: Position { line: 386, column: 53, }, }, }, ), }, ), ], span: Span { start: Position { line: 379, column: 45, }, end: Position { line: 387, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "encryption", span: Span { start: Position { line: 389, column: 11, }, end: Position { line: 389, column: 21, }, }, }, ), Raw( PartRaw { content: "passphrase", span: Span { start: Position { line: 389, column: 22, }, end: Position { line: 389, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 389, column: 35, }, end: Position { line: 389, column: 43, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 390, column: 13, }, end: Position { line: 390, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 390, column: 25, }, end: Position { line: 390, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 390, column: 32, }, end: Position { line: 390, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 390, column: 39, }, end: Position { line: 390, column: 42, }, }, }, ), ], }, ), span: Span { start: Position { line: 390, column: 20, }, end: Position { line: 390, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 391, column: 13, }, end: Position { line: 391, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 391, column: 27, }, end: Position { line: 391, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 391, column: 31, }, end: Position { line: 391, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The passphrase the backups are encrypted with.\nMutually exclusive with {option}`passCommand`.\nIf you do not want the passphrase to be stored in the\nworld-readable Nix store, use {option}`passCommand`.\n", span: Span { start: Position { line: 392, column: 1, }, end: Position { line: 396, column: 13, }, }, }, ), ], span: Span { start: Position { line: 391, column: 37, }, end: Position { line: 396, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 397, column: 13, }, end: Position { line: 397, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 397, column: 23, }, end: Position { line: 397, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 389, column: 44, }, end: Position { line: 398, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "compression", span: Span { start: Position { line: 400, column: 11, }, end: Position { line: 400, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 400, column: 25, }, end: Position { line: 400, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 404, column: 13, }, end: Position { line: 404, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 404, column: 20, }, end: Position { line: 404, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "strMatching", span: Span { start: Position { line: 404, column: 26, }, end: Position { line: 404, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "none|(auto,)?(lz4|zstd|zlib|lzma)(,[[:digit:]]{1,2})?", span: Span { start: Position { line: 404, column: 39, }, end: Position { line: 404, column: 92, }, }, }, ), ], span: Span { start: Position { line: 404, column: 38, }, end: Position { line: 404, column: 93, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 405, column: 13, }, end: Position { line: 405, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 405, column: 27, }, end: Position { line: 405, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 405, column: 31, }, end: Position { line: 405, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Compression method to use. Refer to\n{command}`borg help compression`\nfor all available options.\n", span: Span { start: Position { line: 406, column: 1, }, end: Position { line: 409, column: 13, }, }, }, ), ], span: Span { start: Position { line: 405, column: 37, }, end: Position { line: 409, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 410, column: 13, }, end: Position { line: 410, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "lz4", span: Span { start: Position { line: 410, column: 24, }, end: Position { line: 410, column: 27, }, }, }, ), ], span: Span { start: Position { line: 410, column: 23, }, end: Position { line: 410, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 411, column: 13, }, end: Position { line: 411, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "auto,lzma", span: Span { start: Position { line: 411, column: 24, }, end: Position { line: 411, column: 33, }, }, }, ), ], span: Span { start: Position { line: 411, column: 23, }, end: Position { line: 411, column: 34, }, }, }, ), }, ), ], span: Span { start: Position { line: 400, column: 34, }, end: Position { line: 412, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "exclude", span: Span { start: Position { line: 414, column: 11, }, end: Position { line: 414, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 414, column: 21, }, end: Position { line: 414, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 415, column: 13, }, end: Position { line: 415, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 415, column: 25, }, end: Position { line: 415, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 415, column: 32, }, end: Position { line: 415, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 415, column: 39, }, end: Position { line: 415, column: 42, }, }, }, ), ], }, ), span: Span { start: Position { line: 415, column: 20, }, end: Position { line: 415, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 416, column: 13, }, end: Position { line: 416, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 416, column: 27, }, end: Position { line: 416, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 416, column: 31, }, end: Position { line: 416, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Exclude paths matching any of the given patterns. See\n{command}`borg help patterns` for pattern syntax.\n", span: Span { start: Position { line: 417, column: 1, }, end: Position { line: 419, column: 13, }, }, }, ), ], span: Span { start: Position { line: 416, column: 37, }, end: Position { line: 419, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 420, column: 13, }, end: Position { line: 420, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 420, column: 23, }, end: Position { line: 420, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 421, column: 13, }, end: Position { line: 421, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/home/*/.cache", span: Span { start: Position { line: 422, column: 16, }, end: Position { line: 422, column: 30, }, }, }, ), ], span: Span { start: Position { line: 422, column: 15, }, end: Position { line: 422, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "/nix", span: Span { start: Position { line: 423, column: 16, }, end: Position { line: 423, column: 20, }, }, }, ), ], span: Span { start: Position { line: 423, column: 15, }, end: Position { line: 423, column: 21, }, }, }, ), ], span: Span { start: Position { line: 421, column: 23, }, end: Position { line: 424, column: 14, }, }, }, ), }, ), ], span: Span { start: Position { line: 414, column: 30, }, end: Position { line: 425, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "readWritePaths", span: Span { start: Position { line: 427, column: 11, }, end: Position { line: 427, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 427, column: 28, }, end: Position { line: 427, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 428, column: 13, }, end: Position { line: 428, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 428, column: 25, }, end: Position { line: 428, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 428, column: 32, }, end: Position { line: 428, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 428, column: 39, }, end: Position { line: 428, column: 43, }, }, }, ), ], }, ), span: Span { start: Position { line: 428, column: 20, }, end: Position { line: 428, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 429, column: 13, }, end: Position { line: 429, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 429, column: 27, }, end: Position { line: 429, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 429, column: 31, }, end: Position { line: 429, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "By default, borg cannot write anywhere on the system but\n`$HOME/.config/borg` and `$HOME/.cache/borg`.\nIf, for example, your preHook script needs to dump files\nsomewhere, put those directories here.\n", span: Span { start: Position { line: 430, column: 1, }, end: Position { line: 434, column: 13, }, }, }, ), ], span: Span { start: Position { line: 429, column: 37, }, end: Position { line: 434, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 435, column: 13, }, end: Position { line: 435, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 435, column: 23, }, end: Position { line: 435, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 436, column: 13, }, end: Position { line: 436, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/var/backup/mysqldump", span: Span { start: Position { line: 437, column: 16, }, end: Position { line: 437, column: 37, }, }, }, ), ], span: Span { start: Position { line: 437, column: 15, }, end: Position { line: 437, column: 38, }, }, }, ), ], span: Span { start: Position { line: 436, column: 23, }, end: Position { line: 438, column: 14, }, }, }, ), }, ), ], span: Span { start: Position { line: 427, column: 37, }, end: Position { line: 439, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "privateTmp", span: Span { start: Position { line: 441, column: 11, }, end: Position { line: 441, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 441, column: 24, }, end: Position { line: 441, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 442, column: 13, }, end: Position { line: 442, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 442, column: 20, }, end: Position { line: 442, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 442, column: 26, }, end: Position { line: 442, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 443, column: 13, }, end: Position { line: 443, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 443, column: 27, }, end: Position { line: 443, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 443, column: 31, }, end: Position { line: 443, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set the `PrivateTmp` option for\nthe systemd-service. Set to false if you need sockets\nor other files from global /tmp.\n", span: Span { start: Position { line: 444, column: 1, }, end: Position { line: 447, column: 13, }, }, }, ), ], span: Span { start: Position { line: 443, column: 37, }, end: Position { line: 447, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 448, column: 13, }, end: Position { line: 448, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 448, column: 23, }, end: Position { line: 448, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 441, column: 33, }, end: Position { line: 449, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "doInit", span: Span { start: Position { line: 451, column: 11, }, end: Position { line: 451, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 451, column: 20, }, end: Position { line: 451, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 452, column: 13, }, end: Position { line: 452, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 452, column: 20, }, end: Position { line: 452, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 452, column: 26, }, end: Position { line: 452, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 453, column: 13, }, end: Position { line: 453, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 453, column: 27, }, end: Position { line: 453, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 453, column: 31, }, end: Position { line: 453, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Run {command}`borg init` if the\nspecified {option}`repo` does not exist.\nYou should set this to `false`\nif the repository is located on an external drive\nthat might not always be mounted.\n", span: Span { start: Position { line: 454, column: 1, }, end: Position { line: 459, column: 13, }, }, }, ), ], span: Span { start: Position { line: 453, column: 37, }, end: Position { line: 459, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 460, column: 13, }, end: Position { line: 460, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 460, column: 23, }, end: Position { line: 460, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 451, column: 29, }, end: Position { line: 461, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "appendFailedSuffix", span: Span { start: Position { line: 463, column: 11, }, end: Position { line: 463, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 463, column: 32, }, end: Position { line: 463, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 464, column: 13, }, end: Position { line: 464, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 464, column: 20, }, end: Position { line: 464, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 464, column: 26, }, end: Position { line: 464, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 465, column: 13, }, end: Position { line: 465, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 465, column: 27, }, end: Position { line: 465, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 465, column: 31, }, end: Position { line: 465, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Append a `.failed` suffix\nto the archive name, which is only removed if\n{command}`borg create` has a zero exit status.\n", span: Span { start: Position { line: 466, column: 1, }, end: Position { line: 469, column: 13, }, }, }, ), ], span: Span { start: Position { line: 465, column: 37, }, end: Position { line: 469, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 470, column: 13, }, end: Position { line: 470, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 470, column: 23, }, end: Position { line: 470, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 463, column: 41, }, end: Position { line: 471, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 473, column: 11, }, end: Position { line: 473, column: 16, }, }, }, ), Raw( PartRaw { content: "keep", span: Span { start: Position { line: 473, column: 17, }, end: Position { line: 473, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 473, column: 24, }, end: Position { line: 473, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 477, column: 13, }, end: Position { line: 477, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 477, column: 25, }, end: Position { line: 477, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsOf", span: Span { start: Position { line: 477, column: 32, }, end: Position { line: 477, column: 39, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "either", span: Span { start: Position { line: 477, column: 41, }, end: Position { line: 477, column: 47, }, }, }, ), arguments: [ Identifier( Identifier { id: "int", span: Span { start: Position { line: 477, column: 48, }, end: Position { line: 477, column: 51, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "strMatching", span: Span { start: Position { line: 477, column: 53, }, end: Position { line: 477, column: 64, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[[:digit:]]+[Hdwmy]", span: Span { start: Position { line: 477, column: 66, }, end: Position { line: 477, column: 85, }, }, }, ), ], span: Span { start: Position { line: 477, column: 65, }, end: Position { line: 477, column: 86, }, }, }, ), ], }, ), ], }, ), ], }, ), span: Span { start: Position { line: 477, column: 20, }, end: Position { line: 477, column: 88, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 478, column: 13, }, end: Position { line: 478, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 478, column: 27, }, end: Position { line: 478, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 478, column: 31, }, end: Position { line: 478, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Prune a repository by deleting all archives not matching any of the\nspecified retention options. See {command}`borg help prune`\nfor the available options.\n", span: Span { start: Position { line: 479, column: 1, }, end: Position { line: 482, column: 13, }, }, }, ), ], span: Span { start: Position { line: 478, column: 37, }, end: Position { line: 482, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 483, column: 13, }, end: Position { line: 483, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 483, column: 23, }, end: Position { line: 483, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 484, column: 13, }, end: Position { line: 484, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 484, column: 23, }, end: Position { line: 484, column: 40, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n within = \"1d\"; # Keep all archives from the last day\n daily = 7;\n weekly = 4;\n monthly = -1; # Keep at least one archive for each month\n}\n", span: Span { start: Position { line: 485, column: 1, }, end: Position { line: 491, column: 13, }, }, }, ), ], span: Span { start: Position { line: 484, column: 41, }, end: Position { line: 491, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 473, column: 33, }, end: Position { line: 492, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 494, column: 11, }, end: Position { line: 494, column: 16, }, }, }, ), Raw( PartRaw { content: "prefix", span: Span { start: Position { line: 494, column: 17, }, end: Position { line: 494, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 494, column: 26, }, end: Position { line: 494, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 495, column: 13, }, end: Position { line: 495, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 495, column: 20, }, end: Position { line: 495, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 495, column: 26, }, end: Position { line: 495, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 495, column: 34, }, end: Position { line: 495, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 495, column: 40, }, end: Position { line: 495, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 496, column: 13, }, end: Position { line: 496, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 496, column: 27, }, end: Position { line: 496, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 496, column: 31, }, end: Position { line: 496, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Only consider archive names starting with this prefix for pruning.\nBy default, only archives created by this job are considered.\nUse `\"\"` or `null` to consider all archives.\n", span: Span { start: Position { line: 497, column: 1, }, end: Position { line: 500, column: 13, }, }, }, ), ], span: Span { start: Position { line: 496, column: 37, }, end: Position { line: 500, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 501, column: 13, }, end: Position { line: 501, column: 20, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 501, column: 23, }, end: Position { line: 501, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "archiveBaseName", span: Span { start: Position { line: 501, column: 30, }, end: Position { line: 501, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 502, column: 13, }, end: Position { line: 502, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 502, column: 27, }, end: Position { line: 502, column: 44, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "archiveBaseName", span: Span { start: Position { line: 502, column: 46, }, end: Position { line: 502, column: 61, }, }, }, ), ], span: Span { start: Position { line: 502, column: 45, }, end: Position { line: 502, column: 62, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 494, column: 35, }, end: Position { line: 503, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 505, column: 11, }, end: Position { line: 505, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 505, column: 25, }, end: Position { line: 505, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 506, column: 13, }, end: Position { line: 506, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 506, column: 25, }, end: Position { line: 506, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsOf", span: Span { start: Position { line: 506, column: 32, }, end: Position { line: 506, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 506, column: 40, }, end: Position { line: 506, column: 43, }, }, }, ), ], }, ), span: Span { start: Position { line: 506, column: 20, }, end: Position { line: 506, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 507, column: 13, }, end: Position { line: 507, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 507, column: 27, }, end: Position { line: 507, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 507, column: 31, }, end: Position { line: 507, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Environment variables passed to the backup script.\nYou can for example specify which SSH key to use.\n", span: Span { start: Position { line: 508, column: 1, }, end: Position { line: 510, column: 13, }, }, }, ), ], span: Span { start: Position { line: 507, column: 37, }, end: Position { line: 510, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 511, column: 13, }, end: Position { line: 511, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 511, column: 23, }, end: Position { line: 511, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 512, column: 13, }, end: Position { line: 512, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "BORG_RSH", span: Span { start: Position { line: 512, column: 25, }, end: Position { line: 512, column: 33, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "ssh -i /path/to/key", span: Span { start: Position { line: 512, column: 37, }, end: Position { line: 512, column: 56, }, }, }, ), ], span: Span { start: Position { line: 512, column: 36, }, end: Position { line: 512, column: 57, }, }, }, ), }, ), ], span: Span { start: Position { line: 512, column: 23, }, end: Position { line: 512, column: 60, }, }, }, ), }, ), ], span: Span { start: Position { line: 505, column: 34, }, end: Position { line: 513, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preHook", span: Span { start: Position { line: 515, column: 11, }, end: Position { line: 515, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 515, column: 21, }, end: Position { line: 515, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 516, column: 13, }, end: Position { line: 516, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 516, column: 20, }, end: Position { line: 516, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 516, column: 26, }, end: Position { line: 516, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 517, column: 13, }, end: Position { line: 517, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 517, column: 27, }, end: Position { line: 517, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 517, column: 31, }, end: Position { line: 517, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Shell commands to run before the backup.\nThis can for example be used to mount file systems.\n", span: Span { start: Position { line: 518, column: 1, }, end: Position { line: 520, column: 13, }, }, }, ), ], span: Span { start: Position { line: 517, column: 37, }, end: Position { line: 520, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 521, column: 13, }, end: Position { line: 521, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 521, column: 23, }, end: Position { line: 521, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 522, column: 13, }, end: Position { line: 522, column: 20, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# To add excluded paths at runtime\nextraCreateArgs=\"$extraCreateArgs --exclude /some/path\"\n", span: Span { start: Position { line: 523, column: 1, }, end: Position { line: 525, column: 13, }, }, }, ), ], span: Span { start: Position { line: 522, column: 23, }, end: Position { line: 525, column: 15, }, }, }, ), }, ), ], span: Span { start: Position { line: 515, column: 30, }, end: Position { line: 526, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postInit", span: Span { start: Position { line: 528, column: 11, }, end: Position { line: 528, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 528, column: 22, }, end: Position { line: 528, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 529, column: 13, }, end: Position { line: 529, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 529, column: 20, }, end: Position { line: 529, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 529, column: 26, }, end: Position { line: 529, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 530, column: 13, }, end: Position { line: 530, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 530, column: 27, }, end: Position { line: 530, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 530, column: 31, }, end: Position { line: 530, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Shell commands to run after {command}`borg init`.\n", span: Span { start: Position { line: 531, column: 1, }, end: Position { line: 532, column: 13, }, }, }, ), ], span: Span { start: Position { line: 530, column: 37, }, end: Position { line: 532, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 533, column: 13, }, end: Position { line: 533, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 533, column: 23, }, end: Position { line: 533, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 528, column: 31, }, end: Position { line: 534, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postCreate", span: Span { start: Position { line: 536, column: 11, }, end: Position { line: 536, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 536, column: 24, }, end: Position { line: 536, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 537, column: 13, }, end: Position { line: 537, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 537, column: 20, }, end: Position { line: 537, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 537, column: 26, }, end: Position { line: 537, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 538, column: 13, }, end: Position { line: 538, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 538, column: 27, }, end: Position { line: 538, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 538, column: 31, }, end: Position { line: 538, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Shell commands to run after {command}`borg create`. The name\nof the created archive is stored in `$archiveName`.\n", span: Span { start: Position { line: 539, column: 1, }, end: Position { line: 541, column: 13, }, }, }, ), ], span: Span { start: Position { line: 538, column: 37, }, end: Position { line: 541, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 542, column: 13, }, end: Position { line: 542, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 542, column: 23, }, end: Position { line: 542, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 536, column: 33, }, end: Position { line: 543, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postPrune", span: Span { start: Position { line: 545, column: 11, }, end: Position { line: 545, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 545, column: 23, }, end: Position { line: 545, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 546, column: 13, }, end: Position { line: 546, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 546, column: 20, }, end: Position { line: 546, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 546, column: 26, }, end: Position { line: 546, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 547, column: 13, }, end: Position { line: 547, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 547, column: 27, }, end: Position { line: 547, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 547, column: 31, }, end: Position { line: 547, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Shell commands to run after {command}`borg prune`.\n", span: Span { start: Position { line: 548, column: 1, }, end: Position { line: 549, column: 13, }, }, }, ), ], span: Span { start: Position { line: 547, column: 37, }, end: Position { line: 549, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 550, column: 13, }, end: Position { line: 550, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 550, column: 23, }, end: Position { line: 550, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 545, column: 32, }, end: Position { line: 551, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postHook", span: Span { start: Position { line: 553, column: 11, }, end: Position { line: 553, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 553, column: 22, }, end: Position { line: 553, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 554, column: 13, }, end: Position { line: 554, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 554, column: 20, }, end: Position { line: 554, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 554, column: 26, }, end: Position { line: 554, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 555, column: 13, }, end: Position { line: 555, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 555, column: 27, }, end: Position { line: 555, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 555, column: 31, }, end: Position { line: 555, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Shell commands to run just before exit. They are executed\neven if a previous command exits with a non-zero exit code.\nThe latter is available as `$exitStatus`.\n", span: Span { start: Position { line: 556, column: 1, }, end: Position { line: 559, column: 13, }, }, }, ), ], span: Span { start: Position { line: 555, column: 37, }, end: Position { line: 559, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 560, column: 13, }, end: Position { line: 560, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 560, column: 23, }, end: Position { line: 560, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 553, column: 31, }, end: Position { line: 561, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraArgs", span: Span { start: Position { line: 563, column: 11, }, end: Position { line: 563, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 563, column: 23, }, end: Position { line: 563, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 564, column: 13, }, end: Position { line: 564, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 564, column: 20, }, end: Position { line: 564, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 564, column: 26, }, end: Position { line: 564, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 565, column: 13, }, end: Position { line: 565, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 565, column: 27, }, end: Position { line: 565, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 565, column: 31, }, end: Position { line: 565, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional arguments for all {command}`borg` calls the\nservice has. Handle with care.\n", span: Span { start: Position { line: 566, column: 1, }, end: Position { line: 568, column: 13, }, }, }, ), ], span: Span { start: Position { line: 565, column: 37, }, end: Position { line: 568, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 569, column: 13, }, end: Position { line: 569, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 569, column: 23, }, end: Position { line: 569, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 570, column: 13, }, end: Position { line: 570, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "--remote-path=/path/to/borg", span: Span { start: Position { line: 570, column: 24, }, end: Position { line: 570, column: 51, }, }, }, ), ], span: Span { start: Position { line: 570, column: 23, }, end: Position { line: 570, column: 52, }, }, }, ), }, ), ], span: Span { start: Position { line: 563, column: 32, }, end: Position { line: 571, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraInitArgs", span: Span { start: Position { line: 573, column: 11, }, end: Position { line: 573, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 573, column: 27, }, end: Position { line: 573, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 574, column: 13, }, end: Position { line: 574, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 574, column: 20, }, end: Position { line: 574, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 574, column: 26, }, end: Position { line: 574, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 575, column: 13, }, end: Position { line: 575, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 575, column: 27, }, end: Position { line: 575, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 575, column: 31, }, end: Position { line: 575, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional arguments for {command}`borg init`.\nCan also be set at runtime using `$extraInitArgs`.\n", span: Span { start: Position { line: 576, column: 1, }, end: Position { line: 578, column: 13, }, }, }, ), ], span: Span { start: Position { line: 575, column: 37, }, end: Position { line: 578, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 579, column: 13, }, end: Position { line: 579, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 579, column: 23, }, end: Position { line: 579, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 580, column: 13, }, end: Position { line: 580, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "--append-only", span: Span { start: Position { line: 580, column: 24, }, end: Position { line: 580, column: 37, }, }, }, ), ], span: Span { start: Position { line: 580, column: 23, }, end: Position { line: 580, column: 38, }, }, }, ), }, ), ], span: Span { start: Position { line: 573, column: 36, }, end: Position { line: 581, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraCreateArgs", span: Span { start: Position { line: 583, column: 11, }, end: Position { line: 583, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 583, column: 29, }, end: Position { line: 583, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 584, column: 13, }, end: Position { line: 584, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 584, column: 20, }, end: Position { line: 584, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 584, column: 26, }, end: Position { line: 584, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 585, column: 13, }, end: Position { line: 585, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 585, column: 27, }, end: Position { line: 585, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 585, column: 31, }, end: Position { line: 585, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional arguments for {command}`borg create`.\nCan also be set at runtime using `$extraCreateArgs`.\n", span: Span { start: Position { line: 586, column: 1, }, end: Position { line: 588, column: 13, }, }, }, ), ], span: Span { start: Position { line: 585, column: 37, }, end: Position { line: 588, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 589, column: 13, }, end: Position { line: 589, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 589, column: 23, }, end: Position { line: 589, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 590, column: 13, }, end: Position { line: 590, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "--stats --checkpoint-interval 600", span: Span { start: Position { line: 590, column: 24, }, end: Position { line: 590, column: 57, }, }, }, ), ], span: Span { start: Position { line: 590, column: 23, }, end: Position { line: 590, column: 58, }, }, }, ), }, ), ], span: Span { start: Position { line: 583, column: 38, }, end: Position { line: 591, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPruneArgs", span: Span { start: Position { line: 593, column: 11, }, end: Position { line: 593, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 593, column: 28, }, end: Position { line: 593, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 594, column: 13, }, end: Position { line: 594, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 594, column: 20, }, end: Position { line: 594, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 594, column: 26, }, end: Position { line: 594, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 595, column: 13, }, end: Position { line: 595, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 595, column: 27, }, end: Position { line: 595, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 595, column: 31, }, end: Position { line: 595, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional arguments for {command}`borg prune`.\nCan also be set at runtime using `$extraPruneArgs`.\n", span: Span { start: Position { line: 596, column: 1, }, end: Position { line: 598, column: 13, }, }, }, ), ], span: Span { start: Position { line: 595, column: 37, }, end: Position { line: 598, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 599, column: 13, }, end: Position { line: 599, column: 20, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 599, column: 23, }, end: Position { line: 599, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 600, column: 13, }, end: Position { line: 600, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "--save-space", span: Span { start: Position { line: 600, column: 24, }, end: Position { line: 600, column: 36, }, }, }, ), ], span: Span { start: Position { line: 600, column: 23, }, end: Position { line: 600, column: 37, }, }, }, ), }, ), ], span: Span { start: Position { line: 593, column: 37, }, end: Position { line: 601, column: 12, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 261, column: 19, }, end: Position { line: 603, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 260, column: 30, }, end: Position { line: 604, column: 8, }, }, }, ), span: Span { start: Position { line: 260, column: 7, }, end: Position { line: 604, column: 8, }, }, }, ), span: Span { start: Position { line: 259, column: 44, }, end: Position { line: 604, column: 8, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 219, column: 47, }, end: Position { line: 606, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 608, column: 3, }, end: Position { line: 608, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 608, column: 11, }, end: Position { line: 608, column: 19, }, }, }, ), Raw( PartRaw { content: "borgbackup", span: Span { start: Position { line: 608, column: 20, }, end: Position { line: 608, column: 30, }, }, }, ), Raw( PartRaw { content: "repos", span: Span { start: Position { line: 608, column: 31, }, end: Position { line: 608, column: 36, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 608, column: 39, }, end: Position { line: 608, column: 47, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 609, column: 5, }, end: Position { line: 609, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 609, column: 19, }, end: Position { line: 609, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 609, column: 23, }, end: Position { line: 609, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Serve BorgBackup repositories to given public SSH keys,\nrestricting their access to the repository only.\nSee also the chapter about BorgBackup in the NixOS manual.\nAlso, clients do not need to specify the absolute path when accessing the repository,\ni.e. `user@machine:.` is enough. (Note colon and dot.)\n", span: Span { start: Position { line: 610, column: 1, }, end: Position { line: 615, column: 5, }, }, }, ), ], span: Span { start: Position { line: 609, column: 29, }, end: Position { line: 615, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 616, column: 5, }, end: Position { line: 616, column: 12, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 616, column: 15, }, end: Position { line: 616, column: 18, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 617, column: 5, }, end: Position { line: 617, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 617, column: 12, }, end: Position { line: 617, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsOf", span: Span { start: Position { line: 617, column: 18, }, end: Position { line: 617, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 617, column: 27, }, end: Position { line: 617, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "submodule", span: Span { start: Position { line: 617, column: 33, }, end: Position { line: 617, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [], }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 619, column: 9, }, end: Position { line: 619, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 620, column: 11, }, end: Position { line: 620, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 620, column: 18, }, end: Position { line: 620, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 621, column: 13, }, end: Position { line: 621, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 621, column: 20, }, end: Position { line: 621, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 621, column: 26, }, end: Position { line: 621, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 622, column: 13, }, end: Position { line: 622, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 622, column: 27, }, end: Position { line: 622, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 622, column: 31, }, end: Position { line: 622, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Where to store the backups. Note that the directory\nis created automatically, with correct permissions.\n", span: Span { start: Position { line: 623, column: 1, }, end: Position { line: 625, column: 13, }, }, }, ), ], span: Span { start: Position { line: 622, column: 37, }, end: Position { line: 625, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 626, column: 13, }, end: Position { line: 626, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/borgbackup", span: Span { start: Position { line: 626, column: 24, }, end: Position { line: 626, column: 43, }, }, }, ), ], span: Span { start: Position { line: 626, column: 23, }, end: Position { line: 626, column: 44, }, }, }, ), }, ), ], span: Span { start: Position { line: 620, column: 27, }, end: Position { line: 627, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 629, column: 11, }, end: Position { line: 629, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 629, column: 18, }, end: Position { line: 629, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 630, column: 13, }, end: Position { line: 630, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 630, column: 20, }, end: Position { line: 630, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 630, column: 26, }, end: Position { line: 630, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 631, column: 13, }, end: Position { line: 631, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 631, column: 27, }, end: Position { line: 631, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 631, column: 31, }, end: Position { line: 631, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The user {command}`borg serve` is run as.\nUser or group needs write permission\nfor the specified {option}`path`.\n", span: Span { start: Position { line: 632, column: 1, }, end: Position { line: 635, column: 13, }, }, }, ), ], span: Span { start: Position { line: 631, column: 37, }, end: Position { line: 635, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 636, column: 13, }, end: Position { line: 636, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "borg", span: Span { start: Position { line: 636, column: 24, }, end: Position { line: 636, column: 28, }, }, }, ), ], span: Span { start: Position { line: 636, column: 23, }, end: Position { line: 636, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 629, column: 27, }, end: Position { line: 637, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 639, column: 11, }, end: Position { line: 639, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 639, column: 19, }, end: Position { line: 639, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 640, column: 13, }, end: Position { line: 640, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 640, column: 20, }, end: Position { line: 640, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 640, column: 26, }, end: Position { line: 640, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 641, column: 13, }, end: Position { line: 641, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 641, column: 27, }, end: Position { line: 641, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 641, column: 31, }, end: Position { line: 641, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The group {command}`borg serve` is run as.\nUser or group needs write permission\nfor the specified {option}`path`.\n", span: Span { start: Position { line: 642, column: 1, }, end: Position { line: 645, column: 13, }, }, }, ), ], span: Span { start: Position { line: 641, column: 37, }, end: Position { line: 645, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 646, column: 13, }, end: Position { line: 646, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "borg", span: Span { start: Position { line: 646, column: 24, }, end: Position { line: 646, column: 28, }, }, }, ), ], span: Span { start: Position { line: 646, column: 23, }, end: Position { line: 646, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 639, column: 28, }, end: Position { line: 647, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "authorizedKeys", span: Span { start: Position { line: 649, column: 11, }, end: Position { line: 649, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 649, column: 28, }, end: Position { line: 649, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 650, column: 13, }, end: Position { line: 650, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 650, column: 25, }, end: Position { line: 650, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 650, column: 32, }, end: Position { line: 650, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 650, column: 39, }, end: Position { line: 650, column: 42, }, }, }, ), ], }, ), span: Span { start: Position { line: 650, column: 20, }, end: Position { line: 650, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 651, column: 13, }, end: Position { line: 651, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 651, column: 27, }, end: Position { line: 651, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 651, column: 31, }, end: Position { line: 651, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Public SSH keys that are given full write access to this repository.\nYou should use a different SSH key for each repository you write to, because\nthe specified keys are restricted to running {command}`borg serve`\nand can only access this single repository.\n", span: Span { start: Position { line: 652, column: 1, }, end: Position { line: 656, column: 13, }, }, }, ), ], span: Span { start: Position { line: 651, column: 37, }, end: Position { line: 656, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 657, column: 13, }, end: Position { line: 657, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 657, column: 23, }, end: Position { line: 657, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 649, column: 37, }, end: Position { line: 658, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "authorizedKeysAppendOnly", span: Span { start: Position { line: 660, column: 11, }, end: Position { line: 660, column: 35, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 660, column: 38, }, end: Position { line: 660, column: 46, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 661, column: 13, }, end: Position { line: 661, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 661, column: 25, }, end: Position { line: 661, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 661, column: 32, }, end: Position { line: 661, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 661, column: 39, }, end: Position { line: 661, column: 42, }, }, }, ), ], }, ), span: Span { start: Position { line: 661, column: 20, }, end: Position { line: 661, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 662, column: 13, }, end: Position { line: 662, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 662, column: 27, }, end: Position { line: 662, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 662, column: 31, }, end: Position { line: 662, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Public SSH keys that can only be used to append new data (archives) to the repository.\nNote that archives can still be marked as deleted and are subsequently removed from disk\nupon accessing the repo with full write access, e.g. when pruning.\n", span: Span { start: Position { line: 663, column: 1, }, end: Position { line: 666, column: 13, }, }, }, ), ], span: Span { start: Position { line: 662, column: 37, }, end: Position { line: 666, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 667, column: 13, }, end: Position { line: 667, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 667, column: 23, }, end: Position { line: 667, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 660, column: 47, }, end: Position { line: 668, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "allowSubRepos", span: Span { start: Position { line: 670, column: 11, }, end: Position { line: 670, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 670, column: 27, }, end: Position { line: 670, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 671, column: 13, }, end: Position { line: 671, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 671, column: 20, }, end: Position { line: 671, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 671, column: 26, }, end: Position { line: 671, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 672, column: 13, }, end: Position { line: 672, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 672, column: 27, }, end: Position { line: 672, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 672, column: 31, }, end: Position { line: 672, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Allow clients to create repositories in subdirectories of the\nspecified {option}`path`. These can be accessed using\n`user@machine:path/to/subrepo`. Note that a\n{option}`quota` applies to repositories independently.\nTherefore, if this is enabled, clients can create multiple\nrepositories and upload an arbitrary amount of data.\n", span: Span { start: Position { line: 673, column: 1, }, end: Position { line: 679, column: 13, }, }, }, ), ], span: Span { start: Position { line: 672, column: 37, }, end: Position { line: 679, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 680, column: 13, }, end: Position { line: 680, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 680, column: 23, }, end: Position { line: 680, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 670, column: 36, }, end: Position { line: 681, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "quota", span: Span { start: Position { line: 683, column: 11, }, end: Position { line: 683, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 683, column: 19, }, end: Position { line: 683, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 685, column: 13, }, end: Position { line: 685, column: 17, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 685, column: 25, }, end: Position { line: 685, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 685, column: 32, }, end: Position { line: 685, column: 38, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "strMatching", span: Span { start: Position { line: 685, column: 40, }, end: Position { line: 685, column: 51, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[[:digit:].]+[KMGTP]?", span: Span { start: Position { line: 685, column: 53, }, end: Position { line: 685, column: 74, }, }, }, ), ], span: Span { start: Position { line: 685, column: 52, }, end: Position { line: 685, column: 75, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 685, column: 20, }, end: Position { line: 685, column: 76, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 686, column: 13, }, end: Position { line: 686, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 686, column: 27, }, end: Position { line: 686, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 686, column: 31, }, end: Position { line: 686, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Storage quota for the repository. This quota is ensured for all\nsub-repositories if {option}`allowSubRepos` is enabled\nbut not for the overall storage space used.\n", span: Span { start: Position { line: 687, column: 1, }, end: Position { line: 690, column: 13, }, }, }, ), ], span: Span { start: Position { line: 686, column: 37, }, end: Position { line: 690, column: 15, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 691, column: 13, }, end: Position { line: 691, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 691, column: 23, }, end: Position { line: 691, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 692, column: 13, }, end: Position { line: 692, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "100G", span: Span { start: Position { line: 692, column: 24, }, end: Position { line: 692, column: 28, }, }, }, ), ], span: Span { start: Position { line: 692, column: 23, }, end: Position { line: 692, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 683, column: 28, }, end: Position { line: 693, column: 12, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 619, column: 19, }, end: Position { line: 695, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 618, column: 16, }, end: Position { line: 696, column: 8, }, }, }, ), span: Span { start: Position { line: 618, column: 7, }, end: Position { line: 696, column: 8, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 608, column: 48, }, end: Position { line: 698, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 702, column: 3, }, end: Position { line: 702, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 702, column: 12, }, end: Position { line: 702, column: 16, }, }, }, ), arguments: [ With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 702, column: 23, }, end: Position { line: 702, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 702, column: 30, }, end: Position { line: 702, column: 38, }, }, }, ), Raw( PartRaw { content: "borgbackup", span: Span { start: Position { line: 702, column: 39, }, end: Position { line: 702, column: 49, }, }, }, ), ], default: None, }, ), target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 702, column: 51, }, end: Position { line: 702, column: 55, }, }, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 702, column: 59, }, end: Position { line: 702, column: 62, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "repos", span: Span { start: Position { line: 702, column: 66, }, end: Position { line: 702, column: 71, }, }, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 702, column: 75, }, end: Position { line: 702, column: 78, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 702, column: 18, }, end: Position { line: 702, column: 78, }, }, }, ), With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 703, column: 11, }, end: Position { line: 703, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 703, column: 18, }, end: Position { line: 703, column: 26, }, }, }, ), Raw( PartRaw { content: "borgbackup", span: Span { start: Position { line: 703, column: 27, }, end: Position { line: 703, column: 37, }, }, }, ), ], default: None, }, ), target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertions", span: Span { start: Position { line: 704, column: 7, }, end: Position { line: 704, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 705, column: 9, }, end: Position { line: 705, column: 23, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkPassAssertion", span: Span { start: Position { line: 705, column: 24, }, end: Position { line: 705, column: 39, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 705, column: 40, }, end: Position { line: 705, column: 44, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 706, column: 12, }, end: Position { line: 706, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkKeysAssertion", span: Span { start: Position { line: 706, column: 27, }, end: Position { line: 706, column: 42, }, }, }, ), Identifier( Identifier { id: "repos", span: Span { start: Position { line: 706, column: 43, }, end: Position { line: 706, column: 48, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 707, column: 12, }, end: Position { line: 707, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkSourceAssertions", span: Span { start: Position { line: 707, column: 27, }, end: Position { line: 707, column: 45, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 707, column: 46, }, end: Position { line: 707, column: 50, }, }, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 708, column: 12, }, end: Position { line: 708, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkRemovableDeviceAssertions", span: Span { start: Position { line: 708, column: 27, }, end: Position { line: 708, column: 54, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 708, column: 55, }, end: Position { line: 708, column: 59, }, }, }, ), ], }, ), }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 710, column: 7, }, end: Position { line: 710, column: 13, }, }, }, ), Raw( PartRaw { content: "activationScripts", span: Span { start: Position { line: 710, column: 14, }, end: Position { line: 710, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 710, column: 34, }, end: Position { line: 710, column: 43, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkActivationScript", span: Span { start: Position { line: 710, column: 44, }, end: Position { line: 710, column: 62, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 710, column: 63, }, end: Position { line: 710, column: 67, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 712, column: 7, }, end: Position { line: 712, column: 14, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 712, column: 15, }, end: Position { line: 712, column: 23, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 714, column: 9, }, end: Position { line: 714, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkBackupService", span: Span { start: Position { line: 714, column: 19, }, end: Position { line: 714, column: 34, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 714, column: 35, }, end: Position { line: 714, column: 39, }, }, }, ), ], }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 716, column: 12, }, end: Position { line: 716, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkRepoService", span: Span { start: Position { line: 716, column: 22, }, end: Position { line: 716, column: 35, }, }, }, ), Identifier( Identifier { id: "repos", span: Span { start: Position { line: 716, column: 36, }, end: Position { line: 716, column: 41, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 720, column: 7, }, end: Position { line: 720, column: 14, }, }, }, ), Raw( PartRaw { content: "timers", span: Span { start: Position { line: 720, column: 15, }, end: Position { line: 720, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 720, column: 24, }, end: Position { line: 720, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkBackupTimers", span: Span { start: Position { line: 720, column: 34, }, end: Position { line: 720, column: 48, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "filterAttrs", span: Span { start: Position { line: 720, column: 50, }, end: Position { line: 720, column: 61, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "_", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cfg", }, ), body: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 720, column: 71, }, end: Position { line: 720, column: 74, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 720, column: 75, }, end: Position { line: 720, column: 82, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 720, column: 86, }, end: Position { line: 720, column: 88, }, }, }, ), }, ), span: Span { start: Position { line: 720, column: 66, }, end: Position { line: 720, column: 88, }, }, }, ), span: Span { start: Position { line: 720, column: 63, }, end: Position { line: 720, column: 88, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 720, column: 90, }, end: Position { line: 720, column: 94, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 722, column: 7, }, end: Position { line: 722, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkMerge", span: Span { start: Position { line: 722, column: 15, }, end: Position { line: 722, column: 22, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 722, column: 24, }, end: Position { line: 722, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkUsersConfig", span: Span { start: Position { line: 722, column: 39, }, end: Position { line: 722, column: 52, }, }, }, ), Identifier( Identifier { id: "repos", span: Span { start: Position { line: 722, column: 53, }, end: Position { line: 722, column: 58, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 724, column: 7, }, end: Position { line: 724, column: 18, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 724, column: 19, }, end: Position { line: 724, column: 33, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 724, column: 41, }, end: Position { line: 724, column: 45, }, }, }, ), target: BinaryOperation( BinaryOperation { left: List( List { elements: [ Identifier( Identifier { id: "borgbackup", span: Span { start: Position { line: 724, column: 49, }, end: Position { line: 724, column: 59, }, }, }, ), ], span: Span { start: Position { line: 724, column: 47, }, end: Position { line: 724, column: 61, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 724, column: 66, }, end: Position { line: 724, column: 80, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkBorgWrapper", span: Span { start: Position { line: 724, column: 81, }, end: Position { line: 724, column: 94, }, }, }, ), Identifier( Identifier { id: "jobs", span: Span { start: Position { line: 724, column: 95, }, end: Position { line: 724, column: 99, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 724, column: 36, }, end: Position { line: 724, column: 100, }, }, }, ), }, ), ], span: Span { start: Position { line: 703, column: 39, }, end: Position { line: 725, column: 6, }, }, }, ), span: Span { start: Position { line: 703, column: 6, }, end: Position { line: 725, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 213, column: 4, }, end: Position { line: 726, column: 2, }, }, }, ), span: Span { start: Position { line: 5, column: 1, }, end: Position { line: 726, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 726, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 726, column: 2, }, }, }, )