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: "cfg",
span: Span {
start: Position {
line: 5,
column: 3,
},
end: Position {
line: 5,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "config",
span: Span {
start: Position {
line: 5,
column: 9,
},
end: Position {
line: 5,
column: 15,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 5,
column: 16,
},
end: Position {
line: 5,
column: 24,
},
},
},
),
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 5,
column: 25,
},
end: Position {
line: 5,
column: 33,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 6,
column: 3,
},
end: Position {
line: 6,
column: 11,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 6,
column: 14,
},
end: Position {
line: 6,
column: 17,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 6,
column: 18,
},
end: Position {
line: 6,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 7,
column: 3,
},
end: Position {
line: 7,
column: 12,
},
},
},
),
],
to: IfThenElse(
IfThenElse {
predicate: BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 7,
column: 18,
},
end: Position {
line: 7,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 7,
column: 22,
},
end: Position {
line: 7,
column: 31,
},
},
},
),
],
default: None,
},
),
operator: NotEqualTo,
right: Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 7,
column: 35,
},
end: Position {
line: 7,
column: 39,
},
},
},
),
},
),
then: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 7,
column: 45,
},
end: Position {
line: 7,
column: 48,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 7,
column: 49,
},
end: Position {
line: 7,
column: 58,
},
},
},
),
],
default: None,
},
),
else_: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/etc/openldap/slapd.d",
span: Span {
start: Position {
line: 7,
column: 65,
},
end: Position {
line: 7,
column: 86,
},
},
},
),
],
span: Span {
start: Position {
line: 7,
column: 64,
},
end: Position {
line: 7,
column: 87,
},
},
},
),
span: Span {
start: Position {
line: 7,
column: 15,
},
end: Position {
line: 7,
column: 87,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ldapValueType",
span: Span {
start: Position {
line: 9,
column: 3,
},
end: Position {
line: 9,
column: 16,
},
},
},
),
],
to: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "singleLdapValueType",
span: Span {
start: Position {
line: 11,
column: 5,
},
end: Position {
line: 11,
column: 24,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 11,
column: 27,
},
end: Position {
line: 11,
column: 30,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mkOptionType",
span: Span {
start: Position {
line: 11,
column: 31,
},
end: Position {
line: 11,
column: 43,
},
},
},
),
],
default: None,
},
),
arguments: [
Map(
Map {
recursive: true,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "name",
span: Span {
start: Position {
line: 12,
column: 7,
},
end: Position {
line: 12,
column: 11,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "LDAP",
span: Span {
start: Position {
line: 12,
column: 15,
},
end: Position {
line: 12,
column: 19,
},
},
},
),
],
span: Span {
start: Position {
line: 12,
column: 14,
},
end: Position {
line: 12,
column: 20,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 17,
column: 7,
},
end: Position {
line: 17,
column: 18,
},
},
},
),
],
to: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "LDAP value - either a string, or an attrset containing\npath or base64 for included\nvalues or base-64 encoded values respectively.\n",
span: Span {
start: Position {
line: 18,
column: 1,
},
end: Position {
line: 21,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 17,
column: 21,
},
end: Position {
line: 21,
column: 9,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "check",
span: Span {
start: Position {
line: 22,
column: 7,
},
end: Position {
line: 22,
column: 12,
},
},
},
),
],
to: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "x",
},
),
body: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 22,
column: 18,
},
end: Position {
line: 22,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "isString",
span: Span {
start: Position {
line: 22,
column: 22,
},
end: Position {
line: 22,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "x",
span: Span {
start: Position {
line: 22,
column: 31,
},
end: Position {
line: 22,
column: 32,
},
},
},
),
],
},
),
operator: LogicalOr,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 22,
column: 37,
},
end: Position {
line: 22,
column: 40,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "isAttrs",
span: Span {
start: Position {
line: 22,
column: 41,
},
end: Position {
line: 22,
column: 48,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "x",
span: Span {
start: Position {
line: 22,
column: 49,
},
end: Position {
line: 22,
column: 50,
},
},
},
),
],
},
),
operator: LogicalAnd,
right: BinaryOperation(
BinaryOperation {
left: HasAttribute(
HasAttribute {
expression: Identifier(
Identifier {
id: "x",
span: Span {
start: Position {
line: 22,
column: 55,
},
end: Position {
line: 22,
column: 56,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 22,
column: 59,
},
end: Position {
line: 22,
column: 63,
},
},
},
),
],
},
),
operator: LogicalOr,
right: HasAttribute(
HasAttribute {
expression: Identifier(
Identifier {
id: "x",
span: Span {
start: Position {
line: 22,
column: 67,
},
end: Position {
line: 22,
column: 68,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "base64",
span: Span {
start: Position {
line: 22,
column: 71,
},
end: Position {
line: 22,
column: 77,
},
},
},
),
],
},
),
},
),
},
),
},
),
span: Span {
start: Position {
line: 22,
column: 15,
},
end: Position {
line: 22,
column: 79,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "merge",
span: Span {
start: Position {
line: 23,
column: 7,
},
end: Position {
line: 23,
column: 12,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 23,
column: 15,
},
end: Position {
line: 23,
column: 18,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mergeEqualOption",
span: Span {
start: Position {
line: 23,
column: 19,
},
end: Position {
line: 23,
column: 35,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 11,
column: 44,
},
end: Position {
line: 24,
column: 6,
},
},
},
),
],
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 26,
column: 6,
},
end: Position {
line: 26,
column: 11,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "either",
span: Span {
start: Position {
line: 26,
column: 12,
},
end: Position {
line: 26,
column: 18,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "singleLdapValueType",
span: Span {
start: Position {
line: 26,
column: 19,
},
end: Position {
line: 26,
column: 38,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 26,
column: 40,
},
end: Position {
line: 26,
column: 45,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "listOf",
span: Span {
start: Position {
line: 26,
column: 46,
},
end: Position {
line: 26,
column: 52,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "singleLdapValueType",
span: Span {
start: Position {
line: 26,
column: 53,
},
end: Position {
line: 26,
column: 72,
},
},
},
),
],
},
),
],
},
),
span: Span {
start: Position {
line: 9,
column: 19,
},
end: Position {
line: 26,
column: 73,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ldapAttrsType",
span: Span {
start: Position {
line: 28,
column: 3,
},
end: Position {
line: 28,
column: 16,
},
},
},
),
],
to: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 30,
column: 7,
},
end: Position {
line: 30,
column: 14,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "attrs",
span: Span {
start: Position {
line: 31,
column: 9,
},
end: Position {
line: 31,
column: 14,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 31,
column: 17,
},
end: Position {
line: 31,
column: 25,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 32,
column: 11,
},
end: Position {
line: 32,
column: 15,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 32,
column: 18,
},
end: Position {
line: 32,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "attrsOf",
span: Span {
start: Position {
line: 32,
column: 24,
},
end: Position {
line: 32,
column: 31,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "ldapValueType",
span: Span {
start: Position {
line: 32,
column: 32,
},
end: Position {
line: 32,
column: 45,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 33,
column: 11,
},
end: Position {
line: 33,
column: 18,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 33,
column: 21,
},
end: Position {
line: 33,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 34,
column: 11,
},
end: Position {
line: 34,
column: 22,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 34,
column: 25,
},
end: Position {
line: 34,
column: 28,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 34,
column: 29,
},
end: Position {
line: 34,
column: 34,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Attributes of the parent entry.",
span: Span {
start: Position {
line: 34,
column: 36,
},
end: Position {
line: 34,
column: 67,
},
},
},
),
],
span: Span {
start: Position {
line: 34,
column: 35,
},
end: Position {
line: 34,
column: 68,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 31,
column: 26,
},
end: Position {
line: 35,
column: 10,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "children",
span: Span {
start: Position {
line: 36,
column: 9,
},
end: Position {
line: 36,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 36,
column: 20,
},
end: Position {
line: 36,
column: 28,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 39,
column: 11,
},
end: Position {
line: 39,
column: 15,
},
},
},
),
],
to: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "hiddenOptions",
span: Span {
start: Position {
line: 40,
column: 13,
},
end: Position {
line: 40,
column: 26,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 40,
column: 29,
},
end: Position {
line: 40,
column: 32,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mapAttrs",
span: Span {
start: Position {
line: 40,
column: 33,
},
end: Position {
line: 40,
column: 41,
},
},
},
),
],
default: None,
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "name",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "attr",
},
),
body: BinaryOperation(
BinaryOperation {
left: Identifier(
Identifier {
id: "attr",
span: Span {
start: Position {
line: 40,
column: 55,
},
end: Position {
line: 40,
column: 59,
},
},
},
),
operator: Update,
right: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "visible",
span: Span {
start: Position {
line: 40,
column: 65,
},
end: Position {
line: 40,
column: 72,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 40,
column: 75,
},
end: Position {
line: 40,
column: 80,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 40,
column: 63,
},
end: Position {
line: 40,
column: 83,
},
},
},
),
},
),
span: Span {
start: Position {
line: 40,
column: 49,
},
end: Position {
line: 40,
column: 83,
},
},
},
),
span: Span {
start: Position {
line: 40,
column: 43,
},
end: Position {
line: 40,
column: 83,
},
},
},
),
Identifier(
Identifier {
id: "options",
span: Span {
start: Position {
line: 40,
column: 85,
},
end: Position {
line: 40,
column: 92,
},
},
},
),
],
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 41,
column: 14,
},
end: Position {
line: 41,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "attrsOf",
span: Span {
start: Position {
line: 41,
column: 20,
},
end: Position {
line: 41,
column: 27,
},
},
},
),
],
default: None,
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 41,
column: 29,
},
end: Position {
line: 41,
column: 34,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "submodule",
span: Span {
start: Position {
line: 41,
column: 35,
},
end: Position {
line: 41,
column: 44,
},
},
},
),
],
default: None,
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 41,
column: 47,
},
end: Position {
line: 41,
column: 54,
},
},
},
),
],
to: Identifier(
Identifier {
id: "hiddenOptions",
span: Span {
start: Position {
line: 41,
column: 57,
},
end: Position {
line: 41,
column: 70,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 41,
column: 45,
},
end: Position {
line: 41,
column: 73,
},
},
},
),
],
},
),
],
},
),
span: Span {
start: Position {
line: 39,
column: 18,
},
end: Position {
line: 41,
column: 74,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 42,
column: 11,
},
end: Position {
line: 42,
column: 18,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 42,
column: 21,
},
end: Position {
line: 42,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 43,
column: 11,
},
end: Position {
line: 43,
column: 22,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 43,
column: 25,
},
end: Position {
line: 43,
column: 28,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 43,
column: 29,
},
end: Position {
line: 43,
column: 34,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Child entries of the current entry, with recursively the same structure.",
span: Span {
start: Position {
line: 43,
column: 36,
},
end: Position {
line: 43,
column: 108,
},
},
},
),
],
span: Span {
start: Position {
line: 43,
column: 35,
},
end: Position {
line: 43,
column: 109,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 44,
column: 11,
},
end: Position {
line: 44,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 44,
column: 21,
},
end: Position {
line: 44,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "literalExpression",
span: Span {
start: Position {
line: 44,
column: 25,
},
end: Position {
line: 44,
column: 42,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "{\n \"cn=schema\" = {\n # The attribute used in the DN must be defined\n attrs = { cn = \"schema\"; };\n children = {\n # This entry's DN is expanded to \"cn=foo,cn=schema\"\n \"cn=foo\" = { ... };\n };\n # These includes are inserted after \"cn=schema\", but before \"cn=foo,cn=schema\"\n includes = [ ... ];\n };\n}\n",
span: Span {
start: Position {
line: 45,
column: 1,
},
end: Position {
line: 57,
column: 11,
},
},
},
),
],
span: Span {
start: Position {
line: 44,
column: 43,
},
end: Position {
line: 57,
column: 13,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 36,
column: 29,
},
end: Position {
line: 58,
column: 10,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "includes",
span: Span {
start: Position {
line: 59,
column: 9,
},
end: Position {
line: 59,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 59,
column: 20,
},
end: Position {
line: 59,
column: 28,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 60,
column: 11,
},
end: Position {
line: 60,
column: 15,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 60,
column: 18,
},
end: Position {
line: 60,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "listOf",
span: Span {
start: Position {
line: 60,
column: 24,
},
end: Position {
line: 60,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 60,
column: 31,
},
end: Position {
line: 60,
column: 36,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 60,
column: 37,
},
end: Position {
line: 60,
column: 41,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 61,
column: 11,
},
end: Position {
line: 61,
column: 18,
},
},
},
),
],
to: List(
List {
elements: [],
span: Span {
start: Position {
line: 61,
column: 21,
},
end: Position {
line: 61,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 62,
column: 11,
},
end: Position {
line: 62,
column: 22,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 62,
column: 25,
},
end: Position {
line: 62,
column: 28,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 62,
column: 29,
},
end: Position {
line: 62,
column: 34,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "LDIF files to include after the parent's attributes but before its children.\n",
span: Span {
start: Position {
line: 63,
column: 1,
},
end: Position {
line: 64,
column: 11,
},
},
},
),
],
span: Span {
start: Position {
line: 62,
column: 35,
},
end: Position {
line: 64,
column: 13,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 59,
column: 29,
},
end: Position {
line: 65,
column: 10,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 30,
column: 17,
},
end: Position {
line: 66,
column: 8,
},
},
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 67,
column: 8,
},
end: Position {
line: 67,
column: 13,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "submodule",
span: Span {
start: Position {
line: 67,
column: 14,
},
end: Position {
line: 67,
column: 23,
},
},
},
),
],
default: None,
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
Inherit(
BindingInherit {
from: None,
attributes: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 67,
column: 34,
},
end: Position {
line: 67,
column: 41,
},
},
},
),
],
span: Span {
start: Position {
line: 67,
column: 25,
},
end: Position {
line: 67,
column: 42,
},
},
},
),
],
span: Span {
start: Position {
line: 67,
column: 24,
},
end: Position {
line: 67,
column: 44,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 29,
column: 5,
},
end: Position {
line: 67,
column: 44,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "valueToLdif",
span: Span {
start: Position {
line: 69,
column: 3,
},
end: Position {
line: 69,
column: 14,
},
},
},
),
],
to: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "attr",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "values",
},
),
body: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "listValues",
span: Span {
start: Position {
line: 70,
column: 5,
},
end: Position {
line: 70,
column: 15,
},
},
},
),
],
to: IfThenElse(
IfThenElse {
predicate: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 70,
column: 21,
},
end: Position {
line: 70,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "isList",
span: Span {
start: Position {
line: 70,
column: 25,
},
end: Position {
line: 70,
column: 31,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "values",
span: Span {
start: Position {
line: 70,
column: 32,
},
end: Position {
line: 70,
column: 38,
},
},
},
),
],
},
),
then: Identifier(
Identifier {
id: "values",
span: Span {
start: Position {
line: 70,
column: 44,
},
end: Position {
line: 70,
column: 50,
},
},
},
),
else_: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 70,
column: 56,
},
end: Position {
line: 70,
column: 59,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "singleton",
span: Span {
start: Position {
line: 70,
column: 60,
},
end: Position {
line: 70,
column: 69,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "values",
span: Span {
start: Position {
line: 70,
column: 70,
},
end: Position {
line: 70,
column: 76,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 70,
column: 18,
},
end: Position {
line: 70,
column: 76,
},
},
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "map",
span: Span {
start: Position {
line: 71,
column: 6,
},
end: Position {
line: 71,
column: 9,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "value",
},
),
body: IfThenElse(
IfThenElse {
predicate: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 72,
column: 8,
},
end: Position {
line: 72,
column: 11,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "isAttrs",
span: Span {
start: Position {
line: 72,
column: 12,
},
end: Position {
line: 72,
column: 19,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 72,
column: 20,
},
end: Position {
line: 72,
column: 25,
},
},
},
),
],
},
),
then: IfThenElse(
IfThenElse {
predicate: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 73,
column: 10,
},
end: Position {
line: 73,
column: 13,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "hasAttr",
span: Span {
start: Position {
line: 73,
column: 14,
},
end: Position {
line: 73,
column: 21,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 73,
column: 23,
},
end: Position {
line: 73,
column: 27,
},
},
},
),
],
span: Span {
start: Position {
line: 73,
column: 22,
},
end: Position {
line: 73,
column: 28,
},
},
},
),
Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 73,
column: 29,
},
end: Position {
line: 73,
column: 34,
},
},
},
),
],
},
),
then: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "attr",
span: Span {
start: Position {
line: 74,
column: 15,
},
end: Position {
line: 74,
column: 19,
},
},
},
),
},
),
Raw(
PartRaw {
content: ":< file://",
span: Span {
start: Position {
line: 74,
column: 13,
},
end: Position {
line: 74,
column: 30,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 74,
column: 32,
},
end: Position {
line: 74,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 74,
column: 38,
},
end: Position {
line: 74,
column: 42,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 74,
column: 12,
},
end: Position {
line: 74,
column: 44,
},
},
},
),
else_: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "attr",
span: Span {
start: Position {
line: 75,
column: 15,
},
end: Position {
line: 75,
column: 19,
},
},
},
),
},
),
Raw(
PartRaw {
content: ":: ",
span: Span {
start: Position {
line: 75,
column: 13,
},
end: Position {
line: 75,
column: 23,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 75,
column: 25,
},
end: Position {
line: 75,
column: 30,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "base64",
span: Span {
start: Position {
line: 75,
column: 31,
},
end: Position {
line: 75,
column: 37,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 75,
column: 12,
},
end: Position {
line: 75,
column: 39,
},
},
},
),
span: Span {
start: Position {
line: 73,
column: 7,
},
end: Position {
line: 75,
column: 39,
},
},
},
),
else_: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "attr",
span: Span {
start: Position {
line: 76,
column: 13,
},
end: Position {
line: 76,
column: 17,
},
},
},
),
},
),
Raw(
PartRaw {
content: ": ",
span: Span {
start: Position {
line: 76,
column: 11,
},
end: Position {
line: 76,
column: 20,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 76,
column: 22,
},
end: Position {
line: 76,
column: 25,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "replaceStrings",
span: Span {
start: Position {
line: 76,
column: 26,
},
end: Position {
line: 76,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 76,
column: 44,
},
end: Position {
line: 76,
column: 46,
},
},
},
),
],
span: Span {
start: Position {
line: 76,
column: 43,
},
end: Position {
line: 76,
column: 47,
},
},
},
),
],
span: Span {
start: Position {
line: 76,
column: 41,
},
end: Position {
line: 76,
column: 49,
},
},
},
),
List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "\n ",
span: Span {
start: Position {
line: 76,
column: 53,
},
end: Position {
line: 76,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 76,
column: 52,
},
end: Position {
line: 76,
column: 57,
},
},
},
),
],
span: Span {
start: Position {
line: 76,
column: 50,
},
end: Position {
line: 76,
column: 59,
},
},
},
),
Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 76,
column: 60,
},
end: Position {
line: 76,
column: 65,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 76,
column: 10,
},
end: Position {
line: 76,
column: 67,
},
},
},
),
span: Span {
start: Position {
line: 72,
column: 5,
},
end: Position {
line: 76,
column: 67,
},
},
},
),
span: Span {
start: Position {
line: 71,
column: 11,
},
end: Position {
line: 76,
column: 67,
},
},
},
),
Identifier(
Identifier {
id: "listValues",
span: Span {
start: Position {
line: 77,
column: 5,
},
end: Position {
line: 77,
column: 15,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 69,
column: 31,
},
end: Position {
line: 77,
column: 15,
},
},
},
),
span: Span {
start: Position {
line: 69,
column: 23,
},
end: Position {
line: 77,
column: 15,
},
},
},
),
span: Span {
start: Position {
line: 69,
column: 17,
},
end: Position {
line: 77,
column: 15,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "attrsToLdif",
span: Span {
start: Position {
line: 79,
column: 3,
},
end: Position {
line: 79,
column: 14,
},
},
},
),
],
to: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "dn",
},
),
body: Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "attrs",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "children",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "includes",
default: None,
},
],
},
),
body: BinaryOperation(
BinaryOperation {
left: List(
List {
elements: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "dn: ",
span: Span {
start: Position {
line: 80,
column: 1,
},
end: Position {
line: 80,
column: 9,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 80,
column: 11,
},
end: Position {
line: 80,
column: 13,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 80,
column: 1,
},
end: Position {
line: 81,
column: 5,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 81,
column: 7,
},
end: Position {
line: 81,
column: 10,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "concatStringsSep",
span: Span {
start: Position {
line: 81,
column: 11,
},
end: Position {
line: 81,
column: 27,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 81,
column: 29,
},
end: Position {
line: 81,
column: 31,
},
},
},
),
],
span: Span {
start: Position {
line: 81,
column: 28,
},
end: Position {
line: 81,
column: 32,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 81,
column: 34,
},
end: Position {
line: 81,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "flatten",
span: Span {
start: Position {
line: 81,
column: 38,
},
end: Position {
line: 81,
column: 45,
},
},
},
),
],
default: None,
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 81,
column: 47,
},
end: Position {
line: 81,
column: 50,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mapAttrsToList",
span: Span {
start: Position {
line: 81,
column: 51,
},
end: Position {
line: 81,
column: 65,
},
},
},
),
],
default: None,
},
),
arguments: [
Identifier(
Identifier {
id: "valueToLdif",
span: Span {
start: Position {
line: 81,
column: 66,
},
end: Position {
line: 81,
column: 77,
},
},
},
),
Identifier(
Identifier {
id: "attrs",
span: Span {
start: Position {
line: 81,
column: 78,
},
end: Position {
line: 81,
column: 83,
},
},
},
),
],
},
),
],
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 80,
column: 1,
},
end: Position {
line: 82,
column: 3,
},
},
},
),
],
span: Span {
start: Position {
line: 79,
column: 58,
},
end: Position {
line: 82,
column: 5,
},
},
},
),
],
span: Span {
start: Position {
line: 79,
column: 57,
},
end: Position {
line: 82,
column: 6,
},
},
},
),
operator: Concatenation,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "map",
span: Span {
start: Position {
line: 82,
column: 11,
},
end: Position {
line: 82,
column: 14,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "path",
},
),
body: String(
String_ {
parts: [
Raw(
PartRaw {
content: "include: file://",
span: Span {
start: Position {
line: 82,
column: 23,
},
end: Position {
line: 82,
column: 46,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "path",
span: Span {
start: Position {
line: 82,
column: 41,
},
end: Position {
line: 82,
column: 45,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 82,
column: 23,
},
end: Position {
line: 82,
column: 48,
},
},
},
),
],
span: Span {
start: Position {
line: 82,
column: 22,
},
end: Position {
line: 82,
column: 49,
},
},
},
),
span: Span {
start: Position {
line: 82,
column: 16,
},
end: Position {
line: 82,
column: 49,
},
},
},
),
Identifier(
Identifier {
id: "includes",
span: Span {
start: Position {
line: 82,
column: 51,
},
end: Position {
line: 82,
column: 59,
},
},
},
),
],
},
),
operator: Concatenation,
right: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 83,
column: 5,
},
end: Position {
line: 83,
column: 8,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "flatten",
span: Span {
start: Position {
line: 83,
column: 9,
},
end: Position {
line: 83,
column: 16,
},
},
},
),
],
default: None,
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 83,
column: 18,
},
end: Position {
line: 83,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mapAttrsToList",
span: Span {
start: Position {
line: 83,
column: 22,
},
end: Position {
line: 83,
column: 36,
},
},
},
),
],
default: None,
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "name",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "value",
},
),
body: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrsToLdif",
span: Span {
start: Position {
line: 83,
column: 51,
},
end: Position {
line: 83,
column: 62,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 83,
column: 66,
},
end: Position {
line: 83,
column: 70,
},
},
},
),
},
),
Raw(
PartRaw {
content: ",",
span: Span {
start: Position {
line: 83,
column: 64,
},
end: Position {
line: 83,
column: 72,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 83,
column: 74,
},
end: Position {
line: 83,
column: 76,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 83,
column: 63,
},
end: Position {
line: 83,
column: 78,
},
},
},
),
Identifier(
Identifier {
id: "value",
span: Span {
start: Position {
line: 83,
column: 79,
},
end: Position {
line: 83,
column: 84,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 83,
column: 44,
},
end: Position {
line: 83,
column: 84,
},
},
},
),
span: Span {
start: Position {
line: 83,
column: 38,
},
end: Position {
line: 83,
column: 84,
},
},
},
),
Identifier(
Identifier {
id: "children",
span: Span {
start: Position {
line: 83,
column: 86,
},
end: Position {
line: 83,
column: 94,
},
},
},
),
],
},
),
],
},
),
},
),
},
),
span: Span {
start: Position {
line: 79,
column: 21,
},
end: Position {
line: 84,
column: 4,
},
},
},
),
span: Span {
start: Position {
line: 79,
column: 17,
},
end: Position {
line: 84,
column: 4,
},
},
},
),
},
),
],
target: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 86,
column: 3,
},
end: Position {
line: 86,
column: 10,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 87,
column: 5,
},
end: Position {
line: 87,
column: 13,
},
},
},
),
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 87,
column: 14,
},
end: Position {
line: 87,
column: 22,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 88,
column: 7,
},
end: Position {
line: 88,
column: 13,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 88,
column: 16,
},
end: Position {
line: 88,
column: 24,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 89,
column: 9,
},
end: Position {
line: 89,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 89,
column: 16,
},
end: Position {
line: 89,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 89,
column: 22,
},
end: Position {
line: 89,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 90,
column: 9,
},
end: Position {
line: 90,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 90,
column: 19,
},
end: Position {
line: 90,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 91,
column: 9,
},
end: Position {
line: 91,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 91,
column: 23,
},
end: Position {
line: 91,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 91,
column: 27,
},
end: Position {
line: 91,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Whether to enable the ldap server.",
span: Span {
start: Position {
line: 91,
column: 34,
},
end: Position {
line: 91,
column: 68,
},
},
},
),
],
span: Span {
start: Position {
line: 91,
column: 33,
},
end: Position {
line: 91,
column: 69,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 88,
column: 25,
},
end: Position {
line: 92,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 94,
column: 7,
},
end: Position {
line: 94,
column: 14,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 94,
column: 17,
},
end: Position {
line: 94,
column: 25,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 95,
column: 9,
},
end: Position {
line: 95,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 95,
column: 16,
},
end: Position {
line: 95,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 95,
column: 22,
},
end: Position {
line: 95,
column: 29,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 96,
column: 9,
},
end: Position {
line: 96,
column: 16,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 96,
column: 19,
},
end: Position {
line: 96,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 96,
column: 24,
},
end: Position {
line: 96,
column: 32,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "defaultText",
span: Span {
start: Position {
line: 97,
column: 9,
},
end: Position {
line: 97,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "literalExpression",
span: Span {
start: Position {
line: 97,
column: 23,
},
end: Position {
line: 97,
column: 40,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "pkgs.openldap",
span: Span {
start: Position {
line: 97,
column: 42,
},
end: Position {
line: 97,
column: 55,
},
},
},
),
],
span: Span {
start: Position {
line: 97,
column: 41,
},
end: Position {
line: 97,
column: 56,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 98,
column: 9,
},
end: Position {
line: 98,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 98,
column: 23,
},
end: Position {
line: 98,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 98,
column: 27,
},
end: Position {
line: 98,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "OpenLDAP package to use.\n\nThis can be used to, for example, set an OpenLDAP package\nwith custom overrides to enable modules or other\nfunctionality.\n",
span: Span {
start: Position {
line: 99,
column: 1,
},
end: Position {
line: 104,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 98,
column: 33,
},
end: Position {
line: 104,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 94,
column: 26,
},
end: Position {
line: 105,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 107,
column: 7,
},
end: Position {
line: 107,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 107,
column: 14,
},
end: Position {
line: 107,
column: 22,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 108,
column: 9,
},
end: Position {
line: 108,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 108,
column: 16,
},
end: Position {
line: 108,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 108,
column: 22,
},
end: Position {
line: 108,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 109,
column: 9,
},
end: Position {
line: 109,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 109,
column: 20,
},
end: Position {
line: 109,
column: 28,
},
},
},
),
],
span: Span {
start: Position {
line: 109,
column: 19,
},
end: Position {
line: 109,
column: 29,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 110,
column: 9,
},
end: Position {
line: 110,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 110,
column: 23,
},
end: Position {
line: 110,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 110,
column: 27,
},
end: Position {
line: 110,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "User account under which slapd runs.",
span: Span {
start: Position {
line: 110,
column: 34,
},
end: Position {
line: 110,
column: 70,
},
},
},
),
],
span: Span {
start: Position {
line: 110,
column: 33,
},
end: Position {
line: 110,
column: 71,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 107,
column: 23,
},
end: Position {
line: 111,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 113,
column: 7,
},
end: Position {
line: 113,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 113,
column: 15,
},
end: Position {
line: 113,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 114,
column: 9,
},
end: Position {
line: 114,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 114,
column: 16,
},
end: Position {
line: 114,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 114,
column: 22,
},
end: Position {
line: 114,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 115,
column: 9,
},
end: Position {
line: 115,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 115,
column: 20,
},
end: Position {
line: 115,
column: 28,
},
},
},
),
],
span: Span {
start: Position {
line: 115,
column: 19,
},
end: Position {
line: 115,
column: 29,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 116,
column: 9,
},
end: Position {
line: 116,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 116,
column: 23,
},
end: Position {
line: 116,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 116,
column: 27,
},
end: Position {
line: 116,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Group account under which slapd runs.",
span: Span {
start: Position {
line: 116,
column: 34,
},
end: Position {
line: 116,
column: 71,
},
},
},
),
],
span: Span {
start: Position {
line: 116,
column: 33,
},
end: Position {
line: 116,
column: 72,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 113,
column: 24,
},
end: Position {
line: 117,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "urlList",
span: Span {
start: Position {
line: 119,
column: 7,
},
end: Position {
line: 119,
column: 14,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 119,
column: 17,
},
end: Position {
line: 119,
column: 25,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 120,
column: 9,
},
end: Position {
line: 120,
column: 13,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 120,
column: 16,
},
end: Position {
line: 120,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "listOf",
span: Span {
start: Position {
line: 120,
column: 22,
},
end: Position {
line: 120,
column: 28,
},
},
},
),
],
default: None,
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 120,
column: 29,
},
end: Position {
line: 120,
column: 34,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 120,
column: 35,
},
end: Position {
line: 120,
column: 38,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 121,
column: 9,
},
end: Position {
line: 121,
column: 16,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "ldap:///",
span: Span {
start: Position {
line: 121,
column: 22,
},
end: Position {
line: 121,
column: 30,
},
},
},
),
],
span: Span {
start: Position {
line: 121,
column: 21,
},
end: Position {
line: 121,
column: 31,
},
},
},
),
],
span: Span {
start: Position {
line: 121,
column: 19,
},
end: Position {
line: 121,
column: 33,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 122,
column: 9,
},
end: Position {
line: 122,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 122,
column: 23,
},
end: Position {
line: 122,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 122,
column: 27,
},
end: Position {
line: 122,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "URL list slapd should listen on.",
span: Span {
start: Position {
line: 122,
column: 34,
},
end: Position {
line: 122,
column: 66,
},
},
},
),
],
span: Span {
start: Position {
line: 122,
column: 33,
},
end: Position {
line: 122,
column: 67,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 123,
column: 9,
},
end: Position {
line: 123,
column: 16,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "ldaps:///",
span: Span {
start: Position {
line: 123,
column: 22,
},
end: Position {
line: 123,
column: 31,
},
},
},
),
],
span: Span {
start: Position {
line: 123,
column: 21,
},
end: Position {
line: 123,
column: 32,
},
},
},
),
],
span: Span {
start: Position {
line: 123,
column: 19,
},
end: Position {
line: 123,
column: 34,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 119,
column: 26,
},
end: Position {
line: 124,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "settings",
span: Span {
start: Position {
line: 126,
column: 7,
},
end: Position {
line: 126,
column: 15,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 126,
column: 18,
},
end: Position {
line: 126,
column: 26,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 127,
column: 9,
},
end: Position {
line: 127,
column: 13,
},
},
},
),
],
to: Identifier(
Identifier {
id: "ldapAttrsType",
span: Span {
start: Position {
line: 127,
column: 16,
},
end: Position {
line: 127,
column: 29,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 128,
column: 9,
},
end: Position {
line: 128,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 128,
column: 23,
},
end: Position {
line: 128,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 128,
column: 27,
},
end: Position {
line: 128,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Configuration for OpenLDAP, in OLC format",
span: Span {
start: Position {
line: 128,
column: 34,
},
end: Position {
line: 128,
column: 75,
},
},
},
),
],
span: Span {
start: Position {
line: 128,
column: 33,
},
end: Position {
line: 128,
column: 76,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 129,
column: 9,
},
end: Position {
line: 129,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 129,
column: 19,
},
end: Position {
line: 129,
column: 22,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "literalExpression",
span: Span {
start: Position {
line: 129,
column: 23,
},
end: Position {
line: 129,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "{\n attrs.olcLogLevel = [ \"stats\" ];\n children = {\n \"cn=schema\".includes = [\n \"",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 134,
column: 19,
},
},
},
),
Raw(
PartRaw {
content: "$",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 134,
column: 22,
},
},
},
),
Raw(
PartRaw {
content: "{pkgs.openldap}/etc/schema/core.ldif\"\n \"",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 135,
column: 19,
},
},
},
),
Raw(
PartRaw {
content: "$",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 135,
column: 22,
},
},
},
),
Raw(
PartRaw {
content: "{pkgs.openldap}/etc/schema/cosine.ldif\"\n \"",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 136,
column: 19,
},
},
},
),
Raw(
PartRaw {
content: "$",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 136,
column: 22,
},
},
},
),
Raw(
PartRaw {
content: "{pkgs.openldap}/etc/schema/inetorgperson.ldif\"\n ];\n \"olcDatabase={-1}frontend\" = {\n attrs = {\n objectClass = \"olcDatabaseConfig\";\n olcDatabase = \"{-1}frontend\";\n olcAccess = [ \"{0}to * by dn.exact=uidNumber=0+gidNumber=0,cn=peercred,cn=external,cn=auth manage stop by * none stop\" ];\n };\n };\n \"olcDatabase={0}config\" = {\n attrs = {\n objectClass = \"olcDatabaseConfig\";\n olcDatabase = \"{0}config\";\n olcAccess = [ \"{0}to * by * none break\" ];\n };\n };\n \"olcDatabase={1}mdb\" = {\n attrs = {\n objectClass = [ \"olcDatabaseConfig\" \"olcMdbConfig\" ];\n olcDatabase = \"{1}mdb\";\n olcDbDirectory = \"/var/lib/openldap/ldap\";\n olcDbIndex = [\n \"objectClass eq\"\n \"cn pres,eq\"\n \"uid pres,eq\"\n \"sn pres,eq,subany\"\n ];\n olcSuffix = \"dc=example,dc=com\";\n olcAccess = [ \"{0}to * by * read break\" ];\n };\n };\n };\n};\n",
span: Span {
start: Position {
line: 130,
column: 1,
},
end: Position {
line: 169,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 129,
column: 41,
},
end: Position {
line: 169,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 126,
column: 27,
},
end: Position {
line: 170,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 173,
column: 7,
},
end: Position {
line: 173,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 173,
column: 19,
},
end: Position {
line: 173,
column: 27,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 174,
column: 9,
},
end: Position {
line: 174,
column: 13,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 174,
column: 16,
},
end: Position {
line: 174,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "nullOr",
span: Span {
start: Position {
line: 174,
column: 22,
},
end: Position {
line: 174,
column: 28,
},
},
},
),
],
default: None,
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 174,
column: 29,
},
end: Position {
line: 174,
column: 34,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 174,
column: 35,
},
end: Position {
line: 174,
column: 39,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 175,
column: 9,
},
end: Position {
line: 175,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 175,
column: 19,
},
end: Position {
line: 175,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 176,
column: 9,
},
end: Position {
line: 176,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 176,
column: 23,
},
end: Position {
line: 176,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 176,
column: 27,
},
end: Position {
line: 176,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Use this config directory instead of generating one from the\n`settings` option. Overrides all NixOS settings.\n",
span: Span {
start: Position {
line: 177,
column: 1,
},
end: Position {
line: 179,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 176,
column: 33,
},
end: Position {
line: 179,
column: 11,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 180,
column: 9,
},
end: Position {
line: 180,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/openldap/slapd.d",
span: Span {
start: Position {
line: 180,
column: 20,
},
end: Position {
line: 180,
column: 45,
},
},
},
),
],
span: Span {
start: Position {
line: 180,
column: 19,
},
end: Position {
line: 180,
column: 46,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 173,
column: 28,
},
end: Position {
line: 181,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "mutableConfig",
span: Span {
start: Position {
line: 183,
column: 7,
},
end: Position {
line: 183,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 183,
column: 23,
},
end: Position {
line: 183,
column: 31,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 184,
column: 9,
},
end: Position {
line: 184,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 184,
column: 16,
},
end: Position {
line: 184,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 184,
column: 22,
},
end: Position {
line: 184,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 185,
column: 9,
},
end: Position {
line: 185,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 185,
column: 19,
},
end: Position {
line: 185,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 186,
column: 9,
},
end: Position {
line: 186,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 186,
column: 23,
},
end: Position {
line: 186,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 186,
column: 27,
},
end: Position {
line: 186,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to allow writable on-line configuration. If\n`true`, the NixOS settings will only be used to\ninitialize the OpenLDAP configuration if it does not exist, and are\nsubsequently ignored.\n",
span: Span {
start: Position {
line: 187,
column: 1,
},
end: Position {
line: 191,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 186,
column: 33,
},
end: Position {
line: 191,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 183,
column: 32,
},
end: Position {
line: 192,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "declarativeContents",
span: Span {
start: Position {
line: 194,
column: 7,
},
end: Position {
line: 194,
column: 26,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 194,
column: 29,
},
end: Position {
line: 194,
column: 37,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 195,
column: 9,
},
end: Position {
line: 195,
column: 13,
},
},
},
),
],
to: With(
With {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 195,
column: 21,
},
end: Position {
line: 195,
column: 26,
},
},
},
),
target: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrsOf",
span: Span {
start: Position {
line: 195,
column: 28,
},
end: Position {
line: 195,
column: 35,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "lines",
span: Span {
start: Position {
line: 195,
column: 36,
},
end: Position {
line: 195,
column: 41,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 195,
column: 16,
},
end: Position {
line: 195,
column: 41,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 196,
column: 9,
},
end: Position {
line: 196,
column: 16,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 196,
column: 19,
},
end: Position {
line: 196,
column: 21,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 197,
column: 9,
},
end: Position {
line: 197,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 197,
column: 23,
},
end: Position {
line: 197,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 197,
column: 27,
},
end: Position {
line: 197,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Declarative contents for the LDAP database, in LDIF format by suffix.\n\nAll data will be erased when starting the LDAP server. Modifications\nto the database are not prevented, they are just dropped on the next\nreboot of the server. Performance-wise the database and indexes are\nrebuilt on each server startup, so this will slow down server startup,\nespecially with large databases.\n\nNote that the root of the DB must be defined in\n`services.openldap.settings` and the\n`olcDbDirectory` must begin with\n`\"/var/lib/openldap\"`.\n",
span: Span {
start: Position {
line: 198,
column: 1,
},
end: Position {
line: 210,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 197,
column: 33,
},
end: Position {
line: 210,
column: 11,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 211,
column: 9,
},
end: Position {
line: 211,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 211,
column: 19,
},
end: Position {
line: 211,
column: 22,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "literalExpression",
span: Span {
start: Position {
line: 211,
column: 23,
},
end: Position {
line: 211,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "{\n \"dc=example,dc=org\" = ",
span: Span {
start: Position {
line: 212,
column: 1,
},
end: Position {
line: 213,
column: 35,
},
},
},
),
Raw(
PartRaw {
content: "''",
span: Span {
start: Position {
line: 212,
column: 1,
},
end: Position {
line: 213,
column: 38,
},
},
},
),
Raw(
PartRaw {
content: "\n dn= dn: dc=example,dc=org\n objectClass: domain\n dc: example\n\n dn: ou=users,dc=example,dc=org\n objectClass = organizationalUnit\n ou: users\n\n # ...\n ",
span: Span {
start: Position {
line: 212,
column: 1,
},
end: Position {
line: 223,
column: 13,
},
},
},
),
Raw(
PartRaw {
content: "''",
span: Span {
start: Position {
line: 212,
column: 1,
},
end: Position {
line: 223,
column: 16,
},
},
},
),
Raw(
PartRaw {
content: ";\n}\n",
span: Span {
start: Position {
line: 212,
column: 1,
},
end: Position {
line: 225,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 211,
column: 41,
},
end: Position {
line: 225,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 194,
column: 38,
},
end: Position {
line: 226,
column: 8,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 87,
column: 25,
},
end: Position {
line: 227,
column: 6,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 86,
column: 13,
},
end: Position {
line: 228,
column: 4,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "meta",
span: Span {
start: Position {
line: 230,
column: 3,
},
end: Position {
line: 230,
column: 7,
},
},
},
),
Raw(
PartRaw {
content: "maintainers",
span: Span {
start: Position {
line: 230,
column: 8,
},
end: Position {
line: 230,
column: 19,
},
},
},
),
],
to: With(
With {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 230,
column: 27,
},
end: Position {
line: 230,
column: 30,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "maintainers",
span: Span {
start: Position {
line: 230,
column: 31,
},
end: Position {
line: 230,
column: 42,
},
},
},
),
],
default: None,
},
),
target: List(
List {
elements: [
Identifier(
Identifier {
id: "kwohlfahrt",
span: Span {
start: Position {
line: 230,
column: 46,
},
end: Position {
line: 230,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 230,
column: 44,
},
end: Position {
line: 230,
column: 58,
},
},
},
),
span: Span {
start: Position {
line: 230,
column: 22,
},
end: Position {
line: 230,
column: 58,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "config",
span: Span {
start: Position {
line: 232,
column: 3,
},
end: Position {
line: 232,
column: 9,
},
},
},
),
],
to: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "dbSettings",
span: Span {
start: Position {
line: 233,
column: 5,
},
end: Position {
line: 233,
column: 15,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mapAttrs'",
span: Span {
start: Position {
line: 233,
column: 18,
},
end: Position {
line: 233,
column: 27,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "name",
},
),
body: Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "attrs",
default: None,
},
],
},
),
body: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "nameValuePair",
span: Span {
start: Position {
line: 233,
column: 51,
},
end: Position {
line: 233,
column: 64,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "attrs",
span: Span {
start: Position {
line: 233,
column: 65,
},
end: Position {
line: 233,
column: 70,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "olcSuffix",
span: Span {
start: Position {
line: 233,
column: 71,
},
end: Position {
line: 233,
column: 80,
},
},
},
),
],
default: None,
},
),
Identifier(
Identifier {
id: "attrs",
span: Span {
start: Position {
line: 233,
column: 81,
},
end: Position {
line: 233,
column: 86,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 233,
column: 35,
},
end: Position {
line: 233,
column: 86,
},
},
},
),
span: Span {
start: Position {
line: 233,
column: 29,
},
end: Position {
line: 233,
column: 86,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "filterAttrs",
span: Span {
start: Position {
line: 234,
column: 8,
},
end: Position {
line: 234,
column: 19,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "name",
},
),
body: Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "attrs",
default: None,
},
],
},
),
body: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "hasPrefix",
span: Span {
start: Position {
line: 234,
column: 44,
},
end: Position {
line: 234,
column: 53,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "olcDatabase=",
span: Span {
start: Position {
line: 234,
column: 55,
},
end: Position {
line: 234,
column: 67,
},
},
},
),
],
span: Span {
start: Position {
line: 234,
column: 54,
},
end: Position {
line: 234,
column: 68,
},
},
},
),
Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 234,
column: 69,
},
end: Position {
line: 234,
column: 73,
},
},
},
),
],
},
),
operator: LogicalAnd,
right: HasAttribute(
HasAttribute {
expression: Identifier(
Identifier {
id: "attrs",
span: Span {
start: Position {
line: 234,
column: 78,
},
end: Position {
line: 234,
column: 83,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "olcSuffix",
span: Span {
start: Position {
line: 234,
column: 86,
},
end: Position {
line: 234,
column: 95,
},
},
},
),
],
},
),
},
),
span: Span {
start: Position {
line: 234,
column: 27,
},
end: Position {
line: 234,
column: 95,
},
},
},
),
span: Span {
start: Position {
line: 234,
column: 21,
},
end: Position {
line: 234,
column: 95,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 234,
column: 97,
},
end: Position {
line: 234,
column: 100,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "settings",
span: Span {
start: Position {
line: 234,
column: 101,
},
end: Position {
line: 234,
column: 109,
},
},
},
),
Raw(
PartRaw {
content: "children",
span: Span {
start: Position {
line: 234,
column: 110,
},
end: Position {
line: 234,
column: 118,
},
},
},
),
],
default: None,
},
),
],
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "settingsFile",
span: Span {
start: Position {
line: 235,
column: 5,
},
end: Position {
line: 235,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 235,
column: 20,
},
end: Position {
line: 235,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeText",
span: Span {
start: Position {
line: 235,
column: 25,
},
end: Position {
line: 235,
column: 34,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "config.ldif",
span: Span {
start: Position {
line: 235,
column: 36,
},
end: Position {
line: 235,
column: 47,
},
},
},
),
],
span: Span {
start: Position {
line: 235,
column: 35,
},
end: Position {
line: 235,
column: 48,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 235,
column: 50,
},
end: Position {
line: 235,
column: 53,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "concatStringsSep",
span: Span {
start: Position {
line: 235,
column: 54,
},
end: Position {
line: 235,
column: 70,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 235,
column: 72,
},
end: Position {
line: 235,
column: 74,
},
},
},
),
],
span: Span {
start: Position {
line: 235,
column: 71,
},
end: Position {
line: 235,
column: 75,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrsToLdif",
span: Span {
start: Position {
line: 235,
column: 77,
},
end: Position {
line: 235,
column: 88,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "cn=config",
span: Span {
start: Position {
line: 235,
column: 90,
},
end: Position {
line: 235,
column: 99,
},
},
},
),
],
span: Span {
start: Position {
line: 235,
column: 89,
},
end: Position {
line: 235,
column: 100,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 235,
column: 101,
},
end: Position {
line: 235,
column: 104,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "settings",
span: Span {
start: Position {
line: 235,
column: 105,
},
end: Position {
line: 235,
column: 113,
},
},
},
),
],
default: None,
},
),
],
},
),
],
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "writeConfig",
span: Span {
start: Position {
line: 236,
column: 5,
},
end: Position {
line: 236,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 236,
column: 19,
},
end: Position {
line: 236,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeShellScript",
span: Span {
start: Position {
line: 236,
column: 24,
},
end: Position {
line: 236,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap-config",
span: Span {
start: Position {
line: 236,
column: 42,
},
end: Position {
line: 236,
column: 57,
},
},
},
),
],
span: Span {
start: Position {
line: 236,
column: 41,
},
end: Position {
line: 236,
column: 58,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "set -euo pipefail\n\n",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 239,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 239,
column: 9,
},
end: Position {
line: 239,
column: 12,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "optionalString",
span: Span {
start: Position {
line: 239,
column: 13,
},
end: Position {
line: 239,
column: 27,
},
},
},
),
],
default: None,
},
),
arguments: [
UnaryOperation(
UnaryOperation {
operator: Not,
operand: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 239,
column: 30,
},
end: Position {
line: 239,
column: 33,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mutableConfig",
span: Span {
start: Position {
line: 239,
column: 34,
},
end: Position {
line: 239,
column: 47,
},
},
},
),
],
default: None,
},
),
span: Span {
start: Position {
line: 239,
column: 29,
},
end: Position {
line: 239,
column: 47,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "chmod -R u+w ",
span: Span {
start: Position {
line: 240,
column: 1,
},
end: Position {
line: 240,
column: 22,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 240,
column: 24,
},
end: Position {
line: 240,
column: 33,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\nrm -rf ",
span: Span {
start: Position {
line: 240,
column: 1,
},
end: Position {
line: 241,
column: 16,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 241,
column: 18,
},
end: Position {
line: 241,
column: 27,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/*\n",
span: Span {
start: Position {
line: 240,
column: 1,
},
end: Position {
line: 242,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 239,
column: 49,
},
end: Position {
line: 242,
column: 9,
},
},
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\nif [ ! -e \"",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 243,
column: 18,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 243,
column: 20,
},
end: Position {
line: 243,
column: 29,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/cn=config.ldif\" ]; then\n ",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 244,
column: 9,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "openldap",
span: Span {
start: Position {
line: 244,
column: 11,
},
end: Position {
line: 244,
column: 19,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/bin/slapadd -F ",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 244,
column: 36,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 244,
column: 38,
},
end: Position {
line: 244,
column: 47,
},
},
},
),
},
),
Raw(
PartRaw {
content: " -bcn=config -l ",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 244,
column: 64,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "settingsFile",
span: Span {
start: Position {
line: 244,
column: 66,
},
end: Position {
line: 244,
column: 78,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\nfi\nchmod -R ",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 246,
column: 16,
},
},
},
),
Interpolation(
PartInterpolation {
expression: IfThenElse(
IfThenElse {
predicate: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 246,
column: 21,
},
end: Position {
line: 246,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mutableConfig",
span: Span {
start: Position {
line: 246,
column: 25,
},
end: Position {
line: 246,
column: 38,
},
},
},
),
],
default: None,
},
),
then: String(
String_ {
parts: [
Raw(
PartRaw {
content: "u+rw",
span: Span {
start: Position {
line: 246,
column: 45,
},
end: Position {
line: 246,
column: 49,
},
},
},
),
],
span: Span {
start: Position {
line: 246,
column: 44,
},
end: Position {
line: 246,
column: 50,
},
},
},
),
else_: String(
String_ {
parts: [
Raw(
PartRaw {
content: "u+r-w",
span: Span {
start: Position {
line: 246,
column: 57,
},
end: Position {
line: 246,
column: 62,
},
},
},
),
],
span: Span {
start: Position {
line: 246,
column: 56,
},
end: Position {
line: 246,
column: 63,
},
},
},
),
span: Span {
start: Position {
line: 246,
column: 18,
},
end: Position {
line: 246,
column: 63,
},
},
},
),
},
),
Raw(
PartRaw {
content: " ",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 246,
column: 65,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 246,
column: 67,
},
end: Position {
line: 246,
column: 76,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 237,
column: 1,
},
end: Position {
line: 247,
column: 5,
},
},
},
),
],
span: Span {
start: Position {
line: 236,
column: 59,
},
end: Position {
line: 247,
column: 7,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "contentsFiles",
span: Span {
start: Position {
line: 249,
column: 5,
},
end: Position {
line: 249,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mapAttrs",
span: Span {
start: Position {
line: 249,
column: 21,
},
end: Position {
line: 249,
column: 29,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "dn",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "ldif",
},
),
body: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 249,
column: 41,
},
end: Position {
line: 249,
column: 45,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeText",
span: Span {
start: Position {
line: 249,
column: 46,
},
end: Position {
line: 249,
column: 55,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 249,
column: 59,
},
end: Position {
line: 249,
column: 61,
},
},
},
),
},
),
Raw(
PartRaw {
content: ".ldif",
span: Span {
start: Position {
line: 249,
column: 57,
},
end: Position {
line: 249,
column: 67,
},
},
},
),
],
span: Span {
start: Position {
line: 249,
column: 56,
},
end: Position {
line: 249,
column: 68,
},
},
},
),
Identifier(
Identifier {
id: "ldif",
span: Span {
start: Position {
line: 249,
column: 69,
},
end: Position {
line: 249,
column: 73,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 249,
column: 35,
},
end: Position {
line: 249,
column: 73,
},
},
},
),
span: Span {
start: Position {
line: 249,
column: 31,
},
end: Position {
line: 249,
column: 73,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 249,
column: 75,
},
end: Position {
line: 249,
column: 78,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "declarativeContents",
span: Span {
start: Position {
line: 249,
column: 79,
},
end: Position {
line: 249,
column: 98,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "writeContents",
span: Span {
start: Position {
line: 250,
column: 5,
},
end: Position {
line: 250,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 250,
column: 21,
},
end: Position {
line: 250,
column: 25,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeShellScript",
span: Span {
start: Position {
line: 250,
column: 26,
},
end: Position {
line: 250,
column: 42,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap-load",
span: Span {
start: Position {
line: 250,
column: 44,
},
end: Position {
line: 250,
column: 57,
},
},
},
),
],
span: Span {
start: Position {
line: 250,
column: 43,
},
end: Position {
line: 250,
column: 58,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "set -euo pipefail\n\nrm -rf $2/*\n",
span: Span {
start: Position {
line: 251,
column: 1,
},
end: Position {
line: 254,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "openldap",
span: Span {
start: Position {
line: 254,
column: 9,
},
end: Position {
line: 254,
column: 17,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/bin/slapadd -F ",
span: Span {
start: Position {
line: 251,
column: 1,
},
end: Position {
line: 254,
column: 34,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 254,
column: 36,
},
end: Position {
line: 254,
column: 45,
},
},
},
),
},
),
Raw(
PartRaw {
content: " -b $1 -l $3\n",
span: Span {
start: Position {
line: 251,
column: 1,
},
end: Position {
line: 255,
column: 5,
},
},
},
),
],
span: Span {
start: Position {
line: 250,
column: 59,
},
end: Position {
line: 255,
column: 7,
},
},
},
),
],
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkIf",
span: Span {
start: Position {
line: 256,
column: 6,
},
end: Position {
line: 256,
column: 10,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 256,
column: 11,
},
end: Position {
line: 256,
column: 14,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 256,
column: 15,
},
end: Position {
line: 256,
column: 21,
},
},
},
),
],
default: None,
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "assertions",
span: Span {
start: Position {
line: 257,
column: 5,
},
end: Position {
line: 257,
column: 15,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: List(
List {
elements: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "assertion",
span: Span {
start: Position {
line: 258,
column: 7,
},
end: Position {
line: 258,
column: 16,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 258,
column: 20,
},
end: Position {
line: 258,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "declarativeContents",
span: Span {
start: Position {
line: 258,
column: 24,
},
end: Position {
line: 258,
column: 43,
},
},
},
),
],
default: None,
},
),
operator: NotEqualTo,
right: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 258,
column: 47,
},
end: Position {
line: 258,
column: 49,
},
},
},
),
},
),
operator: Implication,
right: BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 258,
column: 54,
},
end: Position {
line: 258,
column: 57,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 258,
column: 58,
},
end: Position {
line: 258,
column: 67,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 258,
column: 71,
},
end: Position {
line: 258,
column: 75,
},
},
},
),
},
),
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "message",
span: Span {
start: Position {
line: 259,
column: 7,
},
end: Position {
line: 259,
column: 14,
},
},
},
),
],
to: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Declarative DB contents (",
span: Span {
start: Position {
line: 260,
column: 1,
},
end: Position {
line: 260,
column: 34,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrNames",
span: Span {
start: Position {
line: 260,
column: 36,
},
end: Position {
line: 260,
column: 45,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 260,
column: 46,
},
end: Position {
line: 260,
column: 49,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "declarativeContents",
span: Span {
start: Position {
line: 260,
column: 50,
},
end: Position {
line: 260,
column: 69,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
Raw(
PartRaw {
content: ") are not\nsupported with user-managed configuration.\n",
span: Span {
start: Position {
line: 260,
column: 1,
},
end: Position {
line: 262,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 259,
column: 17,
},
end: Position {
line: 262,
column: 9,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 257,
column: 19,
},
end: Position {
line: 263,
column: 6,
},
},
},
),
],
span: Span {
start: Position {
line: 257,
column: 18,
},
end: Position {
line: 263,
column: 7,
},
},
},
),
operator: Concatenation,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "map",
span: Span {
start: Position {
line: 263,
column: 12,
},
end: Position {
line: 263,
column: 15,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "dn",
},
),
body: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "assertion",
span: Span {
start: Position {
line: 264,
column: 7,
},
end: Position {
line: 264,
column: 16,
},
},
},
),
],
to: HasAttribute(
HasAttribute {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "getAttr",
span: Span {
start: Position {
line: 264,
column: 20,
},
end: Position {
line: 264,
column: 27,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 264,
column: 28,
},
end: Position {
line: 264,
column: 30,
},
},
},
),
Identifier(
Identifier {
id: "dbSettings",
span: Span {
start: Position {
line: 264,
column: 31,
},
end: Position {
line: 264,
column: 41,
},
},
},
),
],
},
),
attribute_path: [
Expression(
PartExpression {
expression: String(
String_ {
parts: [
Raw(
PartRaw {
content: "olcDbDirectory",
span: Span {
start: Position {
line: 264,
column: 46,
},
end: Position {
line: 264,
column: 60,
},
},
},
),
],
span: Span {
start: Position {
line: 264,
column: 45,
},
end: Position {
line: 264,
column: 61,
},
},
},
),
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "message",
span: Span {
start: Position {
line: 266,
column: 7,
},
end: Position {
line: 266,
column: 14,
},
},
},
),
],
to: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Declarative DB ",
span: Span {
start: Position {
line: 267,
column: 1,
},
end: Position {
line: 267,
column: 24,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 267,
column: 26,
},
end: Position {
line: 267,
column: 28,
},
},
},
),
},
),
Raw(
PartRaw {
content: " does not exist in `services.openldap.settings`, or does not have\n`olcDbDirectory` configured.\n",
span: Span {
start: Position {
line: 267,
column: 1,
},
end: Position {
line: 269,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 266,
column: 17,
},
end: Position {
line: 269,
column: 9,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 263,
column: 21,
},
end: Position {
line: 270,
column: 6,
},
},
},
),
span: Span {
start: Position {
line: 263,
column: 17,
},
end: Position {
line: 270,
column: 6,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrNames",
span: Span {
start: Position {
line: 270,
column: 9,
},
end: Position {
line: 270,
column: 18,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 270,
column: 19,
},
end: Position {
line: 270,
column: 22,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "declarativeContents",
span: Span {
start: Position {
line: 270,
column: 23,
},
end: Position {
line: 270,
column: 42,
},
},
},
),
],
default: None,
},
),
],
},
),
],
},
),
operator: Concatenation,
right: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mapAttrsToList",
span: Span {
start: Position {
line: 270,
column: 49,
},
end: Position {
line: 270,
column: 63,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "dn",
},
),
body: Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "olcDbDirectory",
default: Some(
Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 270,
column: 88,
},
end: Position {
line: 270,
column: 92,
},
},
},
),
),
},
],
},
),
body: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "assertion",
span: Span {
start: Position {
line: 273,
column: 7,
},
end: Position {
line: 273,
column: 16,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: BinaryOperation(
BinaryOperation {
left: Identifier(
Identifier {
id: "olcDbDirectory",
span: Span {
start: Position {
line: 273,
column: 20,
},
end: Position {
line: 273,
column: 34,
},
},
},
),
operator: NotEqualTo,
right: Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 273,
column: 38,
},
end: Position {
line: 273,
column: 42,
},
},
},
),
},
),
operator: Implication,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "hasPrefix",
span: Span {
start: Position {
line: 274,
column: 9,
},
end: Position {
line: 274,
column: 18,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/openldap/",
span: Span {
start: Position {
line: 274,
column: 20,
},
end: Position {
line: 274,
column: 38,
},
},
},
),
],
span: Span {
start: Position {
line: 274,
column: 19,
},
end: Position {
line: 274,
column: 39,
},
},
},
),
Identifier(
Identifier {
id: "olcDbDirectory",
span: Span {
start: Position {
line: 274,
column: 40,
},
end: Position {
line: 274,
column: 54,
},
},
},
),
],
},
),
operator: LogicalAnd,
right: BinaryOperation(
BinaryOperation {
left: Identifier(
Identifier {
id: "olcDbDirectory",
span: Span {
start: Position {
line: 274,
column: 60,
},
end: Position {
line: 274,
column: 74,
},
},
},
),
operator: NotEqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/openldap/",
span: Span {
start: Position {
line: 274,
column: 79,
},
end: Position {
line: 274,
column: 97,
},
},
},
),
],
span: Span {
start: Position {
line: 274,
column: 78,
},
end: Position {
line: 274,
column: 98,
},
},
},
),
},
),
},
),
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "message",
span: Span {
start: Position {
line: 275,
column: 7,
},
end: Position {
line: 275,
column: 14,
},
},
},
),
],
to: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Database ",
span: Span {
start: Position {
line: 276,
column: 1,
},
end: Position {
line: 276,
column: 18,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 276,
column: 20,
},
end: Position {
line: 276,
column: 22,
},
},
},
),
},
),
Raw(
PartRaw {
content: " has `olcDbDirectory` (",
span: Span {
start: Position {
line: 276,
column: 1,
},
end: Position {
line: 276,
column: 46,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "olcDbDirectory",
span: Span {
start: Position {
line: 276,
column: 48,
},
end: Position {
line: 276,
column: 62,
},
},
},
),
},
),
Raw(
PartRaw {
content: ") that is not a subdirectory of\n`/var/lib/openldap/`.\n",
span: Span {
start: Position {
line: 276,
column: 1,
},
end: Position {
line: 278,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 275,
column: 17,
},
end: Position {
line: 278,
column: 9,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 270,
column: 101,
},
end: Position {
line: 279,
column: 6,
},
},
},
),
span: Span {
start: Position {
line: 270,
column: 69,
},
end: Position {
line: 279,
column: 6,
},
},
},
),
span: Span {
start: Position {
line: 270,
column: 65,
},
end: Position {
line: 279,
column: 6,
},
},
},
),
Identifier(
Identifier {
id: "dbSettings",
span: Span {
start: Position {
line: 279,
column: 8,
},
end: Position {
line: 279,
column: 18,
},
},
},
),
],
},
),
},
),
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "environment",
span: Span {
start: Position {
line: 280,
column: 5,
},
end: Position {
line: 280,
column: 16,
},
},
},
),
Raw(
PartRaw {
content: "systemPackages",
span: Span {
start: Position {
line: 280,
column: 17,
},
end: Position {
line: 280,
column: 31,
},
},
},
),
],
to: List(
List {
elements: [
Identifier(
Identifier {
id: "openldap",
span: Span {
start: Position {
line: 280,
column: 36,
},
end: Position {
line: 280,
column: 44,
},
},
},
),
],
span: Span {
start: Position {
line: 280,
column: 34,
},
end: Position {
line: 280,
column: 46,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 283,
column: 5,
},
end: Position {
line: 283,
column: 13,
},
},
},
),
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 283,
column: 14,
},
end: Position {
line: 283,
column: 22,
},
},
},
),
Raw(
PartRaw {
content: "settings",
span: Span {
start: Position {
line: 283,
column: 23,
},
end: Position {
line: 283,
column: 31,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "attrs",
span: Span {
start: Position {
line: 284,
column: 7,
},
end: Position {
line: 284,
column: 12,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "objectClass",
span: Span {
start: Position {
line: 285,
column: 9,
},
end: Position {
line: 285,
column: 20,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "olcGlobal",
span: Span {
start: Position {
line: 285,
column: 24,
},
end: Position {
line: 285,
column: 33,
},
},
},
),
],
span: Span {
start: Position {
line: 285,
column: 23,
},
end: Position {
line: 285,
column: 34,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "cn",
span: Span {
start: Position {
line: 286,
column: 9,
},
end: Position {
line: 286,
column: 11,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "config",
span: Span {
start: Position {
line: 286,
column: 15,
},
end: Position {
line: 286,
column: 21,
},
},
},
),
],
span: Span {
start: Position {
line: 286,
column: 14,
},
end: Position {
line: 286,
column: 22,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 284,
column: 15,
},
end: Position {
line: 287,
column: 8,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "children",
span: Span {
start: Position {
line: 288,
column: 7,
},
end: Position {
line: 288,
column: 15,
},
},
},
),
Expression(
PartExpression {
expression: String(
String_ {
parts: [
Raw(
PartRaw {
content: "cn=schema",
span: Span {
start: Position {
line: 288,
column: 17,
},
end: Position {
line: 288,
column: 26,
},
},
},
),
],
span: Span {
start: Position {
line: 288,
column: 16,
},
end: Position {
line: 288,
column: 27,
},
},
},
),
},
),
Raw(
PartRaw {
content: "attrs",
span: Span {
start: Position {
line: 288,
column: 28,
},
end: Position {
line: 288,
column: 33,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "cn",
span: Span {
start: Position {
line: 289,
column: 9,
},
end: Position {
line: 289,
column: 11,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "schema",
span: Span {
start: Position {
line: 289,
column: 15,
},
end: Position {
line: 289,
column: 21,
},
},
},
),
],
span: Span {
start: Position {
line: 289,
column: 14,
},
end: Position {
line: 289,
column: 22,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "objectClass",
span: Span {
start: Position {
line: 290,
column: 9,
},
end: Position {
line: 290,
column: 20,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "olcSchemaConfig",
span: Span {
start: Position {
line: 290,
column: 24,
},
end: Position {
line: 290,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 290,
column: 23,
},
end: Position {
line: 290,
column: 40,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 288,
column: 36,
},
end: Position {
line: 291,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 283,
column: 34,
},
end: Position {
line: 292,
column: 6,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "systemd",
span: Span {
start: Position {
line: 294,
column: 5,
},
end: Position {
line: 294,
column: 12,
},
},
},
),
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 294,
column: 13,
},
end: Position {
line: 294,
column: 21,
},
},
},
),
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 294,
column: 22,
},
end: Position {
line: 294,
column: 30,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 295,
column: 7,
},
end: Position {
line: 295,
column: 18,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "OpenLDAP Server Daemon",
span: Span {
start: Position {
line: 295,
column: 22,
},
end: Position {
line: 295,
column: 44,
},
},
},
),
],
span: Span {
start: Position {
line: 295,
column: 21,
},
end: Position {
line: 295,
column: 45,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "documentation",
span: Span {
start: Position {
line: 296,
column: 7,
},
end: Position {
line: 296,
column: 20,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "man:slapd",
span: Span {
start: Position {
line: 297,
column: 10,
},
end: Position {
line: 297,
column: 19,
},
},
},
),
],
span: Span {
start: Position {
line: 297,
column: 9,
},
end: Position {
line: 297,
column: 20,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "man:slapd-config",
span: Span {
start: Position {
line: 298,
column: 10,
},
end: Position {
line: 298,
column: 26,
},
},
},
),
],
span: Span {
start: Position {
line: 298,
column: 9,
},
end: Position {
line: 298,
column: 27,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "man:slapd-mdb",
span: Span {
start: Position {
line: 299,
column: 10,
},
end: Position {
line: 299,
column: 23,
},
},
},
),
],
span: Span {
start: Position {
line: 299,
column: 9,
},
end: Position {
line: 299,
column: 24,
},
},
},
),
],
span: Span {
start: Position {
line: 296,
column: 23,
},
end: Position {
line: 300,
column: 8,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "wantedBy",
span: Span {
start: Position {
line: 301,
column: 7,
},
end: Position {
line: 301,
column: 15,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "multi-user.target",
span: Span {
start: Position {
line: 301,
column: 21,
},
end: Position {
line: 301,
column: 38,
},
},
},
),
],
span: Span {
start: Position {
line: 301,
column: 20,
},
end: Position {
line: 301,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 301,
column: 18,
},
end: Position {
line: 301,
column: 41,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "after",
span: Span {
start: Position {
line: 302,
column: 7,
},
end: Position {
line: 302,
column: 12,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "network-online.target",
span: Span {
start: Position {
line: 302,
column: 18,
},
end: Position {
line: 302,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 302,
column: 17,
},
end: Position {
line: 302,
column: 40,
},
},
},
),
],
span: Span {
start: Position {
line: 302,
column: 15,
},
end: Position {
line: 302,
column: 42,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serviceConfig",
span: Span {
start: Position {
line: 303,
column: 7,
},
end: Position {
line: 303,
column: 20,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "User",
span: Span {
start: Position {
line: 304,
column: 9,
},
end: Position {
line: 304,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 304,
column: 16,
},
end: Position {
line: 304,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 304,
column: 20,
},
end: Position {
line: 304,
column: 24,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "Group",
span: Span {
start: Position {
line: 305,
column: 9,
},
end: Position {
line: 305,
column: 14,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 305,
column: 17,
},
end: Position {
line: 305,
column: 20,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 305,
column: 21,
},
end: Position {
line: 305,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ExecStartPre",
span: Span {
start: Position {
line: 306,
column: 9,
},
end: Position {
line: 306,
column: 21,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "!",
span: Span {
start: Position {
line: 307,
column: 12,
},
end: Position {
line: 307,
column: 30,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 307,
column: 15,
},
end: Position {
line: 307,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "coreutils",
span: Span {
start: Position {
line: 307,
column: 20,
},
end: Position {
line: 307,
column: 29,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "/bin/mkdir -p ",
span: Span {
start: Position {
line: 307,
column: 12,
},
end: Position {
line: 307,
column: 44,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 307,
column: 46,
},
end: Position {
line: 307,
column: 55,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 307,
column: 11,
},
end: Position {
line: 307,
column: 57,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "+",
span: Span {
start: Position {
line: 308,
column: 12,
},
end: Position {
line: 308,
column: 30,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 308,
column: 15,
},
end: Position {
line: 308,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "coreutils",
span: Span {
start: Position {
line: 308,
column: 20,
},
end: Position {
line: 308,
column: 29,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "/bin/chown $USER ",
span: Span {
start: Position {
line: 308,
column: 12,
},
end: Position {
line: 308,
column: 47,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 308,
column: 49,
},
end: Position {
line: 308,
column: 58,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 308,
column: 11,
},
end: Position {
line: 308,
column: 60,
},
},
},
),
],
span: Span {
start: Position {
line: 306,
column: 24,
},
end: Position {
line: 309,
column: 10,
},
},
},
),
operator: Concatenation,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 309,
column: 15,
},
end: Position {
line: 309,
column: 18,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "optional",
span: Span {
start: Position {
line: 309,
column: 19,
},
end: Position {
line: 309,
column: 27,
},
},
},
),
],
default: None,
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 309,
column: 29,
},
end: Position {
line: 309,
column: 32,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "configDir",
span: Span {
start: Position {
line: 309,
column: 33,
},
end: Position {
line: 309,
column: 42,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: Identifier(
Identifier {
id: "null",
span: Span {
start: Position {
line: 309,
column: 46,
},
end: Position {
line: 309,
column: 50,
},
},
},
),
},
),
Identifier(
Identifier {
id: "writeConfig",
span: Span {
start: Position {
line: 309,
column: 52,
},
end: Position {
line: 309,
column: 63,
},
},
},
),
],
},
),
operator: Concatenation,
right: BinaryOperation(
BinaryOperation {
left: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mapAttrsToList",
span: Span {
start: Position {
line: 310,
column: 13,
},
end: Position {
line: 310,
column: 27,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "dn",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "content",
},
),
body: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 310,
column: 42,
},
end: Position {
line: 310,
column: 45,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "escapeShellArgs",
span: Span {
start: Position {
line: 310,
column: 46,
},
end: Position {
line: 310,
column: 61,
},
},
},
),
],
default: None,
},
),
arguments: [
List(
List {
elements: [
Identifier(
Identifier {
id: "writeContents",
span: Span {
start: Position {
line: 311,
column: 11,
},
end: Position {
line: 311,
column: 24,
},
},
},
),
Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 311,
column: 25,
},
end: Position {
line: 311,
column: 27,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "getAttr",
span: Span {
start: Position {
line: 311,
column: 29,
},
end: Position {
line: 311,
column: 36,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "dn",
span: Span {
start: Position {
line: 311,
column: 37,
},
end: Position {
line: 311,
column: 39,
},
},
},
),
Identifier(
Identifier {
id: "dbSettings",
span: Span {
start: Position {
line: 311,
column: 40,
},
end: Position {
line: 311,
column: 50,
},
},
},
),
],
},
),
attribute_path: [
Raw(
PartRaw {
content: "olcDbDirectory",
span: Span {
start: Position {
line: 311,
column: 52,
},
end: Position {
line: 311,
column: 66,
},
},
},
),
],
default: None,
},
),
Identifier(
Identifier {
id: "content",
span: Span {
start: Position {
line: 311,
column: 67,
},
end: Position {
line: 311,
column: 74,
},
},
},
),
],
span: Span {
start: Position {
line: 310,
column: 62,
},
end: Position {
line: 312,
column: 10,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 310,
column: 33,
},
end: Position {
line: 312,
column: 10,
},
},
},
),
span: Span {
start: Position {
line: 310,
column: 29,
},
end: Position {
line: 312,
column: 10,
},
},
},
),
Identifier(
Identifier {
id: "contentsFiles",
span: Span {
start: Position {
line: 312,
column: 12,
},
end: Position {
line: 312,
column: 25,
},
},
},
),
],
},
),
operator: Concatenation,
right: List(
List {
elements: [
String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "openldap",
span: Span {
start: Position {
line: 313,
column: 17,
},
end: Position {
line: 313,
column: 25,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/bin/slaptest -u -F ",
span: Span {
start: Position {
line: 313,
column: 15,
},
end: Position {
line: 313,
column: 46,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 313,
column: 48,
},
end: Position {
line: 313,
column: 57,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 313,
column: 14,
},
end: Position {
line: 313,
column: 59,
},
},
},
),
],
span: Span {
start: Position {
line: 313,
column: 12,
},
end: Position {
line: 313,
column: 61,
},
},
},
),
},
),
},
),
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ExecStart",
span: Span {
start: Position {
line: 314,
column: 9,
},
end: Position {
line: 314,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 314,
column: 21,
},
end: Position {
line: 314,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "escapeShellArgs",
span: Span {
start: Position {
line: 314,
column: 25,
},
end: Position {
line: 314,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
List(
List {
elements: [
String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "openldap",
span: Span {
start: Position {
line: 315,
column: 14,
},
end: Position {
line: 315,
column: 22,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/libexec/slapd",
span: Span {
start: Position {
line: 315,
column: 12,
},
end: Position {
line: 315,
column: 37,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 11,
},
end: Position {
line: 315,
column: 38,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "-d",
span: Span {
start: Position {
line: 315,
column: 40,
},
end: Position {
line: 315,
column: 42,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 39,
},
end: Position {
line: 315,
column: 43,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "0",
span: Span {
start: Position {
line: 315,
column: 45,
},
end: Position {
line: 315,
column: 46,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 44,
},
end: Position {
line: 315,
column: 47,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "-F",
span: Span {
start: Position {
line: 315,
column: 49,
},
end: Position {
line: 315,
column: 51,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 48,
},
end: Position {
line: 315,
column: 52,
},
},
},
),
Identifier(
Identifier {
id: "configDir",
span: Span {
start: Position {
line: 315,
column: 53,
},
end: Position {
line: 315,
column: 62,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "-h",
span: Span {
start: Position {
line: 315,
column: 64,
},
end: Position {
line: 315,
column: 66,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 63,
},
end: Position {
line: 315,
column: 67,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 315,
column: 69,
},
end: Position {
line: 315,
column: 72,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "concatStringsSep",
span: Span {
start: Position {
line: 315,
column: 73,
},
end: Position {
line: 315,
column: 89,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: " ",
span: Span {
start: Position {
line: 315,
column: 91,
},
end: Position {
line: 315,
column: 92,
},
},
},
),
],
span: Span {
start: Position {
line: 315,
column: 90,
},
end: Position {
line: 315,
column: 93,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 315,
column: 94,
},
end: Position {
line: 315,
column: 97,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "urlList",
span: Span {
start: Position {
line: 315,
column: 98,
},
end: Position {
line: 315,
column: 105,
},
},
},
),
],
default: None,
},
),
],
},
),
],
span: Span {
start: Position {
line: 314,
column: 42,
},
end: Position {
line: 316,
column: 10,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "Type",
span: Span {
start: Position {
line: 317,
column: 9,
},
end: Position {
line: 317,
column: 13,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "notify",
span: Span {
start: Position {
line: 317,
column: 17,
},
end: Position {
line: 317,
column: 23,
},
},
},
),
],
span: Span {
start: Position {
line: 317,
column: 16,
},
end: Position {
line: 317,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "NotifyAccess",
span: Span {
start: Position {
line: 321,
column: 9,
},
end: Position {
line: 321,
column: 21,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "all",
span: Span {
start: Position {
line: 321,
column: 25,
},
end: Position {
line: 321,
column: 28,
},
},
},
),
],
span: Span {
start: Position {
line: 321,
column: 24,
},
end: Position {
line: 321,
column: 29,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "RuntimeDirectory",
span: Span {
start: Position {
line: 322,
column: 9,
},
end: Position {
line: 322,
column: 25,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 322,
column: 29,
},
end: Position {
line: 322,
column: 37,
},
},
},
),
],
span: Span {
start: Position {
line: 322,
column: 28,
},
end: Position {
line: 322,
column: 38,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "StateDirectory",
span: Span {
start: Position {
line: 323,
column: 9,
},
end: Position {
line: 323,
column: 23,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 323,
column: 28,
},
end: Position {
line: 323,
column: 36,
},
},
},
),
],
span: Span {
start: Position {
line: 323,
column: 27,
},
end: Position {
line: 323,
column: 37,
},
},
},
),
],
span: Span {
start: Position {
line: 323,
column: 26,
},
end: Position {
line: 323,
column: 38,
},
},
},
),
operator: Concatenation,
right: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "map",
span: Span {
start: Position {
line: 324,
column: 15,
},
end: Position {
line: 324,
column: 18,
},
},
},
),
arguments: [
Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "olcDbDirectory",
default: None,
},
],
},
),
body: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "removePrefix",
span: Span {
start: Position {
line: 324,
column: 44,
},
end: Position {
line: 324,
column: 56,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/",
span: Span {
start: Position {
line: 324,
column: 58,
},
end: Position {
line: 324,
column: 67,
},
},
},
),
],
span: Span {
start: Position {
line: 324,
column: 57,
},
end: Position {
line: 324,
column: 68,
},
},
},
),
Identifier(
Identifier {
id: "olcDbDirectory",
span: Span {
start: Position {
line: 324,
column: 69,
},
end: Position {
line: 324,
column: 83,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 324,
column: 20,
},
end: Position {
line: 324,
column: 83,
},
},
},
),
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrValues",
span: Span {
start: Position {
line: 324,
column: 86,
},
end: Position {
line: 324,
column: 96,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "dbSettings",
span: Span {
start: Position {
line: 324,
column: 97,
},
end: Position {
line: 324,
column: 107,
},
},
},
),
],
},
),
],
},
),
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "StateDirectoryMode",
span: Span {
start: Position {
line: 325,
column: 9,
},
end: Position {
line: 325,
column: 27,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "700",
span: Span {
start: Position {
line: 325,
column: 31,
},
end: Position {
line: 325,
column: 34,
},
},
},
),
],
span: Span {
start: Position {
line: 325,
column: 30,
},
end: Position {
line: 325,
column: 35,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "AmbientCapabilities",
span: Span {
start: Position {
line: 326,
column: 9,
},
end: Position {
line: 326,
column: 28,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "CAP_NET_BIND_SERVICE",
span: Span {
start: Position {
line: 326,
column: 34,
},
end: Position {
line: 326,
column: 54,
},
},
},
),
],
span: Span {
start: Position {
line: 326,
column: 33,
},
end: Position {
line: 326,
column: 55,
},
},
},
),
],
span: Span {
start: Position {
line: 326,
column: 31,
},
end: Position {
line: 326,
column: 57,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "CapabilityBoundingSet",
span: Span {
start: Position {
line: 327,
column: 9,
},
end: Position {
line: 327,
column: 30,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "CAP_NET_BIND_SERVICE",
span: Span {
start: Position {
line: 327,
column: 36,
},
end: Position {
line: 327,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 327,
column: 35,
},
end: Position {
line: 327,
column: 57,
},
},
},
),
],
span: Span {
start: Position {
line: 327,
column: 33,
},
end: Position {
line: 327,
column: 59,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 303,
column: 23,
},
end: Position {
line: 328,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 294,
column: 33,
},
end: Position {
line: 329,
column: 6,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 331,
column: 5,
},
end: Position {
line: 331,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 331,
column: 11,
},
end: Position {
line: 331,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 331,
column: 19,
},
end: Position {
line: 331,
column: 22,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "optionalAttrs",
span: Span {
start: Position {
line: 331,
column: 23,
},
end: Position {
line: 331,
column: 36,
},
},
},
),
],
default: None,
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 331,
column: 38,
},
end: Position {
line: 331,
column: 41,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 331,
column: 42,
},
end: Position {
line: 331,
column: 46,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 331,
column: 51,
},
end: Position {
line: 331,
column: 59,
},
},
},
),
],
span: Span {
start: Position {
line: 331,
column: 50,
},
end: Position {
line: 331,
column: 60,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 332,
column: 7,
},
end: Position {
line: 332,
column: 15,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 333,
column: 9,
},
end: Position {
line: 333,
column: 14,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 333,
column: 17,
},
end: Position {
line: 333,
column: 20,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 333,
column: 21,
},
end: Position {
line: 333,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "isSystemUser",
span: Span {
start: Position {
line: 334,
column: 9,
},
end: Position {
line: 334,
column: 21,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 334,
column: 24,
},
end: Position {
line: 334,
column: 28,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 332,
column: 18,
},
end: Position {
line: 335,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 331,
column: 62,
},
end: Position {
line: 336,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 338,
column: 5,
},
end: Position {
line: 338,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "groups",
span: Span {
start: Position {
line: 338,
column: 11,
},
end: Position {
line: 338,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 338,
column: 20,
},
end: Position {
line: 338,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "optionalAttrs",
span: Span {
start: Position {
line: 338,
column: 24,
},
end: Position {
line: 338,
column: 37,
},
},
},
),
],
default: None,
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 338,
column: 39,
},
end: Position {
line: 338,
column: 42,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 338,
column: 43,
},
end: Position {
line: 338,
column: 48,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 338,
column: 53,
},
end: Position {
line: 338,
column: 61,
},
},
},
),
],
span: Span {
start: Position {
line: 338,
column: 52,
},
end: Position {
line: 338,
column: 62,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "openldap",
span: Span {
start: Position {
line: 339,
column: 7,
},
end: Position {
line: 339,
column: 15,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 339,
column: 18,
},
end: Position {
line: 339,
column: 20,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 338,
column: 64,
},
end: Position {
line: 340,
column: 6,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 256,
column: 22,
},
end: Position {
line: 341,
column: 4,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 232,
column: 12,
},
end: Position {
line: 341,
column: 4,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 85,
column: 4,
},
end: Position {
line: 342,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 4,
column: 1,
},
end: Position {
line: 342,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 3,
column: 1,
},
end: Position {
line: 342,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 1,
column: 1,
},
end: Position {
line: 342,
column: 2,
},
},
},
)