Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "options", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, FunctionHeadDestructuredArgument { identifier: "utils", 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: 6, column: 3, }, end: Position { line: 6, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 6, column: 9, }, end: Position { line: 6, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 6, column: 16, }, end: Position { line: 6, column: 24, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 6, column: 25, }, end: Position { line: 6, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "opt", span: Span { start: Position { line: 7, column: 3, }, end: Position { line: 7, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "options", span: Span { start: Position { line: 7, column: 9, }, end: Position { line: 7, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 7, column: 17, }, end: Position { line: 7, column: 25, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 7, column: 26, }, end: Position { line: 7, column: 32, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toml", span: Span { start: Position { line: 9, column: 3, }, end: Position { line: 9, column: 7, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 9, column: 10, }, end: Position { line: 9, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "formats", span: Span { start: Position { line: 9, column: 15, }, end: Position { line: 9, column: 22, }, }, }, ), Raw( PartRaw { content: "toml", span: Span { start: Position { line: 9, column: 23, }, end: Position { line: 9, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 9, column: 28, }, end: Position { line: 9, column: 30, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "yaml", span: Span { start: Position { line: 10, column: 3, }, end: Position { line: 10, column: 7, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 10, column: 10, }, end: Position { line: 10, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "formats", span: Span { start: Position { line: 10, column: 15, }, end: Position { line: 10, column: 22, }, }, }, ), Raw( PartRaw { content: "yaml", span: Span { start: Position { line: 10, column: 23, }, end: Position { line: 10, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 10, column: 28, }, end: Position { line: 10, column: 30, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ruby", span: Span { start: Position { line: 12, column: 3, }, end: Position { line: 12, column: 7, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 12, column: 10, }, end: Position { line: 12, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 12, column: 14, }, end: Position { line: 12, column: 22, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 12, column: 23, }, end: Position { line: 12, column: 29, }, }, }, ), Raw( PartRaw { content: "ruby", span: Span { start: Position { line: 12, column: 30, }, end: Position { line: 12, column: 34, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postgresqlPackage", span: Span { start: Position { line: 14, column: 3, }, end: Position { line: 14, column: 20, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 14, column: 26, }, end: Position { line: 14, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 14, column: 33, }, end: Position { line: 14, column: 41, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 14, column: 42, }, end: Position { line: 14, column: 52, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 14, column: 53, }, end: Position { line: 14, column: 59, }, }, }, ), ], default: None, }, ), then: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 15, column: 25, }, end: Position { line: 15, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 15, column: 32, }, end: Position { line: 15, column: 40, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 15, column: 41, }, end: Position { line: 15, column: 51, }, }, }, ), Raw( PartRaw { content: "package", span: Span { start: Position { line: 15, column: 52, }, end: Position { line: 15, column: 59, }, }, }, ), ], default: None, }, ), else_: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 17, column: 25, }, end: Position { line: 17, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postgresql_12", span: Span { start: Position { line: 17, column: 30, }, end: Position { line: 17, column: 43, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 14, column: 23, }, end: Position { line: 17, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitPackage", span: Span { start: Position { line: 23, column: 3, }, end: Position { line: 23, column: 13, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 25, column: 7, }, end: Position { line: 25, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "2.35.4", span: Span { start: Position { line: 25, column: 18, }, end: Position { line: 25, column: 24, }, }, }, ), ], span: Span { start: Position { line: 25, column: 17, }, end: Position { line: 25, column: 25, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 27, column: 7, }, end: Position { line: 27, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 27, column: 12, }, end: Position { line: 27, column: 15, }, }, }, ), Raw( PartRaw { content: "overrideAttrs", span: Span { start: Position { line: 27, column: 16, }, end: Position { line: 27, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "oldAttrs", }, ), body: Map( Map { recursive: true, bindings: [ Inherit( BindingInherit { from: None, attributes: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 28, column: 17, }, end: Position { line: 28, column: 24, }, }, }, ), ], span: Span { start: Position { line: 27, column: 46, }, end: Position { line: 28, column: 25, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "src", span: Span { start: Position { line: 29, column: 9, }, end: Position { line: 29, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 29, column: 15, }, end: Position { line: 29, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fetchurl", span: Span { start: Position { line: 29, column: 20, }, end: Position { line: 29, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "url", span: Span { start: Position { line: 30, column: 11, }, end: Position { line: 30, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "https://www.kernel.org/pub/software/scm/git/git-", span: Span { start: Position { line: 30, column: 18, }, end: Position { line: 30, column: 76, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "version", span: Span { start: Position { line: 30, column: 68, }, end: Position { line: 30, column: 75, }, }, }, ), }, ), Raw( PartRaw { content: ".tar.xz", span: Span { start: Position { line: 30, column: 18, }, end: Position { line: 30, column: 83, }, }, }, ), ], span: Span { start: Position { line: 30, column: 17, }, end: Position { line: 30, column: 84, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sha256", span: Span { start: Position { line: 31, column: 11, }, end: Position { line: 31, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "sha256-mv13OdNkXggeKQkJ+47QcJ6lYmcw6Qjri1ZJ2ETCTOk=", span: Span { start: Position { line: 31, column: 21, }, end: Position { line: 31, column: 72, }, }, }, ), ], span: Span { start: Position { line: 31, column: 20, }, end: Position { line: 31, column: 73, }, }, }, ), }, ), ], span: Span { start: Position { line: 29, column: 29, }, end: Position { line: 32, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 27, column: 41, }, end: Position { line: 33, column: 8, }, }, }, ), span: Span { start: Position { line: 27, column: 31, }, end: Position { line: 33, column: 8, }, }, }, ), ], }, ), span: Span { start: Position { line: 24, column: 5, }, end: Position { line: 33, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlabSocket", span: Span { start: Position { line: 35, column: 3, }, end: Position { line: 35, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 35, column: 21, }, end: Position { line: 35, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 35, column: 25, }, end: Position { line: 35, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp/sockets/gitlab.socket", span: Span { start: Position { line: 35, column: 19, }, end: Position { line: 35, column: 61, }, }, }, ), ], span: Span { start: Position { line: 35, column: 18, }, end: Position { line: 35, column: 62, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitalySocket", span: Span { start: Position { line: 36, column: 3, }, end: Position { line: 36, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 36, column: 21, }, end: Position { line: 36, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 36, column: 25, }, end: Position { line: 36, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp/sockets/gitaly.socket", span: Span { start: Position { line: 36, column: 19, }, end: Position { line: 36, column: 61, }, }, }, ), ], span: Span { start: Position { line: 36, column: 18, }, end: Position { line: 36, column: 62, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pathUrlQuote", span: Span { start: Position { line: 37, column: 3, }, end: Position { line: 37, column: 15, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "url", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceStrings", span: Span { start: Position { line: 37, column: 23, }, end: Position { line: 37, column: 37, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 37, column: 40, }, end: Position { line: 37, column: 41, }, }, }, ), ], span: Span { start: Position { line: 37, column: 39, }, end: Position { line: 37, column: 42, }, }, }, ), ], span: Span { start: Position { line: 37, column: 38, }, end: Position { line: 37, column: 43, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "%2F", span: Span { start: Position { line: 37, column: 46, }, end: Position { line: 37, column: 49, }, }, }, ), ], span: Span { start: Position { line: 37, column: 45, }, end: Position { line: 37, column: 50, }, }, }, ), ], span: Span { start: Position { line: 37, column: 44, }, end: Position { line: 37, column: 51, }, }, }, ), Identifier( Identifier { id: "url", span: Span { start: Position { line: 37, column: 52, }, end: Position { line: 37, column: 55, }, }, }, ), ], }, ), span: Span { start: Position { line: 37, column: 18, }, end: Position { line: 37, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseConfig", span: Span { start: Position { line: 39, column: 3, }, end: Position { line: 39, column: 17, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "val", span: Span { start: Position { line: 40, column: 5, }, end: Position { line: 40, column: 8, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "adapter", span: Span { start: Position { line: 41, column: 7, }, end: Position { line: 41, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 41, column: 18, }, end: Position { line: 41, column: 28, }, }, }, ), ], span: Span { start: Position { line: 41, column: 17, }, end: Position { line: 41, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "database", span: Span { start: Position { line: 42, column: 7, }, end: Position { line: 42, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 42, column: 18, }, end: Position { line: 42, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 42, column: 22, }, end: Position { line: 42, column: 34, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 43, column: 7, }, end: Position { line: 43, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 43, column: 14, }, end: Position { line: 43, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 43, column: 18, }, end: Position { line: 43, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "username", span: Span { start: Position { line: 44, column: 7, }, end: Position { line: 44, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 44, column: 18, }, end: Position { line: 44, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 44, column: 22, }, end: Position { line: 44, column: 38, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "encoding", span: Span { start: Position { line: 45, column: 7, }, end: Position { line: 45, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "utf8", span: Span { start: Position { line: 45, column: 19, }, end: Position { line: 45, column: 23, }, }, }, ), ], span: Span { start: Position { line: 45, column: 18, }, end: Position { line: 45, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pool", span: Span { start: Position { line: 46, column: 7, }, end: Position { line: 46, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 46, column: 14, }, end: Position { line: 46, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databasePool", span: Span { start: Position { line: 46, column: 18, }, end: Position { line: 46, column: 30, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 40, column: 11, }, end: Position { line: 47, column: 6, }, }, }, ), operator: Update, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 47, column: 10, }, end: Position { line: 47, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraDatabaseConfig", span: Span { start: Position { line: 47, column: 14, }, end: Position { line: 47, column: 33, }, }, }, ), ], default: None, }, ), }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 48, column: 9, }, end: Position { line: 48, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "versionAtLeast", span: Span { start: Position { line: 48, column: 13, }, end: Position { line: 48, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 48, column: 29, }, end: Position { line: 48, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "getVersion", span: Span { start: Position { line: 48, column: 33, }, end: Position { line: 48, column: 43, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 48, column: 44, }, end: Position { line: 48, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 48, column: 48, }, end: Position { line: 48, column: 56, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 48, column: 57, }, end: Position { line: 48, column: 63, }, }, }, ), ], default: None, }, ), ], }, ), String( String_ { parts: [ Raw( PartRaw { content: "15.0", span: Span { start: Position { line: 48, column: 66, }, end: Position { line: 48, column: 70, }, }, }, ), ], span: Span { start: Position { line: 48, column: 65, }, end: Position { line: 48, column: 71, }, }, }, ), ], }, ), then: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 49, column: 5, }, end: Position { line: 49, column: 15, }, }, }, ), Raw( PartRaw { content: "main", span: Span { start: Position { line: 49, column: 16, }, end: Position { line: 49, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "val", span: Span { start: Position { line: 49, column: 23, }, end: Position { line: 49, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 48, column: 77, }, end: Position { line: 50, column: 4, }, }, }, ), else_: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 51, column: 5, }, end: Position { line: 51, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "val", span: Span { start: Position { line: 51, column: 18, }, end: Position { line: 51, column: 21, }, }, }, ), }, ), ], span: Span { start: Position { line: 50, column: 10, }, end: Position { line: 52, column: 4, }, }, }, ), span: Span { start: Position { line: 48, column: 6, }, end: Position { line: 52, column: 4, }, }, }, ), span: Span { start: Position { line: 39, column: 20, }, end: Position { line: 52, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseActuallyCreateLocally", span: Span { start: Position { line: 55, column: 3, }, end: Position { line: 55, column: 32, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 55, column: 35, }, end: Position { line: 55, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseCreateLocally", span: Span { start: Position { line: 55, column: 39, }, end: Position { line: 55, column: 60, }, }, }, ), ], default: None, }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 55, column: 64, }, end: Position { line: 55, column: 67, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 55, column: 68, }, end: Position { line: 55, column: 80, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 55, column: 84, }, end: Position { line: 55, column: 86, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitalyToml", span: Span { start: Position { line: 57, column: 3, }, end: Position { line: 57, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 57, column: 16, }, end: Position { line: 57, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 57, column: 21, }, end: Position { line: 57, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitaly.toml", span: Span { start: Position { line: 57, column: 32, }, end: Position { line: 57, column: 43, }, }, }, ), ], span: Span { start: Position { line: 57, column: 31, }, end: Position { line: 57, column: 44, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "socket_path = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 58, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 58, column: 22, }, end: Position { line: 58, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "escape", span: Span { start: Position { line: 58, column: 26, }, end: Position { line: 58, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 58, column: 35, }, end: Position { line: 58, column: 37, }, }, }, ), ], span: Span { start: Position { line: 58, column: 34, }, end: Position { line: 58, column: 38, }, }, }, ), ], span: Span { start: Position { line: 58, column: 33, }, end: Position { line: 58, column: 39, }, }, }, ), Identifier( Identifier { id: "gitalySocket", span: Span { start: Position { line: 58, column: 40, }, end: Position { line: 58, column: 52, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\"\nbin_dir = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 59, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 59, column: 18, }, end: Position { line: 59, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 59, column: 22, }, end: Position { line: 59, column: 30, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 59, column: 31, }, end: Position { line: 59, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin\"\nprometheus_listen_addr = \"localhost:9236\"\n\n[git]\nbin_path = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 63, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 63, column: 19, }, end: Position { line: 63, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/git\"\n\n[gitaly-ruby]\ndir = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 66, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 66, column: 14, }, end: Position { line: 66, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 66, column: 18, }, end: Position { line: 66, column: 26, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 66, column: 27, }, end: Position { line: 66, column: 33, }, }, }, ), Raw( PartRaw { content: "ruby", span: Span { start: Position { line: 66, column: 34, }, end: Position { line: 66, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\n\n[gitlab-shell]\ndir = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 69, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 69, column: 14, }, end: Position { line: 69, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 69, column: 18, }, end: Position { line: 69, column: 26, }, }, }, ), Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 69, column: 27, }, end: Position { line: 69, column: 39, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\n\n[hooks]\ncustom_hooks_dir = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 72, column: 25, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 72, column: 27, }, end: Position { line: 72, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 72, column: 31, }, end: Position { line: 72, column: 40, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/custom_hooks\"\n\n[gitlab]\nsecret_file = \"", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 75, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 75, column: 22, }, end: Position { line: 75, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 75, column: 26, }, end: Position { line: 75, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/gitlab_shell_secret\"\nurl = \"http+unix://", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 76, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "pathUrlQuote", span: Span { start: Position { line: 76, column: 26, }, end: Position { line: 76, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "gitlabSocket", span: Span { start: Position { line: 76, column: 39, }, end: Position { line: 76, column: 51, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\"\n\n[gitlab.http-settings]\nself_signed_cert = false\n\n", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 81, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 81, column: 7, }, end: Position { line: 81, column: 23, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 81, column: 25, }, end: Position { line: 81, column: 27, }, }, }, ), ], span: Span { start: Position { line: 81, column: 24, }, end: Position { line: 81, column: 28, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrValues", span: Span { start: Position { line: 81, column: 30, }, end: Position { line: 81, column: 40, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs", span: Span { start: Position { line: 81, column: 42, }, end: Position { line: 81, column: 50, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "k", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "[[storage]]\nname = \"", span: Span { start: Position { line: 82, column: 1, }, end: Position { line: 83, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 83, column: 15, }, end: Position { line: 83, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "escape", span: Span { start: Position { line: 83, column: 19, }, end: Position { line: 83, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 83, column: 28, }, end: Position { line: 83, column: 30, }, }, }, ), ], span: Span { start: Position { line: 83, column: 27, }, end: Position { line: 83, column: 31, }, }, }, ), ], span: Span { start: Position { line: 83, column: 26, }, end: Position { line: 83, column: 32, }, }, }, ), Identifier( Identifier { id: "k", span: Span { start: Position { line: 83, column: 33, }, end: Position { line: 83, column: 34, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\"\npath = \"", span: Span { start: Position { line: 82, column: 1, }, end: Position { line: 84, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 84, column: 15, }, end: Position { line: 84, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "escape", span: Span { start: Position { line: 84, column: 19, }, end: Position { line: 84, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 84, column: 28, }, end: Position { line: 84, column: 30, }, }, }, ), ], span: Span { start: Position { line: 84, column: 27, }, end: Position { line: 84, column: 31, }, }, }, ), ], span: Span { start: Position { line: 84, column: 26, }, end: Position { line: 84, column: 32, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "v", span: Span { start: Position { line: 84, column: 33, }, end: Position { line: 84, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 84, column: 35, }, end: Position { line: 84, column: 39, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\"\n", span: Span { start: Position { line: 82, column: 1, }, end: Position { line: 85, column: 5, }, }, }, ), ], span: Span { start: Position { line: 81, column: 58, }, end: Position { line: 85, column: 7, }, }, }, ), span: Span { start: Position { line: 81, column: 55, }, end: Position { line: 85, column: 7, }, }, }, ), span: Span { start: Position { line: 81, column: 52, }, end: Position { line: 85, column: 7, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 85, column: 9, }, end: Position { line: 85, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 85, column: 22, }, end: Position { line: 85, column: 32, }, }, }, ), Raw( PartRaw { content: "repositories", span: Span { start: Position { line: 85, column: 33, }, end: Position { line: 85, column: 45, }, }, }, ), Raw( PartRaw { content: "storages", span: Span { start: Position { line: 85, column: 46, }, end: Position { line: 85, column: 54, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 58, column: 1, }, end: Position { line: 86, column: 3, }, }, }, ), ], span: Span { start: Position { line: 57, column: 45, }, end: Position { line: 86, column: 5, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlabShellConfig", span: Span { start: Position { line: 88, column: 3, }, end: Position { line: 88, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "flip", span: Span { start: Position { line: 88, column: 23, }, end: Position { line: 88, column: 27, }, }, }, ), arguments: [ Identifier( Identifier { id: "recursiveUpdate", span: Span { start: Position { line: 88, column: 28, }, end: Position { line: 88, column: 43, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 88, column: 44, }, end: Position { line: 88, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraShellConfig", span: Span { start: Position { line: 88, column: 48, }, end: Position { line: 88, column: 64, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 89, column: 5, }, end: Position { line: 89, column: 9, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 89, column: 12, }, end: Position { line: 89, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 89, column: 16, }, end: Position { line: 89, column: 20, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab_url", span: Span { start: Position { line: 90, column: 5, }, end: Position { line: 90, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "http+unix://", span: Span { start: Position { line: 90, column: 19, }, end: Position { line: 90, column: 59, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "pathUrlQuote", span: Span { start: Position { line: 90, column: 33, }, end: Position { line: 90, column: 45, }, }, }, ), arguments: [ Identifier( Identifier { id: "gitlabSocket", span: Span { start: Position { line: 90, column: 46, }, end: Position { line: 90, column: 58, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 90, column: 18, }, end: Position { line: 90, column: 60, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "http_settings", span: Span { start: Position { line: 91, column: 5, }, end: Position { line: 91, column: 18, }, }, }, ), Raw( PartRaw { content: "self_signed_cert", span: Span { start: Position { line: 91, column: 19, }, end: Position { line: 91, column: 35, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 91, column: 38, }, end: Position { line: 91, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repos_path", span: Span { start: Position { line: 92, column: 5, }, end: Position { line: 92, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 92, column: 21, }, end: Position { line: 92, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 92, column: 25, }, end: Position { line: 92, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/repositories", span: Span { start: Position { line: 92, column: 19, }, end: Position { line: 92, column: 48, }, }, }, ), ], span: Span { start: Position { line: 92, column: 18, }, end: Position { line: 92, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secret_file", span: Span { start: Position { line: 93, column: 5, }, end: Position { line: 93, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 93, column: 22, }, end: Position { line: 93, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 93, column: 26, }, end: Position { line: 93, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/gitlab_shell_secret", span: Span { start: Position { line: 93, column: 20, }, end: Position { line: 93, column: 56, }, }, }, ), ], span: Span { start: Position { line: 93, column: 19, }, end: Position { line: 93, column: 57, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "log_file", span: Span { start: Position { line: 94, column: 5, }, end: Position { line: 94, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 94, column: 19, }, end: Position { line: 94, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 94, column: 23, }, end: Position { line: 94, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/log/gitlab-shell.log", span: Span { start: Position { line: 94, column: 17, }, end: Position { line: 94, column: 54, }, }, }, ), ], span: Span { start: Position { line: 94, column: 16, }, end: Position { line: 94, column: 55, }, }, }, ), }, ), ], span: Span { start: Position { line: 88, column: 65, }, end: Position { line: 95, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "redisConfig", span: Span { start: Position { line: 97, column: 3, }, end: Position { line: 97, column: 14, }, }, }, ), Raw( PartRaw { content: "production", span: Span { start: Position { line: 97, column: 15, }, end: Position { line: 97, column: 25, }, }, }, ), Raw( PartRaw { content: "url", span: Span { start: Position { line: 97, column: 26, }, end: Position { line: 97, column: 29, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 97, column: 32, }, end: Position { line: 97, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "redisUrl", span: Span { start: Position { line: 97, column: 36, }, end: Position { line: 97, column: 44, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cableYml", span: Span { start: Position { line: 99, column: 3, }, end: Position { line: 99, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "yaml", span: Span { start: Position { line: 99, column: 14, }, end: Position { line: 99, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "generate", span: Span { start: Position { line: 99, column: 19, }, end: Position { line: 99, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "cable.yml", span: Span { start: Position { line: 99, column: 29, }, end: Position { line: 99, column: 38, }, }, }, ), ], span: Span { start: Position { line: 99, column: 28, }, end: Position { line: 99, column: 39, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 100, column: 5, }, end: Position { line: 100, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "adapter", span: Span { start: Position { line: 101, column: 7, }, end: Position { line: 101, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "redis", span: Span { start: Position { line: 101, column: 18, }, end: Position { line: 101, column: 23, }, }, }, ), ], span: Span { start: Position { line: 101, column: 17, }, end: Position { line: 101, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "url", span: Span { start: Position { line: 102, column: 7, }, end: Position { line: 102, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 102, column: 13, }, end: Position { line: 102, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "redisUrl", span: Span { start: Position { line: 102, column: 17, }, end: Position { line: 102, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "channel_prefix", span: Span { start: Position { line: 103, column: 7, }, end: Position { line: 103, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab_production", span: Span { start: Position { line: 103, column: 25, }, end: Position { line: 103, column: 42, }, }, }, ), ], span: Span { start: Position { line: 103, column: 24, }, end: Position { line: 103, column: 43, }, }, }, ), }, ), ], span: Span { start: Position { line: 100, column: 18, }, end: Position { line: 104, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 99, column: 40, }, end: Position { line: 105, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pagesArgs", span: Span { start: Position { line: 107, column: 3, }, end: Position { line: 107, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "-pages-domain", span: Span { start: Position { line: 108, column: 6, }, end: Position { line: 108, column: 19, }, }, }, ), ], span: Span { start: Position { line: 108, column: 5, }, end: Position { line: 108, column: 20, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 108, column: 21, }, end: Position { line: 108, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 108, column: 34, }, end: Position { line: 108, column: 44, }, }, }, ), Raw( PartRaw { content: "pages", span: Span { start: Position { line: 108, column: 45, }, end: Position { line: 108, column: 50, }, }, }, ), Raw( PartRaw { content: "host", span: Span { start: Position { line: 108, column: 51, }, end: Position { line: 108, column: 55, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-pages-root", span: Span { start: Position { line: 109, column: 6, }, end: Position { line: 109, column: 17, }, }, }, ), ], span: Span { start: Position { line: 109, column: 5, }, end: Position { line: 109, column: 18, }, }, }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 109, column: 22, }, end: Position { line: 109, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 109, column: 35, }, end: Position { line: 109, column: 45, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 109, column: 46, }, end: Position { line: 109, column: 52, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 109, column: 53, }, end: Position { line: 109, column: 57, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/pages", span: Span { start: Position { line: 109, column: 20, }, end: Position { line: 109, column: 64, }, }, }, ), ], span: Span { start: Position { line: 109, column: 19, }, end: Position { line: 109, column: 65, }, }, }, ), ], span: Span { start: Position { line: 107, column: 15, }, end: Position { line: 110, column: 4, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 110, column: 8, }, end: Position { line: 110, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pagesExtraArgs", span: Span { start: Position { line: 110, column: 12, }, end: Position { line: 110, column: 26, }, }, }, ), ], default: None, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlabConfig", span: Span { start: Position { line: 112, column: 3, }, end: Position { line: 112, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 114, column: 5, }, end: Position { line: 114, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "flip", span: Span { start: Position { line: 114, column: 18, }, end: Position { line: 114, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "recursiveUpdate", span: Span { start: Position { line: 114, column: 23, }, end: Position { line: 114, column: 38, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 114, column: 39, }, end: Position { line: 114, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 114, column: 43, }, end: Position { line: 114, column: 54, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 115, column: 7, }, end: Position { line: 115, column: 13, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 116, column: 9, }, end: Position { line: 116, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 116, column: 16, }, end: Position { line: 116, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 116, column: 20, }, end: Position { line: 116, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 117, column: 9, }, end: Position { line: 117, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 117, column: 16, }, end: Position { line: 117, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 117, column: 20, }, end: Position { line: 117, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "https", span: Span { start: Position { line: 118, column: 9, }, end: Position { line: 118, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 118, column: 17, }, end: Position { line: 118, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "https", span: Span { start: Position { line: 118, column: 21, }, end: Position { line: 118, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 119, column: 9, }, end: Position { line: 119, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 119, column: 16, }, end: Position { line: 119, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 119, column: 20, }, end: Position { line: 119, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "email_enabled", span: Span { start: Position { line: 120, column: 9, }, end: Position { line: 120, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 120, column: 25, }, end: Position { line: 120, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "email_display_name", span: Span { start: Position { line: 121, column: 9, }, end: Position { line: 121, column: 27, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "GitLab", span: Span { start: Position { line: 121, column: 31, }, end: Position { line: 121, column: 37, }, }, }, ), ], span: Span { start: Position { line: 121, column: 30, }, end: Position { line: 121, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "email_reply_to", span: Span { start: Position { line: 122, column: 9, }, end: Position { line: 122, column: 23, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "noreply@localhost", span: Span { start: Position { line: 122, column: 27, }, end: Position { line: 122, column: 44, }, }, }, ), ], span: Span { start: Position { line: 122, column: 26, }, end: Position { line: 122, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default_theme", span: Span { start: Position { line: 123, column: 9, }, end: Position { line: 123, column: 22, }, }, }, ), ], to: Integer( Integer { value: "2", span: Span { start: Position { line: 123, column: 25, }, end: Position { line: 123, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default_projects_features", span: Span { start: Position { line: 124, column: 9, }, end: Position { line: 124, column: 34, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "issues", span: Span { start: Position { line: 125, column: 11, }, end: Position { line: 125, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 125, column: 20, }, end: Position { line: 125, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "merge_requests", span: Span { start: Position { line: 126, column: 11, }, end: Position { line: 126, column: 25, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 126, column: 28, }, end: Position { line: 126, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wiki", span: Span { start: Position { line: 127, column: 11, }, end: Position { line: 127, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 127, column: 18, }, end: Position { line: 127, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "snippets", span: Span { start: Position { line: 128, column: 11, }, end: Position { line: 128, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 128, column: 22, }, end: Position { line: 128, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "builds", span: Span { start: Position { line: 129, column: 11, }, end: Position { line: 129, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 129, column: 20, }, end: Position { line: 129, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "container_registry", span: Span { start: Position { line: 130, column: 11, }, end: Position { line: 130, column: 29, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 130, column: 32, }, end: Position { line: 130, column: 36, }, }, }, ), }, ), ], span: Span { start: Position { line: 124, column: 37, }, end: Position { line: 131, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 115, column: 16, }, end: Position { line: 132, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repositories", span: Span { start: Position { line: 133, column: 7, }, end: Position { line: 133, column: 19, }, }, }, ), Raw( PartRaw { content: "storages", span: Span { start: Position { line: 133, column: 20, }, end: Position { line: 133, column: 28, }, }, }, ), Raw( PartRaw { content: "default", span: Span { start: Position { line: 133, column: 29, }, end: Position { line: 133, column: 36, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 133, column: 37, }, end: Position { line: 133, column: 41, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 133, column: 47, }, end: Position { line: 133, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 133, column: 51, }, end: Position { line: 133, column: 60, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/repositories", span: Span { start: Position { line: 133, column: 45, }, end: Position { line: 133, column: 74, }, }, }, ), ], span: Span { start: Position { line: 133, column: 44, }, end: Position { line: 133, column: 75, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "repositories", span: Span { start: Position { line: 134, column: 7, }, end: Position { line: 134, column: 19, }, }, }, ), Raw( PartRaw { content: "storages", span: Span { start: Position { line: 134, column: 20, }, end: Position { line: 134, column: 28, }, }, }, ), Raw( PartRaw { content: "default", span: Span { start: Position { line: 134, column: 29, }, end: Position { line: 134, column: 36, }, }, }, ), Raw( PartRaw { content: "gitaly_address", span: Span { start: Position { line: 134, column: 37, }, end: Position { line: 134, column: 51, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "unix:", span: Span { start: Position { line: 134, column: 55, }, end: Position { line: 134, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitalySocket", span: Span { start: Position { line: 134, column: 62, }, end: Position { line: 134, column: 74, }, }, }, ), }, ), ], span: Span { start: Position { line: 134, column: 54, }, end: Position { line: 134, column: 76, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "artifacts", span: Span { start: Position { line: 135, column: 7, }, end: Position { line: 135, column: 16, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 135, column: 17, }, end: Position { line: 135, column: 24, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 135, column: 27, }, end: Position { line: 135, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "lfs", span: Span { start: Position { line: 136, column: 7, }, end: Position { line: 136, column: 10, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 136, column: 11, }, end: Position { line: 136, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 136, column: 21, }, end: Position { line: 136, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gravatar", span: Span { start: Position { line: 137, column: 7, }, end: Position { line: 137, column: 15, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 137, column: 16, }, end: Position { line: 137, column: 23, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 137, column: 26, }, end: Position { line: 137, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cron_jobs", span: Span { start: Position { line: 138, column: 7, }, end: Position { line: 138, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 138, column: 19, }, end: Position { line: 138, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab_ci", span: Span { start: Position { line: 139, column: 7, }, end: Position { line: 139, column: 16, }, }, }, ), Raw( PartRaw { content: "builds_path", span: Span { start: Position { line: 139, column: 17, }, end: Position { line: 139, column: 28, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 139, column: 34, }, end: Position { line: 139, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 139, column: 38, }, end: Position { line: 139, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/builds", span: Span { start: Position { line: 139, column: 32, }, end: Position { line: 139, column: 55, }, }, }, ), ], span: Span { start: Position { line: 139, column: 31, }, end: Position { line: 139, column: 56, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ldap", span: Span { start: Position { line: 140, column: 7, }, end: Position { line: 140, column: 11, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 140, column: 12, }, end: Position { line: 140, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 140, column: 22, }, end: Position { line: 140, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "omniauth", span: Span { start: Position { line: 141, column: 7, }, end: Position { line: 141, column: 15, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 141, column: 16, }, end: Position { line: 141, column: 23, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 141, column: 26, }, end: Position { line: 141, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "shared", span: Span { start: Position { line: 142, column: 7, }, end: Position { line: 142, column: 13, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 142, column: 14, }, end: Position { line: 142, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 142, column: 24, }, end: Position { line: 142, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 142, column: 28, }, end: Position { line: 142, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/shared", span: Span { start: Position { line: 142, column: 22, }, end: Position { line: 142, column: 45, }, }, }, ), ], span: Span { start: Position { line: 142, column: 21, }, end: Position { line: 142, column: 46, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 143, column: 7, }, end: Position { line: 143, column: 13, }, }, }, ), Raw( PartRaw { content: "client_path", span: Span { start: Position { line: 143, column: 14, }, end: Position { line: 143, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 143, column: 31, }, end: Position { line: 143, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 143, column: 35, }, end: Position { line: 143, column: 43, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 143, column: 44, }, end: Position { line: 143, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin", span: Span { start: Position { line: 143, column: 29, }, end: Position { line: 143, column: 55, }, }, }, ), ], span: Span { start: Position { line: 143, column: 28, }, end: Position { line: 143, column: 56, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 144, column: 7, }, end: Position { line: 144, column: 13, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitaly_backup_path", span: Span { start: Position { line: 145, column: 9, }, end: Position { line: 145, column: 27, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 145, column: 33, }, end: Position { line: 145, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 145, column: 37, }, end: Position { line: 145, column: 45, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 145, column: 46, }, end: Position { line: 145, column: 52, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/gitaly-backup", span: Span { start: Position { line: 145, column: 31, }, end: Position { line: 145, column: 71, }, }, }, ), ], span: Span { start: Position { line: 145, column: 30, }, end: Position { line: 145, column: 72, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 146, column: 9, }, end: Position { line: 146, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 146, column: 16, }, end: Position { line: 146, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 146, column: 20, }, end: Position { line: 146, column: 26, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 146, column: 27, }, end: Position { line: 146, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keep_time", span: Span { start: Position { line: 147, column: 9, }, end: Position { line: 147, column: 18, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 147, column: 21, }, end: Position { line: 147, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 147, column: 25, }, end: Position { line: 147, column: 31, }, }, }, ), Raw( PartRaw { content: "keepTime", span: Span { start: Position { line: 147, column: 32, }, end: Position { line: 147, column: 40, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 144, column: 16, }, end: Position { line: 148, column: 8, }, }, }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 148, column: 13, }, end: Position { line: 148, column: 26, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 148, column: 28, }, end: Position { line: 148, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 148, column: 32, }, end: Position { line: 148, column: 38, }, }, }, ), Raw( PartRaw { content: "uploadOptions", span: Span { start: Position { line: 148, column: 39, }, end: Position { line: 148, column: 52, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 148, column: 56, }, end: Position { line: 148, column: 58, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "upload", span: Span { start: Position { line: 149, column: 9, }, end: Position { line: 149, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 149, column: 18, }, end: Position { line: 149, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 149, column: 22, }, end: Position { line: 149, column: 28, }, }, }, ), Raw( PartRaw { content: "uploadOptions", span: Span { start: Position { line: 149, column: 29, }, end: Position { line: 149, column: 42, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 148, column: 60, }, end: Position { line: 150, column: 8, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab_shell", span: Span { start: Position { line: 151, column: 7, }, end: Position { line: 151, column: 19, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 152, column: 9, }, end: Position { line: 152, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 152, column: 19, }, end: Position { line: 152, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 152, column: 23, }, end: Position { line: 152, column: 31, }, }, }, ), Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 152, column: 32, }, end: Position { line: 152, column: 44, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 152, column: 16, }, end: Position { line: 152, column: 46, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hooks_path", span: Span { start: Position { line: 153, column: 9, }, end: Position { line: 153, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 153, column: 25, }, end: Position { line: 153, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 153, column: 29, }, end: Position { line: 153, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/shell/hooks", span: Span { start: Position { line: 153, column: 23, }, end: Position { line: 153, column: 51, }, }, }, ), ], span: Span { start: Position { line: 153, column: 22, }, end: Position { line: 153, column: 52, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secret_file", span: Span { start: Position { line: 154, column: 9, }, end: Position { line: 154, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 154, column: 26, }, end: Position { line: 154, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 154, column: 30, }, end: Position { line: 154, column: 39, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/gitlab_shell_secret", span: Span { start: Position { line: 154, column: 24, }, end: Position { line: 154, column: 60, }, }, }, ), ], span: Span { start: Position { line: 154, column: 23, }, end: Position { line: 154, column: 61, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "upload_pack", span: Span { start: Position { line: 155, column: 9, }, end: Position { line: 155, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 155, column: 23, }, end: Position { line: 155, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "receive_pack", span: Span { start: Position { line: 156, column: 9, }, end: Position { line: 156, column: 21, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 156, column: 24, }, end: Position { line: 156, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 151, column: 22, }, end: Position { line: 157, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "workhorse", span: Span { start: Position { line: 158, column: 7, }, end: Position { line: 158, column: 16, }, }, }, ), Raw( PartRaw { content: "secret_file", span: Span { start: Position { line: 158, column: 17, }, end: Position { line: 158, column: 28, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 158, column: 34, }, end: Position { line: 158, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 158, column: 38, }, end: Position { line: 158, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.gitlab_workhorse_secret", span: Span { start: Position { line: 158, column: 32, }, end: Position { line: 158, column: 73, }, }, }, ), ], span: Span { start: Position { line: 158, column: 31, }, end: Position { line: 158, column: 74, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab_kas", span: Span { start: Position { line: 159, column: 7, }, end: Position { line: 159, column: 17, }, }, }, ), Raw( PartRaw { content: "secret_file", span: Span { start: Position { line: 159, column: 18, }, end: Position { line: 159, column: 29, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 159, column: 35, }, end: Position { line: 159, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 159, column: 39, }, end: Position { line: 159, column: 48, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.gitlab_kas_secret", span: Span { start: Position { line: 159, column: 33, }, end: Position { line: 159, column: 68, }, }, }, ), ], span: Span { start: Position { line: 159, column: 32, }, end: Position { line: 159, column: 69, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 160, column: 7, }, end: Position { line: 160, column: 10, }, }, }, ), Raw( PartRaw { content: "bin_path", span: Span { start: Position { line: 160, column: 11, }, end: Position { line: 160, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 160, column: 25, }, end: Position { line: 160, column: 35, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/git", span: Span { start: Position { line: 160, column: 23, }, end: Position { line: 160, column: 44, }, }, }, ), ], span: Span { start: Position { line: 160, column: 22, }, end: Position { line: 160, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "monitoring", span: Span { start: Position { line: 161, column: 7, }, end: Position { line: 161, column: 17, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ip_whitelist", span: Span { start: Position { line: 162, column: 9, }, end: Position { line: 162, column: 21, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "127.0.0.0/8", span: Span { start: Position { line: 162, column: 27, }, end: Position { line: 162, column: 38, }, }, }, ), ], span: Span { start: Position { line: 162, column: 26, }, end: Position { line: 162, column: 39, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "::1/128", span: Span { start: Position { line: 162, column: 41, }, end: Position { line: 162, column: 48, }, }, }, ), ], span: Span { start: Position { line: 162, column: 40, }, end: Position { line: 162, column: 49, }, }, }, ), ], span: Span { start: Position { line: 162, column: 24, }, end: Position { line: 162, column: 51, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sidekiq_exporter", span: Span { start: Position { line: 163, column: 9, }, end: Position { line: 163, column: 25, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 164, column: 11, }, end: Position { line: 164, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 164, column: 20, }, end: Position { line: 164, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "address", span: Span { start: Position { line: 165, column: 11, }, end: Position { line: 165, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "localhost", span: Span { start: Position { line: 165, column: 22, }, end: Position { line: 165, column: 31, }, }, }, ), ], span: Span { start: Position { line: 165, column: 21, }, end: Position { line: 165, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 166, column: 11, }, end: Position { line: 166, column: 15, }, }, }, ), ], to: Integer( Integer { value: "3807", span: Span { start: Position { line: 166, column: 18, }, end: Position { line: 166, column: 22, }, }, }, ), }, ), ], span: Span { start: Position { line: 163, column: 28, }, end: Position { line: 167, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 161, column: 20, }, end: Position { line: 168, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 169, column: 7, }, end: Position { line: 169, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 169, column: 18, }, end: Position { line: 169, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalAttrs", span: Span { start: Position { line: 169, column: 22, }, end: Position { line: 169, column: 35, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 169, column: 36, }, end: Position { line: 169, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 169, column: 40, }, end: Position { line: 169, column: 48, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 169, column: 49, }, end: Position { line: 169, column: 55, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 170, column: 9, }, end: Position { line: 170, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 170, column: 19, }, end: Position { line: 170, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 171, column: 9, }, end: Position { line: 171, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 171, column: 16, }, end: Position { line: 171, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 171, column: 20, }, end: Position { line: 171, column: 28, }, }, }, ), Raw( PartRaw { content: "externalAddress", span: Span { start: Position { line: 171, column: 29, }, end: Position { line: 171, column: 44, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 172, column: 9, }, end: Position { line: 172, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 172, column: 16, }, end: Position { line: 172, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 172, column: 20, }, end: Position { line: 172, column: 28, }, }, }, ), Raw( PartRaw { content: "externalPort", span: Span { start: Position { line: 172, column: 29, }, end: Position { line: 172, column: 41, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "key", span: Span { start: Position { line: 173, column: 9, }, end: Position { line: 173, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 173, column: 15, }, end: Position { line: 173, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 173, column: 19, }, end: Position { line: 173, column: 27, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 173, column: 28, }, end: Position { line: 173, column: 35, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "api_url", span: Span { start: Position { line: 174, column: 9, }, end: Position { line: 174, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "http://", span: Span { start: Position { line: 174, column: 20, }, end: Position { line: 174, column: 74, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 174, column: 29, }, end: Position { line: 174, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 174, column: 36, }, end: Position { line: 174, column: 44, }, }, }, ), Raw( PartRaw { content: "dockerRegistry", span: Span { start: Position { line: 174, column: 45, }, end: Position { line: 174, column: 59, }, }, }, ), Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 174, column: 60, }, end: Position { line: 174, column: 73, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 174, column: 20, }, end: Position { line: 174, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 174, column: 77, }, end: Position { line: 174, column: 85, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 174, column: 86, }, end: Position { line: 174, column: 92, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 174, column: 93, }, end: Position { line: 174, column: 101, }, }, }, ), Raw( PartRaw { content: "dockerRegistry", span: Span { start: Position { line: 174, column: 102, }, end: Position { line: 174, column: 116, }, }, }, ), Raw( PartRaw { content: "port", span: Span { start: Position { line: 174, column: 117, }, end: Position { line: 174, column: 121, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "/", span: Span { start: Position { line: 174, column: 20, }, end: Position { line: 174, column: 123, }, }, }, ), ], span: Span { start: Position { line: 174, column: 19, }, end: Position { line: 174, column: 124, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 175, column: 9, }, end: Position { line: 175, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 175, column: 18, }, end: Position { line: 175, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 175, column: 22, }, end: Position { line: 175, column: 30, }, }, }, ), Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 175, column: 31, }, end: Position { line: 175, column: 37, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 169, column: 56, }, end: Position { line: 176, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extra", span: Span { start: Position { line: 177, column: 7, }, end: Position { line: 177, column: 12, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 177, column: 15, }, end: Position { line: 177, column: 17, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uploads", span: Span { start: Position { line: 178, column: 7, }, end: Position { line: 178, column: 14, }, }, }, ), Raw( PartRaw { content: "storage_path", span: Span { start: Position { line: 178, column: 15, }, end: Position { line: 178, column: 27, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 178, column: 30, }, end: Position { line: 178, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 178, column: 34, }, end: Position { line: 178, column: 43, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 114, column: 55, }, end: Position { line: 179, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 112, column: 18, }, end: Position { line: 180, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlabEnv", span: Span { start: Position { line: 182, column: 3, }, end: Position { line: 182, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 182, column: 15, }, end: Position { line: 182, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 182, column: 19, }, end: Position { line: 182, column: 27, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 182, column: 28, }, end: Position { line: 182, column: 34, }, }, }, ), Raw( PartRaw { content: "gitlabEnv", span: Span { start: Position { line: 182, column: 35, }, end: Position { line: 182, column: 44, }, }, }, ), ], default: None, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 183, column: 5, }, end: Position { line: 183, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 183, column: 15, }, end: Position { line: 183, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 183, column: 19, }, end: Position { line: 183, column: 28, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/home", span: Span { start: Position { line: 183, column: 13, }, end: Position { line: 183, column: 34, }, }, }, ), ], span: Span { start: Position { line: 183, column: 12, }, end: Position { line: 183, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "PUMA_PATH", span: Span { start: Position { line: 184, column: 5, }, end: Position { line: 184, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 184, column: 20, }, end: Position { line: 184, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 184, column: 24, }, end: Position { line: 184, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/", span: Span { start: Position { line: 184, column: 18, }, end: Position { line: 184, column: 35, }, }, }, ), ], span: Span { start: Position { line: 184, column: 17, }, end: Position { line: 184, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "GITLAB_PATH", span: Span { start: Position { line: 185, column: 5, }, end: Position { line: 185, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 185, column: 22, }, end: Position { line: 185, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 185, column: 26, }, end: Position { line: 185, column: 34, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 185, column: 35, }, end: Position { line: 185, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/", span: Span { start: Position { line: 185, column: 20, }, end: Position { line: 185, column: 56, }, }, }, ), ], span: Span { start: Position { line: 185, column: 19, }, end: Position { line: 185, column: 57, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SCHEMA", span: Span { start: Position { line: 186, column: 5, }, end: Position { line: 186, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 186, column: 17, }, end: Position { line: 186, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 186, column: 21, }, end: Position { line: 186, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/db/structure.sql", span: Span { start: Position { line: 186, column: 15, }, end: Position { line: 186, column: 48, }, }, }, ), ], span: Span { start: Position { line: 186, column: 14, }, end: Position { line: 186, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "GITLAB_UPLOADS_PATH", span: Span { start: Position { line: 187, column: 5, }, end: Position { line: 187, column: 24, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 187, column: 30, }, end: Position { line: 187, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 187, column: 34, }, end: Position { line: 187, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/uploads", span: Span { start: Position { line: 187, column: 28, }, end: Position { line: 187, column: 52, }, }, }, ), ], span: Span { start: Position { line: 187, column: 27, }, end: Position { line: 187, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "GITLAB_LOG_PATH", span: Span { start: Position { line: 188, column: 5, }, end: Position { line: 188, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 188, column: 26, }, end: Position { line: 188, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 188, column: 30, }, end: Position { line: 188, column: 39, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/log", span: Span { start: Position { line: 188, column: 24, }, end: Position { line: 188, column: 44, }, }, }, ), ], span: Span { start: Position { line: 188, column: 23, }, end: Position { line: 188, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "GITLAB_REDIS_CONFIG_FILE", span: Span { start: Position { line: 189, column: 5, }, end: Position { line: 189, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 189, column: 32, }, end: Position { line: 189, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 189, column: 37, }, end: Position { line: 189, column: 46, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "redis.yml", span: Span { start: Position { line: 189, column: 48, }, end: Position { line: 189, column: 57, }, }, }, ), ], span: Span { start: Position { line: 189, column: 47, }, end: Position { line: 189, column: 58, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 189, column: 60, }, end: Position { line: 189, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 189, column: 69, }, end: Position { line: 189, column: 75, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "redisConfig", span: Span { start: Position { line: 189, column: 76, }, end: Position { line: 189, column: 87, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "prometheus_multiproc_dir", span: Span { start: Position { line: 190, column: 5, }, end: Position { line: 190, column: 29, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/run/gitlab", span: Span { start: Position { line: 190, column: 33, }, end: Position { line: 190, column: 44, }, }, }, ), ], span: Span { start: Position { line: 190, column: 32, }, end: Position { line: 190, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RAILS_ENV", span: Span { start: Position { line: 191, column: 5, }, end: Position { line: 191, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 191, column: 18, }, end: Position { line: 191, column: 28, }, }, }, ), ], span: Span { start: Position { line: 191, column: 17, }, end: Position { line: 191, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "MALLOC_ARENA_MAX", span: Span { start: Position { line: 192, column: 5, }, end: Position { line: 192, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "2", span: Span { start: Position { line: 192, column: 25, }, end: Position { line: 192, column: 26, }, }, }, ), ], span: Span { start: Position { line: 192, column: 24, }, end: Position { line: 192, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 182, column: 48, }, end: Position { line: 193, column: 4, }, }, }, ), operator: Update, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 193, column: 8, }, end: Position { line: 193, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraEnv", span: Span { start: Position { line: 193, column: 12, }, end: Position { line: 193, column: 20, }, }, }, ), ], default: None, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "runtimeDeps", span: Span { start: Position { line: 195, column: 3, }, end: Position { line: 195, column: 14, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 195, column: 22, }, end: Position { line: 195, column: 26, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "nodejs", span: Span { start: Position { line: 196, column: 5, }, end: Position { line: 196, column: 11, }, }, }, ), Identifier( Identifier { id: "gzip", span: Span { start: Position { line: 197, column: 5, }, end: Position { line: 197, column: 9, }, }, }, ), Identifier( Identifier { id: "git", span: Span { start: Position { line: 198, column: 5, }, end: Position { line: 198, column: 8, }, }, }, ), Identifier( Identifier { id: "gnutar", span: Span { start: Position { line: 199, column: 5, }, end: Position { line: 199, column: 11, }, }, }, ), Identifier( Identifier { id: "postgresqlPackage", span: Span { start: Position { line: 200, column: 5, }, end: Position { line: 200, column: 22, }, }, }, ), Identifier( Identifier { id: "coreutils", span: Span { start: Position { line: 201, column: 5, }, end: Position { line: 201, column: 14, }, }, }, ), Identifier( Identifier { id: "procps", span: Span { start: Position { line: 202, column: 5, }, end: Position { line: 202, column: 11, }, }, }, ), Identifier( Identifier { id: "findutils", span: Span { start: Position { line: 203, column: 5, }, end: Position { line: 203, column: 14, }, }, }, ), ], span: Span { start: Position { line: 195, column: 28, }, end: Position { line: 204, column: 4, }, }, }, ), span: Span { start: Position { line: 195, column: 17, }, end: Position { line: 204, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab-rake", span: Span { start: Position { line: 206, column: 3, }, end: Position { line: 206, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 206, column: 17, }, end: Position { line: 206, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 206, column: 22, }, end: Position { line: 206, column: 28, }, }, }, ), Raw( PartRaw { content: "mkDerivation", span: Span { start: Position { line: 206, column: 29, }, end: Position { line: 206, column: 41, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 207, column: 5, }, end: Position { line: 207, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab-rake", span: Span { start: Position { line: 207, column: 13, }, end: Position { line: 207, column: 24, }, }, }, ), ], span: Span { start: Position { line: 207, column: 12, }, end: Position { line: 207, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nativeBuildInputs", span: Span { start: Position { line: 208, column: 5, }, end: Position { line: 208, column: 22, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 208, column: 27, }, end: Position { line: 208, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "makeWrapper", span: Span { start: Position { line: 208, column: 32, }, end: Position { line: 208, column: 43, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 208, column: 25, }, end: Position { line: 208, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dontBuild", span: Span { start: Position { line: 209, column: 5, }, end: Position { line: 209, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 209, column: 17, }, end: Position { line: 209, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dontUnpack", span: Span { start: Position { line: 210, column: 5, }, end: Position { line: 210, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 210, column: 18, }, end: Position { line: 210, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "installPhase", span: Span { start: Position { line: 211, column: 5, }, end: Position { line: 211, column: 17, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p $out/bin\nmakeWrapper ", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 213, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 213, column: 21, }, end: Position { line: 213, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 213, column: 25, }, end: Position { line: 213, column: 33, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 213, column: 34, }, end: Position { line: 213, column: 40, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 213, column: 41, }, end: Position { line: 213, column: 48, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/rake $out/bin/gitlab-rake \\\n ", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 214, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStrings", span: Span { start: Position { line: 214, column: 13, }, end: Position { line: 214, column: 26, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 214, column: 28, }, end: Position { line: 214, column: 42, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--set ", span: Span { start: Position { line: 214, column: 58, }, end: Position { line: 214, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 214, column: 66, }, end: Position { line: 214, column: 70, }, }, }, ), }, ), Raw( PartRaw { content: " '", span: Span { start: Position { line: 214, column: 58, }, end: Position { line: 214, column: 73, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 214, column: 75, }, end: Position { line: 214, column: 80, }, }, }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 214, column: 58, }, end: Position { line: 214, column: 83, }, }, }, ), ], span: Span { start: Position { line: 214, column: 57, }, end: Position { line: 214, column: 84, }, }, }, ), span: Span { start: Position { line: 214, column: 50, }, end: Position { line: 214, column: 84, }, }, }, ), span: Span { start: Position { line: 214, column: 44, }, end: Position { line: 214, column: 84, }, }, }, ), Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 214, column: 86, }, end: Position { line: 214, column: 95, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n --set PATH ", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 215, column: 22, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 215, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 215, column: 25, }, end: Position { line: 215, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "makeBinPath", span: Span { start: Position { line: 215, column: 29, }, end: Position { line: 215, column: 40, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "runtimeDeps", span: Span { start: Position { line: 215, column: 41, }, end: Position { line: 215, column: 52, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ":$PATH' \\\n --set RAKEOPT '-f ", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 216, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 216, column: 31, }, end: Position { line: 216, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 216, column: 35, }, end: Position { line: 216, column: 43, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 216, column: 44, }, end: Position { line: 216, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/Rakefile' \\\n --chdir ", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 217, column: 19, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 217, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 217, column: 22, }, end: Position { line: 217, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 217, column: 26, }, end: Position { line: 217, column: 34, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 217, column: 35, }, end: Position { line: 217, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab'\n", span: Span { start: Position { line: 212, column: 1, }, end: Position { line: 218, column: 6, }, }, }, ), ], span: Span { start: Position { line: 211, column: 20, }, end: Position { line: 218, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 206, column: 42, }, end: Position { line: 219, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab-rails", span: Span { start: Position { line: 221, column: 3, }, end: Position { line: 221, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 221, column: 18, }, end: Position { line: 221, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 221, column: 23, }, end: Position { line: 221, column: 29, }, }, }, ), Raw( PartRaw { content: "mkDerivation", span: Span { start: Position { line: 221, column: 30, }, end: Position { line: 221, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 222, column: 5, }, end: Position { line: 222, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab-rails", span: Span { start: Position { line: 222, column: 13, }, end: Position { line: 222, column: 25, }, }, }, ), ], span: Span { start: Position { line: 222, column: 12, }, end: Position { line: 222, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nativeBuildInputs", span: Span { start: Position { line: 223, column: 5, }, end: Position { line: 223, column: 22, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 223, column: 27, }, end: Position { line: 223, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "makeWrapper", span: Span { start: Position { line: 223, column: 32, }, end: Position { line: 223, column: 43, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 223, column: 25, }, end: Position { line: 223, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dontBuild", span: Span { start: Position { line: 224, column: 5, }, end: Position { line: 224, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 224, column: 17, }, end: Position { line: 224, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dontUnpack", span: Span { start: Position { line: 225, column: 5, }, end: Position { line: 225, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 225, column: 18, }, end: Position { line: 225, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "installPhase", span: Span { start: Position { line: 226, column: 5, }, end: Position { line: 226, column: 17, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p $out/bin\nmakeWrapper ", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 228, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 228, column: 21, }, end: Position { line: 228, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 228, column: 25, }, end: Position { line: 228, column: 33, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 228, column: 34, }, end: Position { line: 228, column: 40, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 228, column: 41, }, end: Position { line: 228, column: 48, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/rails $out/bin/gitlab-rails \\\n ", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 229, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStrings", span: Span { start: Position { line: 229, column: 13, }, end: Position { line: 229, column: 26, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 229, column: 28, }, end: Position { line: 229, column: 42, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--set ", span: Span { start: Position { line: 229, column: 58, }, end: Position { line: 229, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 229, column: 66, }, end: Position { line: 229, column: 70, }, }, }, ), }, ), Raw( PartRaw { content: " '", span: Span { start: Position { line: 229, column: 58, }, end: Position { line: 229, column: 73, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 229, column: 75, }, end: Position { line: 229, column: 80, }, }, }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 229, column: 58, }, end: Position { line: 229, column: 83, }, }, }, ), ], span: Span { start: Position { line: 229, column: 57, }, end: Position { line: 229, column: 84, }, }, }, ), span: Span { start: Position { line: 229, column: 50, }, end: Position { line: 229, column: 84, }, }, }, ), span: Span { start: Position { line: 229, column: 44, }, end: Position { line: 229, column: 84, }, }, }, ), Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 229, column: 86, }, end: Position { line: 229, column: 95, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n --set PATH ", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 230, column: 22, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 230, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 230, column: 25, }, end: Position { line: 230, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "makeBinPath", span: Span { start: Position { line: 230, column: 29, }, end: Position { line: 230, column: 40, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "runtimeDeps", span: Span { start: Position { line: 230, column: 41, }, end: Position { line: 230, column: 52, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ":$PATH' \\\n --chdir ", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 231, column: 19, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 231, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 231, column: 22, }, end: Position { line: 231, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 231, column: 26, }, end: Position { line: 231, column: 34, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 231, column: 35, }, end: Position { line: 231, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab'\n", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 232, column: 6, }, }, }, ), ], span: Span { start: Position { line: 226, column: 20, }, end: Position { line: 232, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 221, column: 43, }, end: Position { line: 233, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraGitlabRb", span: Span { start: Position { line: 235, column: 3, }, end: Position { line: 235, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 235, column: 19, }, end: Position { line: 235, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 235, column: 24, }, end: Position { line: 235, column: 33, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "extra-gitlab.rb", span: Span { start: Position { line: 235, column: 35, }, end: Position { line: 235, column: 50, }, }, }, ), ], span: Span { start: Position { line: 235, column: 34, }, end: Position { line: 235, column: 51, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 235, column: 52, }, end: Position { line: 235, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraGitlabRb", span: Span { start: Position { line: 235, column: 56, }, end: Position { line: 235, column: 69, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "smtpSettings", span: Span { start: Position { line: 237, column: 3, }, end: Position { line: 237, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 237, column: 18, }, end: Position { line: 237, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 237, column: 23, }, end: Position { line: 237, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-smtp-settings.rb", span: Span { start: Position { line: 237, column: 34, }, end: Position { line: 237, column: 57, }, }, }, ), ], span: Span { start: Position { line: 237, column: 33, }, end: Position { line: 237, column: 58, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if Rails.env.production?\n Rails.application.config.action_mailer.delivery_method = :smtp\n\n ActionMailer::Base.delivery_method = :smtp\n ActionMailer::Base.smtp_settings = {\n address: \"", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 243, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 243, column: 21, }, end: Position { line: 243, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 243, column: 25, }, end: Position { line: 243, column: 29, }, }, }, ), Raw( PartRaw { content: "address", span: Span { start: Position { line: 243, column: 30, }, end: Position { line: 243, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\",\n port: ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 244, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 244, column: 17, }, end: Position { line: 244, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 244, column: 26, }, end: Position { line: 244, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 244, column: 30, }, end: Position { line: 244, column: 34, }, }, }, ), Raw( PartRaw { content: "port", span: Span { start: Position { line: 244, column: 35, }, end: Position { line: 244, column: 39, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: ",\n ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 245, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 245, column: 11, }, end: Position { line: 245, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 245, column: 27, }, end: Position { line: 245, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 245, column: 31, }, end: Position { line: 245, column: 35, }, }, }, ), Raw( PartRaw { content: "username", span: Span { start: Position { line: 245, column: 36, }, end: Position { line: 245, column: 44, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 245, column: 48, }, end: Position { line: 245, column: 52, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "user_name: \"", span: Span { start: Position { line: 245, column: 56, }, end: Position { line: 245, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 245, column: 70, }, end: Position { line: 245, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 245, column: 74, }, end: Position { line: 245, column: 78, }, }, }, ), Raw( PartRaw { content: "username", span: Span { start: Position { line: 245, column: 79, }, end: Position { line: 245, column: 87, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\",", span: Span { start: Position { line: 245, column: 56, }, end: Position { line: 245, column: 90, }, }, }, ), ], span: Span { start: Position { line: 245, column: 54, }, end: Position { line: 245, column: 92, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 246, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 246, column: 11, }, end: Position { line: 246, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 246, column: 27, }, end: Position { line: 246, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 246, column: 31, }, end: Position { line: 246, column: 35, }, }, }, ), Raw( PartRaw { content: "passwordFile", span: Span { start: Position { line: 246, column: 36, }, end: Position { line: 246, column: 48, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 246, column: 52, }, end: Position { line: 246, column: 56, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "password: \"@smtpPassword@\",", span: Span { start: Position { line: 246, column: 60, }, end: Position { line: 246, column: 87, }, }, }, ), ], span: Span { start: Position { line: 246, column: 58, }, end: Position { line: 246, column: 89, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n domain: \"", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 247, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 247, column: 20, }, end: Position { line: 247, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 247, column: 24, }, end: Position { line: 247, column: 28, }, }, }, ), Raw( PartRaw { content: "domain", span: Span { start: Position { line: 247, column: 29, }, end: Position { line: 247, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\",\n ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 248, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 248, column: 11, }, end: Position { line: 248, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 248, column: 27, }, end: Position { line: 248, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 248, column: 31, }, end: Position { line: 248, column: 35, }, }, }, ), Raw( PartRaw { content: "authentication", span: Span { start: Position { line: 248, column: 36, }, end: Position { line: 248, column: 50, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 248, column: 54, }, end: Position { line: 248, column: 58, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "authentication: :", span: Span { start: Position { line: 248, column: 61, }, end: Position { line: 248, column: 104, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 248, column: 80, }, end: Position { line: 248, column: 83, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 248, column: 84, }, end: Position { line: 248, column: 88, }, }, }, ), Raw( PartRaw { content: "authentication", span: Span { start: Position { line: 248, column: 89, }, end: Position { line: 248, column: 103, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ",", span: Span { start: Position { line: 248, column: 61, }, end: Position { line: 248, column: 105, }, }, }, ), ], span: Span { start: Position { line: 248, column: 60, }, end: Position { line: 248, column: 106, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n enable_starttls_auto: ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 249, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "boolToString", span: Span { start: Position { line: 249, column: 33, }, end: Position { line: 249, column: 45, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 249, column: 46, }, end: Position { line: 249, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 249, column: 50, }, end: Position { line: 249, column: 54, }, }, }, ), Raw( PartRaw { content: "enableStartTLSAuto", span: Span { start: Position { line: 249, column: 55, }, end: Position { line: 249, column: 73, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: ",\n tls: ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 250, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "boolToString", span: Span { start: Position { line: 250, column: 16, }, end: Position { line: 250, column: 28, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 250, column: 29, }, end: Position { line: 250, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 250, column: 33, }, end: Position { line: 250, column: 37, }, }, }, ), Raw( PartRaw { content: "tls", span: Span { start: Position { line: 250, column: 38, }, end: Position { line: 250, column: 41, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: ",\n ca_file: \"/etc/ssl/certs/ca-certificates.crt\",\n openssl_verify_mode: ", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 252, column: 30, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 252, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 252, column: 33, }, end: Position { line: 252, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 252, column: 37, }, end: Position { line: 252, column: 41, }, }, }, ), Raw( PartRaw { content: "opensslVerifyMode", span: Span { start: Position { line: 252, column: 42, }, end: Position { line: 252, column: 59, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'\n }\nend\n", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 255, column: 3, }, }, }, ), ], span: Span { start: Position { line: 237, column: 59, }, end: Position { line: 255, column: 5, }, }, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "imports", span: Span { start: Position { line: 259, column: 3, }, end: Position { line: 259, column: 10, }, }, }, ), ], to: List( List { elements: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 260, column: 6, }, end: Position { line: 260, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 260, column: 31, }, end: Position { line: 260, column: 39, }, }, }, ), ], span: Span { start: Position { line: 260, column: 30, }, end: Position { line: 260, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 260, column: 42, }, end: Position { line: 260, column: 48, }, }, }, ), ], span: Span { start: Position { line: 260, column: 41, }, end: Position { line: 260, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "stateDir", span: Span { start: Position { line: 260, column: 51, }, end: Position { line: 260, column: 59, }, }, }, ), ], span: Span { start: Position { line: 260, column: 50, }, end: Position { line: 260, column: 60, }, }, }, ), ], span: Span { start: Position { line: 260, column: 28, }, end: Position { line: 260, column: 62, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 260, column: 66, }, end: Position { line: 260, column: 74, }, }, }, ), ], span: Span { start: Position { line: 260, column: 65, }, end: Position { line: 260, column: 75, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 260, column: 77, }, end: Position { line: 260, column: 83, }, }, }, ), ], span: Span { start: Position { line: 260, column: 76, }, end: Position { line: 260, column: 84, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 260, column: 86, }, end: Position { line: 260, column: 95, }, }, }, ), ], span: Span { start: Position { line: 260, column: 85, }, end: Position { line: 260, column: 96, }, }, }, ), ], span: Span { start: Position { line: 260, column: 63, }, end: Position { line: 260, column: 98, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 261, column: 6, }, end: Position { line: 261, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 261, column: 31, }, end: Position { line: 261, column: 39, }, }, }, ), ], span: Span { start: Position { line: 261, column: 30, }, end: Position { line: 261, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 261, column: 42, }, end: Position { line: 261, column: 48, }, }, }, ), ], span: Span { start: Position { line: 261, column: 41, }, end: Position { line: 261, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "backupPath", span: Span { start: Position { line: 261, column: 51, }, end: Position { line: 261, column: 61, }, }, }, ), ], span: Span { start: Position { line: 261, column: 50, }, end: Position { line: 261, column: 62, }, }, }, ), ], span: Span { start: Position { line: 261, column: 28, }, end: Position { line: 261, column: 64, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 261, column: 68, }, end: Position { line: 261, column: 76, }, }, }, ), ], span: Span { start: Position { line: 261, column: 67, }, end: Position { line: 261, column: 77, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 261, column: 79, }, end: Position { line: 261, column: 85, }, }, }, ), ], span: Span { start: Position { line: 261, column: 78, }, end: Position { line: 261, column: 86, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 261, column: 88, }, end: Position { line: 261, column: 94, }, }, }, ), ], span: Span { start: Position { line: 261, column: 87, }, end: Position { line: 261, column: 95, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 261, column: 97, }, end: Position { line: 261, column: 101, }, }, }, ), ], span: Span { start: Position { line: 261, column: 96, }, end: Position { line: 261, column: 102, }, }, }, ), ], span: Span { start: Position { line: 261, column: 65, }, end: Position { line: 261, column: 104, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRemovedOptionModule", span: Span { start: Position { line: 262, column: 6, }, end: Position { line: 262, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 262, column: 31, }, end: Position { line: 262, column: 39, }, }, }, ), ], span: Span { start: Position { line: 262, column: 30, }, end: Position { line: 262, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 262, column: 42, }, end: Position { line: 262, column: 48, }, }, }, ), ], span: Span { start: Position { line: 262, column: 41, }, end: Position { line: 262, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "satelliteDir", span: Span { start: Position { line: 262, column: 51, }, end: Position { line: 262, column: 63, }, }, }, ), ], span: Span { start: Position { line: 262, column: 50, }, end: Position { line: 262, column: 64, }, }, }, ), ], span: Span { start: Position { line: 262, column: 28, }, end: Position { line: 262, column: 66, }, }, }, ), String( String_ { parts: [], span: Span { start: Position { line: 262, column: 67, }, end: Position { line: 262, column: 69, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 259, column: 13, }, end: Position { line: 263, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 265, column: 3, }, end: Position { line: 265, column: 10, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 266, column: 5, }, end: Position { line: 266, column: 13, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 266, column: 14, }, end: Position { line: 266, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 267, column: 7, }, end: Position { line: 267, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 267, column: 16, }, end: Position { line: 267, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 268, column: 9, }, end: Position { line: 268, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 268, column: 16, }, end: Position { line: 268, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 268, column: 22, }, end: Position { line: 268, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 269, column: 9, }, end: Position { line: 269, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 269, column: 19, }, end: Position { line: 269, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 270, column: 9, }, end: Position { line: 270, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 270, column: 23, }, end: Position { line: 270, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 270, column: 27, }, end: Position { line: 270, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Enable the gitlab service.\n", span: Span { start: Position { line: 271, column: 1, }, end: Position { line: 272, column: 9, }, }, }, ), ], span: Span { start: Position { line: 270, column: 33, }, end: Position { line: 272, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 267, column: 25, }, end: Position { line: 273, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 275, column: 7, }, end: Position { line: 275, column: 15, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 275, column: 16, }, end: Position { line: 275, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 275, column: 25, }, end: Position { line: 275, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 276, column: 9, }, end: Position { line: 276, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 276, column: 16, }, end: Position { line: 276, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 276, column: 22, }, end: Position { line: 276, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 277, column: 9, }, end: Position { line: 277, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 277, column: 19, }, end: Position { line: 277, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 277, column: 24, }, end: Position { line: 277, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 278, column: 9, }, end: Position { line: 278, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 278, column: 23, }, end: Position { line: 278, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab", span: Span { start: Position { line: 278, column: 42, }, end: Position { line: 278, column: 53, }, }, }, ), ], span: Span { start: Position { line: 278, column: 41, }, end: Position { line: 278, column: 54, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 279, column: 9, }, end: Position { line: 279, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 279, column: 23, }, end: Position { line: 279, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 279, column: 27, }, end: Position { line: 279, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Reference to the gitlab package", span: Span { start: Position { line: 279, column: 34, }, end: Position { line: 279, column: 65, }, }, }, ), ], span: Span { start: Position { line: 279, column: 33, }, end: Position { line: 279, column: 66, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 280, column: 9, }, end: Position { line: 280, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 280, column: 19, }, end: Position { line: 280, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-ee", span: Span { start: Position { line: 280, column: 38, }, end: Position { line: 280, column: 52, }, }, }, ), ], span: Span { start: Position { line: 280, column: 37, }, end: Position { line: 280, column: 53, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 275, column: 34, }, end: Position { line: 281, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 283, column: 7, }, end: Position { line: 283, column: 15, }, }, }, ), Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 283, column: 16, }, end: Position { line: 283, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 283, column: 31, }, end: Position { line: 283, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 284, column: 9, }, end: Position { line: 284, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 284, column: 16, }, end: Position { line: 284, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 284, column: 22, }, end: Position { line: 284, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 285, column: 9, }, end: Position { line: 285, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 285, column: 19, }, end: Position { line: 285, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 285, column: 24, }, end: Position { line: 285, column: 36, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 286, column: 9, }, end: Position { line: 286, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 286, column: 23, }, end: Position { line: 286, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-shell", span: Span { start: Position { line: 286, column: 42, }, end: Position { line: 286, column: 59, }, }, }, ), ], span: Span { start: Position { line: 286, column: 41, }, end: Position { line: 286, column: 60, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 287, column: 9, }, end: Position { line: 287, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 287, column: 23, }, end: Position { line: 287, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 287, column: 27, }, end: Position { line: 287, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Reference to the gitlab-shell package", span: Span { start: Position { line: 287, column: 34, }, end: Position { line: 287, column: 71, }, }, }, ), ], span: Span { start: Position { line: 287, column: 33, }, end: Position { line: 287, column: 72, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 283, column: 40, }, end: Position { line: 288, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 290, column: 7, }, end: Position { line: 290, column: 15, }, }, }, ), Raw( PartRaw { content: "gitlab-workhorse", span: Span { start: Position { line: 290, column: 16, }, end: Position { line: 290, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 290, column: 35, }, end: Position { line: 290, column: 43, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 291, column: 9, }, end: Position { line: 291, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 291, column: 16, }, end: Position { line: 291, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 291, column: 22, }, end: Position { line: 291, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 292, column: 9, }, end: Position { line: 292, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 292, column: 19, }, end: Position { line: 292, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab-workhorse", span: Span { start: Position { line: 292, column: 24, }, end: Position { line: 292, column: 40, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 293, column: 9, }, end: Position { line: 293, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 293, column: 23, }, end: Position { line: 293, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-workhorse", span: Span { start: Position { line: 293, column: 42, }, end: Position { line: 293, column: 63, }, }, }, ), ], span: Span { start: Position { line: 293, column: 41, }, end: Position { line: 293, column: 64, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 294, column: 9, }, end: Position { line: 294, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 294, column: 23, }, end: Position { line: 294, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 294, column: 27, }, end: Position { line: 294, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Reference to the gitlab-workhorse package", span: Span { start: Position { line: 294, column: 34, }, end: Position { line: 294, column: 75, }, }, }, ), ], span: Span { start: Position { line: 294, column: 33, }, end: Position { line: 294, column: 76, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 290, column: 44, }, end: Position { line: 295, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 297, column: 7, }, end: Position { line: 297, column: 15, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 297, column: 16, }, end: Position { line: 297, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 297, column: 25, }, end: Position { line: 297, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 298, column: 9, }, end: Position { line: 298, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 298, column: 16, }, end: Position { line: 298, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 298, column: 22, }, end: Position { line: 298, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 299, column: 9, }, end: Position { line: 299, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 299, column: 19, }, end: Position { line: 299, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 299, column: 24, }, end: Position { line: 299, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 300, column: 9, }, end: Position { line: 300, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 300, column: 23, }, end: Position { line: 300, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitaly", span: Span { start: Position { line: 300, column: 42, }, end: Position { line: 300, column: 53, }, }, }, ), ], span: Span { start: Position { line: 300, column: 41, }, end: Position { line: 300, column: 54, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 301, column: 9, }, end: Position { line: 301, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 301, column: 23, }, end: Position { line: 301, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 301, column: 27, }, end: Position { line: 301, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Reference to the gitaly package", span: Span { start: Position { line: 301, column: 34, }, end: Position { line: 301, column: 65, }, }, }, ), ], span: Span { start: Position { line: 301, column: 33, }, end: Position { line: 301, column: 66, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 297, column: 34, }, end: Position { line: 302, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 304, column: 7, }, end: Position { line: 304, column: 15, }, }, }, ), Raw( PartRaw { content: "pages", span: Span { start: Position { line: 304, column: 16, }, end: Position { line: 304, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 304, column: 24, }, end: Position { line: 304, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 305, column: 9, }, end: Position { line: 305, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 305, column: 16, }, end: Position { line: 305, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 305, column: 22, }, end: Position { line: 305, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 306, column: 9, }, end: Position { line: 306, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 306, column: 19, }, end: Position { line: 306, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab-pages", span: Span { start: Position { line: 306, column: 24, }, end: Position { line: 306, column: 36, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 307, column: 9, }, end: Position { line: 307, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 307, column: 23, }, end: Position { line: 307, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-pages", span: Span { start: Position { line: 307, column: 42, }, end: Position { line: 307, column: 59, }, }, }, ), ], span: Span { start: Position { line: 307, column: 41, }, end: Position { line: 307, column: 60, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 308, column: 9, }, end: Position { line: 308, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 308, column: 23, }, end: Position { line: 308, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 308, column: 27, }, end: Position { line: 308, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Reference to the gitlab-pages package", span: Span { start: Position { line: 308, column: 34, }, end: Position { line: 308, column: 71, }, }, }, ), ], span: Span { start: Position { line: 308, column: 33, }, end: Position { line: 308, column: 72, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 304, column: 33, }, end: Position { line: 309, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 311, column: 7, }, end: Position { line: 311, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 311, column: 19, }, end: Position { line: 311, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 312, column: 9, }, end: Position { line: 312, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 312, column: 16, }, end: Position { line: 312, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 312, column: 22, }, end: Position { line: 312, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 313, column: 9, }, end: Position { line: 313, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/gitlab/state", span: Span { start: Position { line: 313, column: 20, }, end: Position { line: 313, column: 37, }, }, }, ), ], span: Span { start: Position { line: 313, column: 19, }, end: Position { line: 313, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 314, column: 9, }, end: Position { line: 314, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 314, column: 23, }, end: Position { line: 314, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 314, column: 27, }, end: Position { line: 314, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "GitLab state directory. Configuration, repositories and\nlogs, among other things, are stored here.\n\nThe directory will be created automatically if it doesn't\nexist already. Its parent directories must be owned by\neither `root` or the user set in\n{option}`services.gitlab.user`.\n", span: Span { start: Position { line: 315, column: 1, }, end: Position { line: 322, column: 9, }, }, }, ), ], span: Span { start: Position { line: 314, column: 33, }, end: Position { line: 322, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 311, column: 28, }, end: Position { line: 323, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraEnv", span: Span { start: Position { line: 325, column: 7, }, end: Position { line: 325, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 325, column: 18, }, end: Position { line: 325, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 326, column: 9, }, end: Position { line: 326, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 326, column: 16, }, end: Position { line: 326, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsOf", span: Span { start: Position { line: 326, column: 22, }, end: Position { line: 326, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 326, column: 30, }, end: Position { line: 326, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 326, column: 36, }, end: Position { line: 326, column: 39, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 327, column: 9, }, end: Position { line: 327, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 327, column: 19, }, end: Position { line: 327, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 328, column: 9, }, end: Position { line: 328, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 328, column: 23, }, end: Position { line: 328, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 328, column: 27, }, end: Position { line: 328, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional environment variables for the GitLab environment.\n", span: Span { start: Position { line: 329, column: 1, }, end: Position { line: 330, column: 9, }, }, }, ), ], span: Span { start: Position { line: 328, column: 33, }, end: Position { line: 330, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 325, column: 27, }, end: Position { line: 331, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 333, column: 7, }, end: Position { line: 333, column: 13, }, }, }, ), Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 333, column: 14, }, end: Position { line: 333, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 333, column: 24, }, end: Position { line: 333, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 334, column: 9, }, end: Position { line: 334, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 334, column: 21, }, end: Position { line: 334, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "either", span: Span { start: Position { line: 334, column: 28, }, end: Position { line: 334, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 334, column: 35, }, end: Position { line: 334, column: 38, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 334, column: 40, }, end: Position { line: 334, column: 46, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 334, column: 47, }, end: Position { line: 334, column: 50, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 334, column: 16, }, end: Position { line: 334, column: 51, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 335, column: 9, }, end: Position { line: 335, column: 16, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 335, column: 19, }, end: Position { line: 335, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 336, column: 9, }, end: Position { line: 336, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "03:00", span: Span { start: Position { line: 336, column: 20, }, end: Position { line: 336, column: 25, }, }, }, ), ], span: Span { start: Position { line: 336, column: 19, }, end: Position { line: 336, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 337, column: 9, }, end: Position { line: 337, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 337, column: 23, }, end: Position { line: 337, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 337, column: 27, }, end: Position { line: 337, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The time(s) to run automatic backup of GitLab\nstate. Specified in systemd's time format; see\n{manpage}`systemd.time(7)`.\n", span: Span { start: Position { line: 338, column: 1, }, end: Position { line: 341, column: 9, }, }, }, ), ], span: Span { start: Position { line: 337, column: 33, }, end: Position { line: 341, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 333, column: 33, }, end: Position { line: 342, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 344, column: 7, }, end: Position { line: 344, column: 13, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 344, column: 14, }, end: Position { line: 344, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 344, column: 21, }, end: Position { line: 344, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 345, column: 9, }, end: Position { line: 345, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 345, column: 16, }, end: Position { line: 345, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 345, column: 22, }, end: Position { line: 345, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 346, column: 9, }, end: Position { line: 346, column: 16, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 346, column: 19, }, end: Position { line: 346, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 346, column: 23, }, end: Position { line: 346, column: 32, }, }, }, ), ], default: None, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/backup", span: Span { start: Position { line: 346, column: 36, }, end: Position { line: 346, column: 43, }, }, }, ), ], span: Span { start: Position { line: 346, column: 35, }, end: Position { line: 346, column: 44, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 347, column: 9, }, end: Position { line: 347, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 347, column: 23, }, end: Position { line: 347, column: 40, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "config.", span: Span { start: Position { line: 347, column: 43, }, end: Position { line: 347, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "opt", span: Span { start: Position { line: 347, column: 52, }, end: Position { line: 347, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 347, column: 56, }, end: Position { line: 347, column: 65, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " + \"/backup\"", span: Span { start: Position { line: 347, column: 43, }, end: Position { line: 347, column: 78, }, }, }, ), ], span: Span { start: Position { line: 347, column: 41, }, end: Position { line: 347, column: 80, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 348, column: 9, }, end: Position { line: 348, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 348, column: 23, }, end: Position { line: 348, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 348, column: 27, }, end: Position { line: 348, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab path for backups.", span: Span { start: Position { line: 348, column: 34, }, end: Position { line: 348, column: 58, }, }, }, ), ], span: Span { start: Position { line: 348, column: 33, }, end: Position { line: 348, column: 59, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 344, column: 30, }, end: Position { line: 349, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 351, column: 7, }, end: Position { line: 351, column: 13, }, }, }, ), Raw( PartRaw { content: "keepTime", span: Span { start: Position { line: 351, column: 14, }, end: Position { line: 351, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 351, column: 25, }, end: Position { line: 351, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 352, column: 9, }, end: Position { line: 352, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 352, column: 16, }, end: Position { line: 352, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 352, column: 22, }, end: Position { line: 352, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 353, column: 9, }, end: Position { line: 353, column: 16, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 353, column: 19, }, end: Position { line: 353, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 354, column: 9, }, end: Position { line: 354, column: 16, }, }, }, ), ], to: Integer( Integer { value: "48", span: Span { start: Position { line: 354, column: 19, }, end: Position { line: 354, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 355, column: 9, }, end: Position { line: 355, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 355, column: 20, }, end: Position { line: 355, column: 21, }, }, }, ), operator: Multiplication, right: Integer( Integer { value: "60", span: Span { start: Position { line: 355, column: 24, }, end: Position { line: 355, column: 26, }, }, }, ), }, ), operator: Multiplication, right: Integer( Integer { value: "60", span: Span { start: Position { line: 355, column: 29, }, end: Position { line: 355, column: 31, }, }, }, ), }, ), span: Span { start: Position { line: 355, column: 17, }, end: Position { line: 355, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 356, column: 9, }, end: Position { line: 356, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 356, column: 23, }, end: Position { line: 356, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 356, column: 27, }, end: Position { line: 356, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "How long to keep the backups around, in\nhours. `0` means “keep forever”.\n", span: Span { start: Position { line: 357, column: 1, }, end: Position { line: 359, column: 9, }, }, }, ), ], span: Span { start: Position { line: 356, column: 33, }, end: Position { line: 359, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 351, column: 34, }, end: Position { line: 360, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 362, column: 7, }, end: Position { line: 362, column: 13, }, }, }, ), Raw( PartRaw { content: "skip", span: Span { start: Position { line: 362, column: 14, }, end: Position { line: 362, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 362, column: 21, }, end: Position { line: 362, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 363, column: 9, }, end: Position { line: 363, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 363, column: 21, }, end: Position { line: 363, column: 26, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "value", span: Span { start: Position { line: 364, column: 15, }, end: Position { line: 364, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "enum", span: Span { start: Position { line: 364, column: 23, }, end: Position { line: 364, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "db", span: Span { start: Position { line: 365, column: 18, }, end: Position { line: 365, column: 20, }, }, }, ), ], span: Span { start: Position { line: 365, column: 17, }, end: Position { line: 365, column: 21, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "uploads", span: Span { start: Position { line: 366, column: 18, }, end: Position { line: 366, column: 25, }, }, }, ), ], span: Span { start: Position { line: 366, column: 17, }, end: Position { line: 366, column: 26, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "builds", span: Span { start: Position { line: 367, column: 18, }, end: Position { line: 367, column: 24, }, }, }, ), ], span: Span { start: Position { line: 367, column: 17, }, end: Position { line: 367, column: 25, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "artifacts", span: Span { start: Position { line: 368, column: 18, }, end: Position { line: 368, column: 27, }, }, }, ), ], span: Span { start: Position { line: 368, column: 17, }, end: Position { line: 368, column: 28, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "lfs", span: Span { start: Position { line: 369, column: 18, }, end: Position { line: 369, column: 21, }, }, }, ), ], span: Span { start: Position { line: 369, column: 17, }, end: Position { line: 369, column: 22, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 370, column: 18, }, end: Position { line: 370, column: 26, }, }, }, ), ], span: Span { start: Position { line: 370, column: 17, }, end: Position { line: 370, column: 27, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "pages", span: Span { start: Position { line: 371, column: 18, }, end: Position { line: 371, column: 23, }, }, }, ), ], span: Span { start: Position { line: 371, column: 17, }, end: Position { line: 371, column: 24, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "repositories", span: Span { start: Position { line: 372, column: 18, }, end: Position { line: 372, column: 30, }, }, }, ), ], span: Span { start: Position { line: 372, column: 17, }, end: Position { line: 372, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "tar", span: Span { start: Position { line: 373, column: 18, }, end: Position { line: 373, column: 21, }, }, }, ), ], span: Span { start: Position { line: 373, column: 17, }, end: Position { line: 373, column: 22, }, }, }, ), ], span: Span { start: Position { line: 364, column: 28, }, end: Position { line: 374, column: 16, }, }, }, ), ], }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "either", span: Span { start: Position { line: 376, column: 13, }, end: Position { line: 376, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 376, column: 20, }, end: Position { line: 376, column: 25, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 376, column: 27, }, end: Position { line: 376, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 376, column: 34, }, end: Position { line: 376, column: 39, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 364, column: 11, }, end: Position { line: 376, column: 40, }, }, }, ), span: Span { start: Position { line: 363, column: 16, }, end: Position { line: 376, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 377, column: 9, }, end: Position { line: 377, column: 16, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 377, column: 19, }, end: Position { line: 377, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 378, column: 9, }, end: Position { line: 378, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "artifacts", span: Span { start: Position { line: 378, column: 22, }, end: Position { line: 378, column: 31, }, }, }, ), ], span: Span { start: Position { line: 378, column: 21, }, end: Position { line: 378, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "lfs", span: Span { start: Position { line: 378, column: 34, }, end: Position { line: 378, column: 37, }, }, }, ), ], span: Span { start: Position { line: 378, column: 33, }, end: Position { line: 378, column: 38, }, }, }, ), ], span: Span { start: Position { line: 378, column: 19, }, end: Position { line: 378, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 379, column: 9, }, end: Position { line: 379, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isString", span: Span { start: Position { line: 379, column: 23, }, end: Position { line: 379, column: 31, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 379, column: 32, }, end: Position { line: 379, column: 33, }, }, }, ), ], }, ), then: Identifier( Identifier { id: "x", span: Span { start: Position { line: 379, column: 39, }, end: Position { line: 379, column: 40, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 379, column: 46, }, end: Position { line: 379, column: 62, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 379, column: 64, }, end: Position { line: 379, column: 65, }, }, }, ), ], span: Span { start: Position { line: 379, column: 63, }, end: Position { line: 379, column: 66, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 379, column: 67, }, end: Position { line: 379, column: 68, }, }, }, ), ], }, ), span: Span { start: Position { line: 379, column: 20, }, end: Position { line: 379, column: 68, }, }, }, ), span: Span { start: Position { line: 379, column: 17, }, end: Position { line: 379, column: 68, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 380, column: 9, }, end: Position { line: 380, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 380, column: 23, }, end: Position { line: 380, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 380, column: 27, }, end: Position { line: 380, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Directories to exclude from the backup. The example excludes\nCI artifacts and LFS objects from the backups. The\n`tar` option skips the creation of a tar\nfile.\n\nRefer to \nfor more information.\n", span: Span { start: Position { line: 381, column: 1, }, end: Position { line: 388, column: 9, }, }, }, ), ], span: Span { start: Position { line: 380, column: 33, }, end: Position { line: 388, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 362, column: 30, }, end: Position { line: 389, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 391, column: 7, }, end: Position { line: 391, column: 13, }, }, }, ), Raw( PartRaw { content: "uploadOptions", span: Span { start: Position { line: 391, column: 14, }, end: Position { line: 391, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 391, column: 30, }, end: Position { line: 391, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 392, column: 9, }, end: Position { line: 392, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 392, column: 16, }, end: Position { line: 392, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrs", span: Span { start: Position { line: 392, column: 22, }, end: Position { line: 392, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 393, column: 9, }, end: Position { line: 393, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 393, column: 19, }, end: Position { line: 393, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 394, column: 9, }, end: Position { line: 394, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 394, column: 19, }, end: Position { line: 394, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n # Fog storage connection settings, see http://fog.io/storage/\n connection = {\n provider = \"AWS\";\n region = \"eu-north-1\";\n aws_access_key_id = \"AKIAXXXXXXXXXXXXXXXX\";\n aws_secret_access_key = { _secret = config.deployment.keys.aws_access_key.path; };\n };\n\n # The remote 'directory' to store your backups in.\n # For S3, this would be the bucket name.\n remote_directory = \"my-gitlab-backups\";\n\n # Use multipart uploads when file size reaches 100MB, see\n # http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html\n multipart_chunk_size = 104857600;\n\n # Turns on AWS Server-Side Encryption with Amazon S3-Managed Keys for backups, this is optional\n encryption = \"AES256\";\n\n # Specifies Amazon S3 storage class to use for backups, this is optional\n storage_class = \"STANDARD\";\n};\n", span: Span { start: Position { line: 395, column: 1, }, end: Position { line: 418, column: 9, }, }, }, ), ], span: Span { start: Position { line: 394, column: 37, }, end: Position { line: 418, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 419, column: 9, }, end: Position { line: 419, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 419, column: 23, }, end: Position { line: 419, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 419, column: 27, }, end: Position { line: 419, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "GitLab automatic upload specification. Tells GitLab to\nupload the backup to a remote location when done.\n\nAttributes specified here are added under\n`production -> backup -> upload` in\n{file}`config/gitlab.yml`.\n", span: Span { start: Position { line: 420, column: 1, }, end: Position { line: 426, column: 9, }, }, }, ), ], span: Span { start: Position { line: 419, column: 33, }, end: Position { line: 426, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 391, column: 39, }, end: Position { line: 427, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 429, column: 7, }, end: Position { line: 429, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 429, column: 22, }, end: Position { line: 429, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 430, column: 9, }, end: Position { line: 430, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 430, column: 16, }, end: Position { line: 430, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 430, column: 22, }, end: Position { line: 430, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 431, column: 9, }, end: Position { line: 431, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 431, column: 19, }, end: Position { line: 431, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 432, column: 9, }, end: Position { line: 432, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 432, column: 23, }, end: Position { line: 432, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 432, column: 27, }, end: Position { line: 432, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "GitLab database hostname. An empty string means\n“use local unix socket connection”.\n", span: Span { start: Position { line: 433, column: 1, }, end: Position { line: 435, column: 9, }, }, }, ), ], span: Span { start: Position { line: 432, column: 33, }, end: Position { line: 435, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 429, column: 31, }, end: Position { line: 436, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databasePasswordFile", span: Span { start: Position { line: 438, column: 7, }, end: Position { line: 438, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 438, column: 30, }, end: Position { line: 438, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 439, column: 9, }, end: Position { line: 439, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 439, column: 21, }, end: Position { line: 439, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 439, column: 28, }, end: Position { line: 439, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 439, column: 35, }, end: Position { line: 439, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 439, column: 16, }, end: Position { line: 439, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 440, column: 9, }, end: Position { line: 440, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 440, column: 19, }, end: Position { line: 440, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 441, column: 9, }, end: Position { line: 441, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 441, column: 23, }, end: Position { line: 441, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 441, column: 27, }, end: Position { line: 441, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "File containing the GitLab database user password.\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 442, column: 1, }, end: Position { line: 446, column: 9, }, }, }, ), ], span: Span { start: Position { line: 441, column: 33, }, end: Position { line: 446, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 438, column: 39, }, end: Position { line: 447, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseCreateLocally", span: Span { start: Position { line: 449, column: 7, }, end: Position { line: 449, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 449, column: 31, }, end: Position { line: 449, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 450, column: 9, }, end: Position { line: 450, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 450, column: 16, }, end: Position { line: 450, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 450, column: 22, }, end: Position { line: 450, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 451, column: 9, }, end: Position { line: 451, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 451, column: 19, }, end: Position { line: 451, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 452, column: 9, }, end: Position { line: 452, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 452, column: 23, }, end: Position { line: 452, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 452, column: 27, }, end: Position { line: 452, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether a database should be automatically created on the\nlocal host. Set this to `false` if you plan\non provisioning a local database yourself. This has no effect\nif {option}`services.gitlab.databaseHost` is customized.\n", span: Span { start: Position { line: 453, column: 1, }, end: Position { line: 457, column: 9, }, }, }, ), ], span: Span { start: Position { line: 452, column: 33, }, end: Position { line: 457, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 449, column: 40, }, end: Position { line: 458, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 460, column: 7, }, end: Position { line: 460, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 460, column: 22, }, end: Position { line: 460, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 461, column: 9, }, end: Position { line: 461, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 461, column: 16, }, end: Position { line: 461, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 461, column: 22, }, end: Position { line: 461, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 462, column: 9, }, end: Position { line: 462, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 462, column: 20, }, end: Position { line: 462, column: 26, }, }, }, ), ], span: Span { start: Position { line: 462, column: 19, }, end: Position { line: 462, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 463, column: 9, }, end: Position { line: 463, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 463, column: 23, }, end: Position { line: 463, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 463, column: 27, }, end: Position { line: 463, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab database name.", span: Span { start: Position { line: 463, column: 34, }, end: Position { line: 463, column: 55, }, }, }, ), ], span: Span { start: Position { line: 463, column: 33, }, end: Position { line: 463, column: 56, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 460, column: 31, }, end: Position { line: 464, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 466, column: 7, }, end: Position { line: 466, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 466, column: 26, }, end: Position { line: 466, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 467, column: 9, }, end: Position { line: 467, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 467, column: 16, }, end: Position { line: 467, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 467, column: 22, }, end: Position { line: 467, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 468, column: 9, }, end: Position { line: 468, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 468, column: 20, }, end: Position { line: 468, column: 26, }, }, }, ), ], span: Span { start: Position { line: 468, column: 19, }, end: Position { line: 468, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 469, column: 9, }, end: Position { line: 469, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 469, column: 23, }, end: Position { line: 469, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 469, column: 27, }, end: Position { line: 469, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab database user.", span: Span { start: Position { line: 469, column: 34, }, end: Position { line: 469, column: 55, }, }, }, ), ], span: Span { start: Position { line: 469, column: 33, }, end: Position { line: 469, column: 56, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 466, column: 35, }, end: Position { line: 470, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "databasePool", span: Span { start: Position { line: 472, column: 7, }, end: Position { line: 472, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 472, column: 22, }, end: Position { line: 472, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 473, column: 9, }, end: Position { line: 473, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 473, column: 16, }, end: Position { line: 473, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 473, column: 22, }, end: Position { line: 473, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 474, column: 9, }, end: Position { line: 474, column: 16, }, }, }, ), ], to: Integer( Integer { value: "5", span: Span { start: Position { line: 474, column: 19, }, end: Position { line: 474, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 475, column: 9, }, end: Position { line: 475, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 475, column: 23, }, end: Position { line: 475, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 475, column: 27, }, end: Position { line: 475, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Database connection pool size.", span: Span { start: Position { line: 475, column: 34, }, end: Position { line: 475, column: 64, }, }, }, ), ], span: Span { start: Position { line: 475, column: 33, }, end: Position { line: 475, column: 65, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 472, column: 31, }, end: Position { line: 476, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraDatabaseConfig", span: Span { start: Position { line: 478, column: 7, }, end: Position { line: 478, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 478, column: 29, }, end: Position { line: 478, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 479, column: 9, }, end: Position { line: 479, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 479, column: 16, }, end: Position { line: 479, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrs", span: Span { start: Position { line: 479, column: 22, }, end: Position { line: 479, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 480, column: 9, }, end: Position { line: 480, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 480, column: 19, }, end: Position { line: 480, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 481, column: 9, }, end: Position { line: 481, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 481, column: 23, }, end: Position { line: 481, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 481, column: 27, }, end: Position { line: 481, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Extra configuration in config/database.yml.", span: Span { start: Position { line: 481, column: 34, }, end: Position { line: 481, column: 77, }, }, }, ), ], span: Span { start: Position { line: 481, column: 33, }, end: Position { line: 481, column: 78, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 478, column: 38, }, end: Position { line: 482, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "redisUrl", span: Span { start: Position { line: 484, column: 7, }, end: Position { line: 484, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 484, column: 18, }, end: Position { line: 484, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 485, column: 9, }, end: Position { line: 485, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 485, column: 16, }, end: Position { line: 485, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 485, column: 22, }, end: Position { line: 485, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 486, column: 9, }, end: Position { line: 486, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "unix:/run/gitlab/redis.sock", span: Span { start: Position { line: 486, column: 20, }, end: Position { line: 486, column: 47, }, }, }, ), ], span: Span { start: Position { line: 486, column: 19, }, end: Position { line: 486, column: 48, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 487, column: 9, }, end: Position { line: 487, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "redis://localhost:6379/", span: Span { start: Position { line: 487, column: 20, }, end: Position { line: 487, column: 43, }, }, }, ), ], span: Span { start: Position { line: 487, column: 19, }, end: Position { line: 487, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 488, column: 9, }, end: Position { line: 488, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 488, column: 23, }, end: Position { line: 488, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 488, column: 27, }, end: Position { line: 488, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Redis URL for all GitLab services.", span: Span { start: Position { line: 488, column: 34, }, end: Position { line: 488, column: 68, }, }, }, ), ], span: Span { start: Position { line: 488, column: 33, }, end: Position { line: 488, column: 69, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 484, column: 27, }, end: Position { line: 489, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraGitlabRb", span: Span { start: Position { line: 491, column: 7, }, end: Position { line: 491, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 491, column: 23, }, end: Position { line: 491, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 492, column: 9, }, end: Position { line: 492, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 492, column: 16, }, end: Position { line: 492, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 492, column: 22, }, end: Position { line: 492, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 493, column: 9, }, end: Position { line: 493, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 493, column: 19, }, end: Position { line: 493, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 494, column: 9, }, end: Position { line: 494, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if Rails.env.production?\n Rails.application.config.action_mailer.delivery_method = :sendmail\n ActionMailer::Base.delivery_method = :sendmail\n ActionMailer::Base.sendmail_settings = {\n location: \"/run/wrappers/bin/sendmail\",\n arguments: \"-i -t\"\n }\nend\n", span: Span { start: Position { line: 495, column: 1, }, end: Position { line: 503, column: 9, }, }, }, ), ], span: Span { start: Position { line: 494, column: 19, }, end: Position { line: 503, column: 11, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 504, column: 9, }, end: Position { line: 504, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 504, column: 23, }, end: Position { line: 504, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 504, column: 27, }, end: Position { line: 504, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra configuration to be placed in config/extra-gitlab.rb. This can\nbe used to add configuration not otherwise exposed through this module's\noptions.\n", span: Span { start: Position { line: 505, column: 1, }, end: Position { line: 508, column: 9, }, }, }, ), ], span: Span { start: Position { line: 504, column: 33, }, end: Position { line: 508, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 491, column: 32, }, end: Position { line: 509, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 511, column: 7, }, end: Position { line: 511, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 511, column: 14, }, end: Position { line: 511, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 512, column: 9, }, end: Position { line: 512, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 512, column: 16, }, end: Position { line: 512, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 512, column: 22, }, end: Position { line: 512, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 513, column: 9, }, end: Position { line: 513, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 513, column: 19, }, end: Position { line: 513, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 513, column: 26, }, end: Position { line: 513, column: 36, }, }, }, ), Raw( PartRaw { content: "hostName", span: Span { start: Position { line: 513, column: 37, }, end: Position { line: 513, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 514, column: 9, }, end: Position { line: 514, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 514, column: 23, }, end: Position { line: 514, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "config.networking.hostName", span: Span { start: Position { line: 514, column: 42, }, end: Position { line: 514, column: 68, }, }, }, ), ], span: Span { start: Position { line: 514, column: 41, }, end: Position { line: 514, column: 69, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 515, column: 9, }, end: Position { line: 515, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 515, column: 23, }, end: Position { line: 515, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 515, column: 27, }, end: Position { line: 515, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab host name. Used e.g. for copy-paste URLs.", span: Span { start: Position { line: 515, column: 34, }, end: Position { line: 515, column: 82, }, }, }, ), ], span: Span { start: Position { line: 515, column: 33, }, end: Position { line: 515, column: 83, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 511, column: 23, }, end: Position { line: 516, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 518, column: 7, }, end: Position { line: 518, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 518, column: 14, }, end: Position { line: 518, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 519, column: 9, }, end: Position { line: 519, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 519, column: 16, }, end: Position { line: 519, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 519, column: 22, }, end: Position { line: 519, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 520, column: 9, }, end: Position { line: 520, column: 16, }, }, }, ), ], to: Integer( Integer { value: "8080", span: Span { start: Position { line: 520, column: 19, }, end: Position { line: 520, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 521, column: 9, }, end: Position { line: 521, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 521, column: 23, }, end: Position { line: 521, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 521, column: 27, }, end: Position { line: 521, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "GitLab server port for copy-paste URLs, e.g. 80 or 443 if you're\nservice over https.\n", span: Span { start: Position { line: 522, column: 1, }, end: Position { line: 524, column: 9, }, }, }, ), ], span: Span { start: Position { line: 521, column: 33, }, end: Position { line: 524, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 518, column: 23, }, end: Position { line: 525, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "https", span: Span { start: Position { line: 527, column: 7, }, end: Position { line: 527, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 527, column: 15, }, end: Position { line: 527, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 528, column: 9, }, end: Position { line: 528, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 528, column: 16, }, end: Position { line: 528, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 528, column: 22, }, end: Position { line: 528, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 529, column: 9, }, end: Position { line: 529, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 529, column: 19, }, end: Position { line: 529, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 530, column: 9, }, end: Position { line: 530, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 530, column: 23, }, end: Position { line: 530, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 530, column: 27, }, end: Position { line: 530, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether gitlab prints URLs with https as scheme.", span: Span { start: Position { line: 530, column: 34, }, end: Position { line: 530, column: 82, }, }, }, ), ], span: Span { start: Position { line: 530, column: 33, }, end: Position { line: 530, column: 83, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 527, column: 24, }, end: Position { line: 531, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 533, column: 7, }, end: Position { line: 533, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 533, column: 14, }, end: Position { line: 533, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 534, column: 9, }, end: Position { line: 534, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 534, column: 16, }, end: Position { line: 534, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 534, column: 22, }, end: Position { line: 534, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 535, column: 9, }, end: Position { line: 535, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 535, column: 20, }, end: Position { line: 535, column: 26, }, }, }, ), ], span: Span { start: Position { line: 535, column: 19, }, end: Position { line: 535, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 536, column: 9, }, end: Position { line: 536, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 536, column: 23, }, end: Position { line: 536, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 536, column: 27, }, end: Position { line: 536, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "User to run gitlab and all related services.", span: Span { start: Position { line: 536, column: 34, }, end: Position { line: 536, column: 78, }, }, }, ), ], span: Span { start: Position { line: 536, column: 33, }, end: Position { line: 536, column: 79, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 533, column: 23, }, end: Position { line: 537, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 539, column: 7, }, end: Position { line: 539, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 539, column: 15, }, end: Position { line: 539, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 540, column: 9, }, end: Position { line: 540, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 540, column: 16, }, end: Position { line: 540, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 540, column: 22, }, end: Position { line: 540, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 541, column: 9, }, end: Position { line: 541, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 541, column: 20, }, end: Position { line: 541, column: 26, }, }, }, ), ], span: Span { start: Position { line: 541, column: 19, }, end: Position { line: 541, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 542, column: 9, }, end: Position { line: 542, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 542, column: 23, }, end: Position { line: 542, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 542, column: 27, }, end: Position { line: 542, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Group to run gitlab and all related services.", span: Span { start: Position { line: 542, column: 34, }, end: Position { line: 542, column: 79, }, }, }, ), ], span: Span { start: Position { line: 542, column: 33, }, end: Position { line: 542, column: 80, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 539, column: 24, }, end: Position { line: 543, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "initialRootEmail", span: Span { start: Position { line: 545, column: 7, }, end: Position { line: 545, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 545, column: 26, }, end: Position { line: 545, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 546, column: 9, }, end: Position { line: 546, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 546, column: 16, }, end: Position { line: 546, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 546, column: 22, }, end: Position { line: 546, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 547, column: 9, }, end: Position { line: 547, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "admin@local.host", span: Span { start: Position { line: 547, column: 20, }, end: Position { line: 547, column: 36, }, }, }, ), ], span: Span { start: Position { line: 547, column: 19, }, end: Position { line: 547, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 548, column: 9, }, end: Position { line: 548, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 548, column: 23, }, end: Position { line: 548, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 548, column: 27, }, end: Position { line: 548, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Initial email address of the root account if this is a new install.\n", span: Span { start: Position { line: 549, column: 1, }, end: Position { line: 550, column: 9, }, }, }, ), ], span: Span { start: Position { line: 548, column: 33, }, end: Position { line: 550, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 545, column: 35, }, end: Position { line: 551, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "initialRootPasswordFile", span: Span { start: Position { line: 553, column: 7, }, end: Position { line: 553, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 553, column: 33, }, end: Position { line: 553, column: 41, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 554, column: 9, }, end: Position { line: 554, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 554, column: 21, }, end: Position { line: 554, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 554, column: 28, }, end: Position { line: 554, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 554, column: 35, }, end: Position { line: 554, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 554, column: 16, }, end: Position { line: 554, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 555, column: 9, }, end: Position { line: 555, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 555, column: 19, }, end: Position { line: 555, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 556, column: 9, }, end: Position { line: 556, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 556, column: 23, }, end: Position { line: 556, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 556, column: 27, }, end: Position { line: 556, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "File containing the initial password of the root account if\nthis is a new install.\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 557, column: 1, }, end: Position { line: 562, column: 9, }, }, }, ), ], span: Span { start: Position { line: 556, column: 33, }, end: Position { line: 562, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 553, column: 42, }, end: Position { line: 563, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 565, column: 7, }, end: Position { line: 565, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 566, column: 9, }, end: Position { line: 566, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 566, column: 18, }, end: Position { line: 566, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 567, column: 11, }, end: Position { line: 567, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 567, column: 18, }, end: Position { line: 567, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 567, column: 24, }, end: Position { line: 567, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 568, column: 11, }, end: Position { line: 568, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 568, column: 21, }, end: Position { line: 568, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 569, column: 11, }, end: Position { line: 569, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 569, column: 25, }, end: Position { line: 569, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 569, column: 29, }, end: Position { line: 569, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Enable GitLab container registry.", span: Span { start: Position { line: 569, column: 36, }, end: Position { line: 569, column: 69, }, }, }, ), ], span: Span { start: Position { line: 569, column: 35, }, end: Position { line: 569, column: 70, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 566, column: 27, }, end: Position { line: 570, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 571, column: 9, }, end: Position { line: 571, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 571, column: 16, }, end: Position { line: 571, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 572, column: 11, }, end: Position { line: 572, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 572, column: 18, }, end: Position { line: 572, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 572, column: 24, }, end: Position { line: 572, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 573, column: 11, }, end: Position { line: 573, column: 18, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 573, column: 21, }, end: Position { line: 573, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 573, column: 28, }, end: Position { line: 573, column: 36, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 573, column: 37, }, end: Position { line: 573, column: 43, }, }, }, ), Raw( PartRaw { content: "host", span: Span { start: Position { line: 573, column: 44, }, end: Position { line: 573, column: 48, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 574, column: 11, }, end: Position { line: 574, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 574, column: 25, }, end: Position { line: 574, column: 42, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "config.services.gitlab.host", span: Span { start: Position { line: 574, column: 44, }, end: Position { line: 574, column: 71, }, }, }, ), ], span: Span { start: Position { line: 574, column: 43, }, end: Position { line: 574, column: 72, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 575, column: 11, }, end: Position { line: 575, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 575, column: 25, }, end: Position { line: 575, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 575, column: 29, }, end: Position { line: 575, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab container registry host name.", span: Span { start: Position { line: 575, column: 36, }, end: Position { line: 575, column: 72, }, }, }, ), ], span: Span { start: Position { line: 575, column: 35, }, end: Position { line: 575, column: 73, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 571, column: 25, }, end: Position { line: 576, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 577, column: 9, }, end: Position { line: 577, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 577, column: 16, }, end: Position { line: 577, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 578, column: 11, }, end: Position { line: 578, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 578, column: 18, }, end: Position { line: 578, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 578, column: 24, }, end: Position { line: 578, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 579, column: 11, }, end: Position { line: 579, column: 18, }, }, }, ), ], to: Integer( Integer { value: "4567", span: Span { start: Position { line: 579, column: 21, }, end: Position { line: 579, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 580, column: 11, }, end: Position { line: 580, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 580, column: 25, }, end: Position { line: 580, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 580, column: 29, }, end: Position { line: 580, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab container registry port.", span: Span { start: Position { line: 580, column: 36, }, end: Position { line: 580, column: 67, }, }, }, ), ], span: Span { start: Position { line: 580, column: 35, }, end: Position { line: 580, column: 68, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 577, column: 25, }, end: Position { line: 581, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 582, column: 9, }, end: Position { line: 582, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 582, column: 20, }, end: Position { line: 582, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 583, column: 11, }, end: Position { line: 583, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 583, column: 18, }, end: Position { line: 583, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 583, column: 24, }, end: Position { line: 583, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 584, column: 11, }, end: Position { line: 584, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 584, column: 25, }, end: Position { line: 584, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 584, column: 29, }, end: Position { line: 584, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Path to GitLab container registry certificate.", span: Span { start: Position { line: 584, column: 36, }, end: Position { line: 584, column: 82, }, }, }, ), ], span: Span { start: Position { line: 584, column: 35, }, end: Position { line: 584, column: 83, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 582, column: 29, }, end: Position { line: 585, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 586, column: 9, }, end: Position { line: 586, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 586, column: 19, }, end: Position { line: 586, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 587, column: 11, }, end: Position { line: 587, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 587, column: 18, }, end: Position { line: 587, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 587, column: 24, }, end: Position { line: 587, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 588, column: 11, }, end: Position { line: 588, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 588, column: 25, }, end: Position { line: 588, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 588, column: 29, }, end: Position { line: 588, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Path to GitLab container registry certificate-key.", span: Span { start: Position { line: 588, column: 36, }, end: Position { line: 588, column: 86, }, }, }, ), ], span: Span { start: Position { line: 588, column: 35, }, end: Position { line: 588, column: 87, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 586, column: 28, }, end: Position { line: 589, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultForProjects", span: Span { start: Position { line: 590, column: 9, }, end: Position { line: 590, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 590, column: 30, }, end: Position { line: 590, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 591, column: 11, }, end: Position { line: 591, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 591, column: 18, }, end: Position { line: 591, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 591, column: 24, }, end: Position { line: 591, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 592, column: 11, }, end: Position { line: 592, column: 18, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 592, column: 21, }, end: Position { line: 592, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 592, column: 25, }, end: Position { line: 592, column: 33, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 592, column: 34, }, end: Position { line: 592, column: 40, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 593, column: 11, }, end: Position { line: 593, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 593, column: 25, }, end: Position { line: 593, column: 42, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "config.", span: Span { start: Position { line: 593, column: 44, }, end: Position { line: 593, column: 73, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "opt", span: Span { start: Position { line: 593, column: 53, }, end: Position { line: 593, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 593, column: 57, }, end: Position { line: 593, column: 65, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 593, column: 66, }, end: Position { line: 593, column: 72, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 593, column: 43, }, end: Position { line: 593, column: 74, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 594, column: 11, }, end: Position { line: 594, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 594, column: 25, }, end: Position { line: 594, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 594, column: 29, }, end: Position { line: 594, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "If GitLab container registry should be enabled by default for projects.", span: Span { start: Position { line: 594, column: 36, }, end: Position { line: 594, column: 107, }, }, }, ), ], span: Span { start: Position { line: 594, column: 35, }, end: Position { line: 594, column: 108, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 590, column: 39, }, end: Position { line: 595, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 596, column: 9, }, end: Position { line: 596, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 596, column: 18, }, end: Position { line: 596, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 597, column: 11, }, end: Position { line: 597, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 597, column: 18, }, end: Position { line: 597, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 597, column: 24, }, end: Position { line: 597, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 598, column: 11, }, end: Position { line: 598, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab-issuer", span: Span { start: Position { line: 598, column: 22, }, end: Position { line: 598, column: 35, }, }, }, ), ], span: Span { start: Position { line: 598, column: 21, }, end: Position { line: 598, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 599, column: 11, }, end: Position { line: 599, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 599, column: 25, }, end: Position { line: 599, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 599, column: 29, }, end: Position { line: 599, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab container registry issuer.", span: Span { start: Position { line: 599, column: 36, }, end: Position { line: 599, column: 69, }, }, }, ), ], span: Span { start: Position { line: 599, column: 35, }, end: Position { line: 599, column: 70, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 596, column: 27, }, end: Position { line: 600, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceName", span: Span { start: Position { line: 601, column: 9, }, end: Position { line: 601, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 601, column: 23, }, end: Position { line: 601, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 602, column: 11, }, end: Position { line: 602, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 602, column: 18, }, end: Position { line: 602, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 602, column: 24, }, end: Position { line: 602, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 603, column: 11, }, end: Position { line: 603, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "container_registry", span: Span { start: Position { line: 603, column: 22, }, end: Position { line: 603, column: 40, }, }, }, ), ], span: Span { start: Position { line: 603, column: 21, }, end: Position { line: 603, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 604, column: 11, }, end: Position { line: 604, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 604, column: 25, }, end: Position { line: 604, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 604, column: 29, }, end: Position { line: 604, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab container registry service name.", span: Span { start: Position { line: 604, column: 36, }, end: Position { line: 604, column: 75, }, }, }, ), ], span: Span { start: Position { line: 604, column: 35, }, end: Position { line: 604, column: 76, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 601, column: 32, }, end: Position { line: 605, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "externalAddress", span: Span { start: Position { line: 606, column: 9, }, end: Position { line: 606, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 606, column: 27, }, end: Position { line: 606, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 607, column: 11, }, end: Position { line: 607, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 607, column: 18, }, end: Position { line: 607, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 607, column: 24, }, end: Position { line: 607, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 608, column: 11, }, end: Position { line: 608, column: 18, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 608, column: 21, }, end: Position { line: 608, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 609, column: 11, }, end: Position { line: 609, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 609, column: 25, }, end: Position { line: 609, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 609, column: 29, }, end: Position { line: 609, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "External address used to access registry from the internet", span: Span { start: Position { line: 609, column: 36, }, end: Position { line: 609, column: 94, }, }, }, ), ], span: Span { start: Position { line: 609, column: 35, }, end: Position { line: 609, column: 95, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 606, column: 36, }, end: Position { line: 610, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "externalPort", span: Span { start: Position { line: 611, column: 9, }, end: Position { line: 611, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 611, column: 24, }, end: Position { line: 611, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 612, column: 11, }, end: Position { line: 612, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 612, column: 18, }, end: Position { line: 612, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 612, column: 24, }, end: Position { line: 612, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 613, column: 11, }, end: Position { line: 613, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 613, column: 25, }, end: Position { line: 613, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 613, column: 29, }, end: Position { line: 613, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "External port used to access registry from the internet", span: Span { start: Position { line: 613, column: 36, }, end: Position { line: 613, column: 91, }, }, }, ), ], span: Span { start: Position { line: 613, column: 35, }, end: Position { line: 613, column: 92, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 611, column: 33, }, end: Position { line: 614, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 565, column: 18, }, end: Position { line: 615, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 617, column: 7, }, end: Position { line: 617, column: 11, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 618, column: 9, }, end: Position { line: 618, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 618, column: 18, }, end: Position { line: 618, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 619, column: 11, }, end: Position { line: 619, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 619, column: 18, }, end: Position { line: 619, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 619, column: 24, }, end: Position { line: 619, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 620, column: 11, }, end: Position { line: 620, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 620, column: 21, }, end: Position { line: 620, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 621, column: 11, }, end: Position { line: 621, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 621, column: 25, }, end: Position { line: 621, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 621, column: 29, }, end: Position { line: 621, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Enable gitlab mail delivery over SMTP.", span: Span { start: Position { line: 621, column: 36, }, end: Position { line: 621, column: 74, }, }, }, ), ], span: Span { start: Position { line: 621, column: 35, }, end: Position { line: 621, column: 75, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 618, column: 27, }, end: Position { line: 622, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "address", span: Span { start: Position { line: 624, column: 9, }, end: Position { line: 624, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 624, column: 19, }, end: Position { line: 624, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 625, column: 11, }, end: Position { line: 625, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 625, column: 18, }, end: Position { line: 625, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 625, column: 24, }, end: Position { line: 625, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 626, column: 11, }, end: Position { line: 626, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "localhost", span: Span { start: Position { line: 626, column: 22, }, end: Position { line: 626, column: 31, }, }, }, ), ], span: Span { start: Position { line: 626, column: 21, }, end: Position { line: 626, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 627, column: 11, }, end: Position { line: 627, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 627, column: 25, }, end: Position { line: 627, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 627, column: 29, }, end: Position { line: 627, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Address of the SMTP server for GitLab.", span: Span { start: Position { line: 627, column: 36, }, end: Position { line: 627, column: 74, }, }, }, ), ], span: Span { start: Position { line: 627, column: 35, }, end: Position { line: 627, column: 75, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 624, column: 28, }, end: Position { line: 628, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 630, column: 9, }, end: Position { line: 630, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 630, column: 16, }, end: Position { line: 630, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 631, column: 11, }, end: Position { line: 631, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 631, column: 18, }, end: Position { line: 631, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 631, column: 24, }, end: Position { line: 631, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 632, column: 11, }, end: Position { line: 632, column: 18, }, }, }, ), ], to: Integer( Integer { value: "25", span: Span { start: Position { line: 632, column: 21, }, end: Position { line: 632, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 633, column: 11, }, end: Position { line: 633, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 633, column: 25, }, end: Position { line: 633, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 633, column: 29, }, end: Position { line: 633, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Port of the SMTP server for GitLab.", span: Span { start: Position { line: 633, column: 36, }, end: Position { line: 633, column: 71, }, }, }, ), ], span: Span { start: Position { line: 633, column: 35, }, end: Position { line: 633, column: 72, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 630, column: 25, }, end: Position { line: 634, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "username", span: Span { start: Position { line: 636, column: 9, }, end: Position { line: 636, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 636, column: 20, }, end: Position { line: 636, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 637, column: 11, }, end: Position { line: 637, column: 15, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 637, column: 23, }, end: Position { line: 637, column: 28, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 637, column: 30, }, end: Position { line: 637, column: 36, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 637, column: 37, }, end: Position { line: 637, column: 40, }, }, }, ), ], }, ), span: Span { start: Position { line: 637, column: 18, }, end: Position { line: 637, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 638, column: 11, }, end: Position { line: 638, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 638, column: 21, }, end: Position { line: 638, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 639, column: 11, }, end: Position { line: 639, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 639, column: 25, }, end: Position { line: 639, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 639, column: 29, }, end: Position { line: 639, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Username of the SMTP server for GitLab.", span: Span { start: Position { line: 639, column: 36, }, end: Position { line: 639, column: 75, }, }, }, ), ], span: Span { start: Position { line: 639, column: 35, }, end: Position { line: 639, column: 76, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 636, column: 29, }, end: Position { line: 640, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "passwordFile", span: Span { start: Position { line: 642, column: 9, }, end: Position { line: 642, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 642, column: 24, }, end: Position { line: 642, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 643, column: 11, }, end: Position { line: 643, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 643, column: 18, }, end: Position { line: 643, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 643, column: 24, }, end: Position { line: 643, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 643, column: 31, }, end: Position { line: 643, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 643, column: 37, }, end: Position { line: 643, column: 41, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 644, column: 11, }, end: Position { line: 644, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 644, column: 21, }, end: Position { line: 644, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 645, column: 11, }, end: Position { line: 645, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 645, column: 25, }, end: Position { line: 645, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 645, column: 29, }, end: Position { line: 645, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "File containing the password of the SMTP server for GitLab.\n\nThis should be a string, not a nix path, since nix paths\nare copied into the world-readable nix store.\n", span: Span { start: Position { line: 646, column: 1, }, end: Position { line: 650, column: 11, }, }, }, ), ], span: Span { start: Position { line: 645, column: 35, }, end: Position { line: 650, column: 13, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 642, column: 33, }, end: Position { line: 651, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "domain", span: Span { start: Position { line: 653, column: 9, }, end: Position { line: 653, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 653, column: 18, }, end: Position { line: 653, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 654, column: 11, }, end: Position { line: 654, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 654, column: 18, }, end: Position { line: 654, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 654, column: 24, }, end: Position { line: 654, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 655, column: 11, }, end: Position { line: 655, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "localhost", span: Span { start: Position { line: 655, column: 22, }, end: Position { line: 655, column: 31, }, }, }, ), ], span: Span { start: Position { line: 655, column: 21, }, end: Position { line: 655, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 656, column: 11, }, end: Position { line: 656, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 656, column: 25, }, end: Position { line: 656, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 656, column: 29, }, end: Position { line: 656, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "HELO domain to use for outgoing mail.", span: Span { start: Position { line: 656, column: 36, }, end: Position { line: 656, column: 73, }, }, }, ), ], span: Span { start: Position { line: 656, column: 35, }, end: Position { line: 656, column: 74, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 653, column: 27, }, end: Position { line: 657, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "authentication", span: Span { start: Position { line: 659, column: 9, }, end: Position { line: 659, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 659, column: 26, }, end: Position { line: 659, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 660, column: 11, }, end: Position { line: 660, column: 15, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 660, column: 23, }, end: Position { line: 660, column: 28, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 660, column: 30, }, end: Position { line: 660, column: 36, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 660, column: 37, }, end: Position { line: 660, column: 40, }, }, }, ), ], }, ), span: Span { start: Position { line: 660, column: 18, }, end: Position { line: 660, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 661, column: 11, }, end: Position { line: 661, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 661, column: 21, }, end: Position { line: 661, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 662, column: 11, }, end: Position { line: 662, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 662, column: 25, }, end: Position { line: 662, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 662, column: 29, }, end: Position { line: 662, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Authentication type to use, see http://api.rubyonrails.org/classes/ActionMailer/Base.html", span: Span { start: Position { line: 662, column: 36, }, end: Position { line: 662, column: 125, }, }, }, ), ], span: Span { start: Position { line: 662, column: 35, }, end: Position { line: 662, column: 126, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 659, column: 35, }, end: Position { line: 663, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enableStartTLSAuto", span: Span { start: Position { line: 665, column: 9, }, end: Position { line: 665, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 665, column: 30, }, end: Position { line: 665, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 666, column: 11, }, end: Position { line: 666, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 666, column: 18, }, end: Position { line: 666, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 666, column: 24, }, end: Position { line: 666, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 667, column: 11, }, end: Position { line: 667, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 667, column: 21, }, end: Position { line: 667, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 668, column: 11, }, end: Position { line: 668, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 668, column: 25, }, end: Position { line: 668, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 668, column: 29, }, end: Position { line: 668, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to try to use StartTLS.", span: Span { start: Position { line: 668, column: 36, }, end: Position { line: 668, column: 67, }, }, }, ), ], span: Span { start: Position { line: 668, column: 35, }, end: Position { line: 668, column: 68, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 665, column: 39, }, end: Position { line: 669, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tls", span: Span { start: Position { line: 671, column: 9, }, end: Position { line: 671, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 671, column: 15, }, end: Position { line: 671, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 672, column: 11, }, end: Position { line: 672, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 672, column: 18, }, end: Position { line: 672, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 672, column: 24, }, end: Position { line: 672, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 673, column: 11, }, end: Position { line: 673, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 673, column: 21, }, end: Position { line: 673, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 674, column: 11, }, end: Position { line: 674, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 674, column: 25, }, end: Position { line: 674, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 674, column: 29, }, end: Position { line: 674, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to use TLS wrapper-mode.", span: Span { start: Position { line: 674, column: 36, }, end: Position { line: 674, column: 68, }, }, }, ), ], span: Span { start: Position { line: 674, column: 35, }, end: Position { line: 674, column: 69, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 671, column: 24, }, end: Position { line: 675, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "opensslVerifyMode", span: Span { start: Position { line: 677, column: 9, }, end: Position { line: 677, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 677, column: 29, }, end: Position { line: 677, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 678, column: 11, }, end: Position { line: 678, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 678, column: 18, }, end: Position { line: 678, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 678, column: 24, }, end: Position { line: 678, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 679, column: 11, }, end: Position { line: 679, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "peer", span: Span { start: Position { line: 679, column: 22, }, end: Position { line: 679, column: 26, }, }, }, ), ], span: Span { start: Position { line: 679, column: 21, }, end: Position { line: 679, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 680, column: 11, }, end: Position { line: 680, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 680, column: 25, }, end: Position { line: 680, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 680, column: 29, }, end: Position { line: 680, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "How OpenSSL checks the certificate, see http://api.rubyonrails.org/classes/ActionMailer/Base.html", span: Span { start: Position { line: 680, column: 36, }, end: Position { line: 680, column: 133, }, }, }, ), ], span: Span { start: Position { line: 680, column: 35, }, end: Position { line: 680, column: 134, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 677, column: 38, }, end: Position { line: 681, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 617, column: 14, }, end: Position { line: 682, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pagesExtraArgs", span: Span { start: Position { line: 684, column: 7, }, end: Position { line: 684, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 684, column: 24, }, end: Position { line: 684, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 685, column: 9, }, end: Position { line: 685, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 685, column: 16, }, end: Position { line: 685, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 685, column: 22, }, end: Position { line: 685, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 685, column: 29, }, end: Position { line: 685, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 685, column: 35, }, end: Position { line: 685, column: 38, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 686, column: 9, }, end: Position { line: 686, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "-listen-proxy", span: Span { start: Position { line: 686, column: 22, }, end: Position { line: 686, column: 35, }, }, }, ), ], span: Span { start: Position { line: 686, column: 21, }, end: Position { line: 686, column: 36, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "127.0.0.1:8090", span: Span { start: Position { line: 686, column: 38, }, end: Position { line: 686, column: 52, }, }, }, ), ], span: Span { start: Position { line: 686, column: 37, }, end: Position { line: 686, column: 53, }, }, }, ), ], span: Span { start: Position { line: 686, column: 19, }, end: Position { line: 686, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 687, column: 9, }, end: Position { line: 687, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 687, column: 23, }, end: Position { line: 687, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 687, column: 27, }, end: Position { line: 687, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Arguments to pass to the gitlab-pages daemon", span: Span { start: Position { line: 687, column: 34, }, end: Position { line: 687, column: 78, }, }, }, ), ], span: Span { start: Position { line: 687, column: 33, }, end: Position { line: 687, column: 79, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 684, column: 33, }, end: Position { line: 688, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 690, column: 7, }, end: Position { line: 690, column: 14, }, }, }, ), Raw( PartRaw { content: "secretFile", span: Span { start: Position { line: 690, column: 15, }, end: Position { line: 690, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 690, column: 28, }, end: Position { line: 690, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 691, column: 9, }, end: Position { line: 691, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 691, column: 21, }, end: Position { line: 691, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 691, column: 28, }, end: Position { line: 691, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 691, column: 35, }, end: Position { line: 691, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 691, column: 16, }, end: Position { line: 691, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 692, column: 9, }, end: Position { line: 692, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 692, column: 19, }, end: Position { line: 692, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 693, column: 9, }, end: Position { line: 693, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 693, column: 23, }, end: Position { line: 693, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 693, column: 27, }, end: Position { line: 693, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "A file containing the secret used to encrypt variables in\nthe DB. If you change or lose this key you will be unable to\naccess variables stored in database.\n\nMake sure the secret is at least 32 characters and all random,\nno regular words or you'll be exposed to dictionary attacks.\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 694, column: 1, }, end: Position { line: 703, column: 9, }, }, }, ), ], span: Span { start: Position { line: 693, column: 33, }, end: Position { line: 703, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 690, column: 37, }, end: Position { line: 704, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 706, column: 7, }, end: Position { line: 706, column: 14, }, }, }, ), Raw( PartRaw { content: "dbFile", span: Span { start: Position { line: 706, column: 15, }, end: Position { line: 706, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 706, column: 24, }, end: Position { line: 706, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 707, column: 9, }, end: Position { line: 707, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 707, column: 21, }, end: Position { line: 707, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 707, column: 28, }, end: Position { line: 707, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 707, column: 35, }, end: Position { line: 707, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 707, column: 16, }, end: Position { line: 707, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 708, column: 9, }, end: Position { line: 708, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 708, column: 19, }, end: Position { line: 708, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 709, column: 9, }, end: Position { line: 709, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 709, column: 23, }, end: Position { line: 709, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 709, column: 27, }, end: Position { line: 709, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "A file containing the secret used to encrypt variables in\nthe DB. If you change or lose this key you will be unable to\naccess variables stored in database.\n\nMake sure the secret is at least 32 characters and all random,\nno regular words or you'll be exposed to dictionary attacks.\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 710, column: 1, }, end: Position { line: 719, column: 9, }, }, }, ), ], span: Span { start: Position { line: 709, column: 33, }, end: Position { line: 719, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 706, column: 33, }, end: Position { line: 720, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 722, column: 7, }, end: Position { line: 722, column: 14, }, }, }, ), Raw( PartRaw { content: "otpFile", span: Span { start: Position { line: 722, column: 15, }, end: Position { line: 722, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 722, column: 25, }, end: Position { line: 722, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 723, column: 9, }, end: Position { line: 723, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 723, column: 21, }, end: Position { line: 723, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 723, column: 28, }, end: Position { line: 723, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 723, column: 35, }, end: Position { line: 723, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 723, column: 16, }, end: Position { line: 723, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 724, column: 9, }, end: Position { line: 724, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 724, column: 19, }, end: Position { line: 724, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 725, column: 9, }, end: Position { line: 725, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 725, column: 23, }, end: Position { line: 725, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 725, column: 27, }, end: Position { line: 725, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "A file containing the secret used to encrypt secrets for OTP\ntokens. If you change or lose this key, users which have 2FA\nenabled for login won't be able to login anymore.\n\nMake sure the secret is at least 32 characters and all random,\nno regular words or you'll be exposed to dictionary attacks.\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 726, column: 1, }, end: Position { line: 735, column: 9, }, }, }, ), ], span: Span { start: Position { line: 725, column: 33, }, end: Position { line: 735, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 722, column: 34, }, end: Position { line: 736, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 738, column: 7, }, end: Position { line: 738, column: 14, }, }, }, ), Raw( PartRaw { content: "jwsFile", span: Span { start: Position { line: 738, column: 15, }, end: Position { line: 738, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 738, column: 25, }, end: Position { line: 738, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 739, column: 9, }, end: Position { line: 739, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 739, column: 21, }, end: Position { line: 739, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 739, column: 28, }, end: Position { line: 739, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 739, column: 35, }, end: Position { line: 739, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 739, column: 16, }, end: Position { line: 739, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 740, column: 9, }, end: Position { line: 740, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 740, column: 19, }, end: Position { line: 740, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 741, column: 9, }, end: Position { line: 741, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 741, column: 23, }, end: Position { line: 741, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 741, column: 27, }, end: Position { line: 741, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "A file containing the secret used to encrypt session\nkeys. If you change or lose this key, users will be\ndisconnected.\n\nMake sure the secret is an RSA private key in PEM format. You can\ngenerate one with\n\nopenssl genrsa 2048\n\nThis should be a string, not a nix path, since nix paths are\ncopied into the world-readable nix store.\n", span: Span { start: Position { line: 742, column: 1, }, end: Position { line: 753, column: 9, }, }, }, ), ], span: Span { start: Position { line: 741, column: 33, }, end: Position { line: 753, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 738, column: 34, }, end: Position { line: 754, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraShellConfig", span: Span { start: Position { line: 756, column: 7, }, end: Position { line: 756, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 756, column: 26, }, end: Position { line: 756, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 757, column: 9, }, end: Position { line: 757, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 757, column: 16, }, end: Position { line: 757, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrs", span: Span { start: Position { line: 757, column: 22, }, end: Position { line: 757, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 758, column: 9, }, end: Position { line: 758, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 758, column: 19, }, end: Position { line: 758, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 759, column: 9, }, end: Position { line: 759, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 759, column: 23, }, end: Position { line: 759, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 759, column: 27, }, end: Position { line: 759, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Extra configuration to merge into shell-config.yml", span: Span { start: Position { line: 759, column: 34, }, end: Position { line: 759, column: 84, }, }, }, ), ], span: Span { start: Position { line: 759, column: 33, }, end: Position { line: 759, column: 85, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 756, column: 35, }, end: Position { line: 760, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 762, column: 7, }, end: Position { line: 762, column: 11, }, }, }, ), Raw( PartRaw { content: "workers", span: Span { start: Position { line: 762, column: 12, }, end: Position { line: 762, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 762, column: 22, }, end: Position { line: 762, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 763, column: 9, }, end: Position { line: 763, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 763, column: 16, }, end: Position { line: 763, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 763, column: 22, }, end: Position { line: 763, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 764, column: 9, }, end: Position { line: 764, column: 16, }, }, }, ), ], to: Integer( Integer { value: "2", span: Span { start: Position { line: 764, column: 19, }, end: Position { line: 764, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 765, column: 9, }, end: Position { line: 765, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 765, column: 20, }, end: Position { line: 765, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 765, column: 29, }, end: Position { line: 765, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 765, column: 38, }, end: Position { line: 765, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 765, column: 17, }, end: Position { line: 765, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 766, column: 9, }, end: Position { line: 766, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 766, column: 23, }, end: Position { line: 766, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 766, column: 27, }, end: Position { line: 766, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The number of worker processes Puma should spawn. This\ncontrols the amount of parallel Ruby code can be\nexecuted. GitLab recommends `Number of CPU cores - 1`, but at least two.\n\n::: {.note}\nEach worker consumes quite a bit of memory, so\nbe careful when increasing this.\n:::\n", span: Span { start: Position { line: 767, column: 1, }, end: Position { line: 775, column: 9, }, }, }, ), ], span: Span { start: Position { line: 766, column: 33, }, end: Position { line: 775, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 762, column: 31, }, end: Position { line: 776, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 778, column: 7, }, end: Position { line: 778, column: 11, }, }, }, ), Raw( PartRaw { content: "threadsMin", span: Span { start: Position { line: 778, column: 12, }, end: Position { line: 778, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 778, column: 25, }, end: Position { line: 778, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 779, column: 9, }, end: Position { line: 779, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 779, column: 16, }, end: Position { line: 779, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 779, column: 22, }, end: Position { line: 779, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 780, column: 9, }, end: Position { line: 780, column: 16, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 780, column: 19, }, end: Position { line: 780, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 781, column: 9, }, end: Position { line: 781, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 781, column: 20, }, end: Position { line: 781, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 781, column: 29, }, end: Position { line: 781, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 781, column: 38, }, end: Position { line: 781, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 781, column: 17, }, end: Position { line: 781, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 782, column: 9, }, end: Position { line: 782, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 782, column: 23, }, end: Position { line: 782, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 782, column: 27, }, end: Position { line: 782, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The minimum number of threads Puma should use per\nworker.\n\n::: {.note}\nEach thread consumes memory and contributes to Global VM\nLock contention, so be careful when increasing this.\n:::\n", span: Span { start: Position { line: 783, column: 1, }, end: Position { line: 790, column: 9, }, }, }, ), ], span: Span { start: Position { line: 782, column: 33, }, end: Position { line: 790, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 778, column: 34, }, end: Position { line: 791, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 793, column: 7, }, end: Position { line: 793, column: 11, }, }, }, ), Raw( PartRaw { content: "threadsMax", span: Span { start: Position { line: 793, column: 12, }, end: Position { line: 793, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 793, column: 25, }, end: Position { line: 793, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 794, column: 9, }, end: Position { line: 794, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 794, column: 16, }, end: Position { line: 794, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 794, column: 22, }, end: Position { line: 794, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 795, column: 9, }, end: Position { line: 795, column: 16, }, }, }, ), ], to: Integer( Integer { value: "4", span: Span { start: Position { line: 795, column: 19, }, end: Position { line: 795, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 796, column: 9, }, end: Position { line: 796, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 796, column: 20, }, end: Position { line: 796, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 796, column: 29, }, end: Position { line: 796, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 796, column: 38, }, end: Position { line: 796, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 796, column: 17, }, end: Position { line: 796, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 797, column: 9, }, end: Position { line: 797, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 797, column: 23, }, end: Position { line: 797, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 797, column: 27, }, end: Position { line: 797, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The maximum number of threads Puma should use per\nworker. This limits how many threads Puma will automatically\nspawn in response to requests. In contrast to workers,\nthreads will never be able to run Ruby code in parallel, but\ngive higher IO parallelism.\n\n::: {.note}\nEach thread consumes memory and contributes to Global VM\nLock contention, so be careful when increasing this.\n:::\n", span: Span { start: Position { line: 798, column: 1, }, end: Position { line: 808, column: 9, }, }, }, ), ], span: Span { start: Position { line: 797, column: 33, }, end: Position { line: 808, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 793, column: 34, }, end: Position { line: 809, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 811, column: 7, }, end: Position { line: 811, column: 14, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 811, column: 15, }, end: Position { line: 811, column: 27, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 811, column: 28, }, end: Position { line: 811, column: 34, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 811, column: 37, }, end: Position { line: 811, column: 45, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 812, column: 9, }, end: Position { line: 812, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 812, column: 16, }, end: Position { line: 812, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 812, column: 22, }, end: Position { line: 812, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 813, column: 9, }, end: Position { line: 813, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 813, column: 19, }, end: Position { line: 813, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 814, column: 9, }, end: Position { line: 814, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 814, column: 23, }, end: Position { line: 814, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 814, column: 27, }, end: Position { line: 814, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether the Sidekiq MemoryKiller should be turned\non. MemoryKiller kills Sidekiq when its memory consumption\nexceeds a certain limit.\n\nSee \nfor details.\n", span: Span { start: Position { line: 815, column: 1, }, end: Position { line: 821, column: 9, }, }, }, ), ], span: Span { start: Position { line: 814, column: 33, }, end: Position { line: 821, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 811, column: 46, }, end: Position { line: 822, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 824, column: 7, }, end: Position { line: 824, column: 14, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 824, column: 15, }, end: Position { line: 824, column: 27, }, }, }, ), Raw( PartRaw { content: "maxMemory", span: Span { start: Position { line: 824, column: 28, }, end: Position { line: 824, column: 37, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 824, column: 40, }, end: Position { line: 824, column: 48, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 825, column: 9, }, end: Position { line: 825, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 825, column: 16, }, end: Position { line: 825, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 825, column: 22, }, end: Position { line: 825, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 826, column: 9, }, end: Position { line: 826, column: 16, }, }, }, ), ], to: Integer( Integer { value: "2000", span: Span { start: Position { line: 826, column: 19, }, end: Position { line: 826, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 827, column: 9, }, end: Position { line: 827, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 827, column: 20, }, end: Position { line: 827, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 827, column: 29, }, end: Position { line: 827, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 827, column: 39, }, end: Position { line: 827, column: 40, }, }, }, ), operator: Multiplication, right: Integer( Integer { value: "1024", span: Span { start: Position { line: 827, column: 43, }, end: Position { line: 827, column: 47, }, }, }, ), }, ), ], }, ), span: Span { start: Position { line: 827, column: 17, }, end: Position { line: 827, column: 48, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 828, column: 9, }, end: Position { line: 828, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 828, column: 23, }, end: Position { line: 828, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 828, column: 27, }, end: Position { line: 828, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The maximum amount of memory, in MiB, a Sidekiq worker is\nallowed to consume before being killed.\n", span: Span { start: Position { line: 829, column: 1, }, end: Position { line: 831, column: 9, }, }, }, ), ], span: Span { start: Position { line: 828, column: 33, }, end: Position { line: 831, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 824, column: 49, }, end: Position { line: 832, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 834, column: 7, }, end: Position { line: 834, column: 14, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 834, column: 15, }, end: Position { line: 834, column: 27, }, }, }, ), Raw( PartRaw { content: "graceTime", span: Span { start: Position { line: 834, column: 28, }, end: Position { line: 834, column: 37, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 834, column: 40, }, end: Position { line: 834, column: 48, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 835, column: 9, }, end: Position { line: 835, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 835, column: 16, }, end: Position { line: 835, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 835, column: 22, }, end: Position { line: 835, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 836, column: 9, }, end: Position { line: 836, column: 16, }, }, }, ), ], to: Integer( Integer { value: "900", span: Span { start: Position { line: 836, column: 19, }, end: Position { line: 836, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 837, column: 9, }, end: Position { line: 837, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 837, column: 20, }, end: Position { line: 837, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 837, column: 29, }, end: Position { line: 837, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 837, column: 38, }, end: Position { line: 837, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 837, column: 17, }, end: Position { line: 837, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 838, column: 9, }, end: Position { line: 838, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 838, column: 23, }, end: Position { line: 838, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 838, column: 27, }, end: Position { line: 838, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The time MemoryKiller waits after noticing excessive memory\nconsumption before killing Sidekiq.\n", span: Span { start: Position { line: 839, column: 1, }, end: Position { line: 841, column: 9, }, }, }, ), ], span: Span { start: Position { line: 838, column: 33, }, end: Position { line: 841, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 834, column: 49, }, end: Position { line: 842, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 844, column: 7, }, end: Position { line: 844, column: 14, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 844, column: 15, }, end: Position { line: 844, column: 27, }, }, }, ), Raw( PartRaw { content: "shutdownWait", span: Span { start: Position { line: 844, column: 28, }, end: Position { line: 844, column: 40, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 844, column: 43, }, end: Position { line: 844, column: 51, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 845, column: 9, }, end: Position { line: 845, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 845, column: 16, }, end: Position { line: 845, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 845, column: 22, }, end: Position { line: 845, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 846, column: 9, }, end: Position { line: 846, column: 16, }, }, }, ), ], to: Integer( Integer { value: "30", span: Span { start: Position { line: 846, column: 19, }, end: Position { line: 846, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "apply", span: Span { start: Position { line: 847, column: 9, }, end: Position { line: 847, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 847, column: 20, }, end: Position { line: 847, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 847, column: 29, }, end: Position { line: 847, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 847, column: 38, }, end: Position { line: 847, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 847, column: 17, }, end: Position { line: 847, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 848, column: 9, }, end: Position { line: 848, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 848, column: 23, }, end: Position { line: 848, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 848, column: 27, }, end: Position { line: 848, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The time allowed for all jobs to finish before Sidekiq is\nkilled forcefully.\n", span: Span { start: Position { line: 849, column: 1, }, end: Position { line: 851, column: 9, }, }, }, ), ], span: Span { start: Position { line: 848, column: 33, }, end: Position { line: 851, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 844, column: 52, }, end: Position { line: 852, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 854, column: 7, }, end: Position { line: 854, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 855, column: 9, }, end: Position { line: 855, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 855, column: 18, }, end: Position { line: 855, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 856, column: 11, }, end: Position { line: 856, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 856, column: 18, }, end: Position { line: 856, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 856, column: 24, }, end: Position { line: 856, column: 28, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 857, column: 11, }, end: Position { line: 857, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 857, column: 21, }, end: Position { line: 857, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 858, column: 11, }, end: Position { line: 858, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 858, column: 25, }, end: Position { line: 858, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 858, column: 29, }, end: Position { line: 858, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Enable rotation of log files.\n", span: Span { start: Position { line: 859, column: 1, }, end: Position { line: 860, column: 11, }, }, }, ), ], span: Span { start: Position { line: 858, column: 35, }, end: Position { line: 860, column: 13, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 855, column: 27, }, end: Position { line: 861, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "frequency", span: Span { start: Position { line: 863, column: 9, }, end: Position { line: 863, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 863, column: 21, }, end: Position { line: 863, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 864, column: 11, }, end: Position { line: 864, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 864, column: 18, }, end: Position { line: 864, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 864, column: 24, }, end: Position { line: 864, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 865, column: 11, }, end: Position { line: 865, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "daily", span: Span { start: Position { line: 865, column: 22, }, end: Position { line: 865, column: 27, }, }, }, ), ], span: Span { start: Position { line: 865, column: 21, }, end: Position { line: 865, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 866, column: 11, }, end: Position { line: 866, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 866, column: 25, }, end: Position { line: 866, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 866, column: 29, }, end: Position { line: 866, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "How often to rotate the logs.", span: Span { start: Position { line: 866, column: 36, }, end: Position { line: 866, column: 65, }, }, }, ), ], span: Span { start: Position { line: 866, column: 35, }, end: Position { line: 866, column: 66, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 863, column: 30, }, end: Position { line: 867, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "keep", span: Span { start: Position { line: 869, column: 9, }, end: Position { line: 869, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 869, column: 16, }, end: Position { line: 869, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 870, column: 11, }, end: Position { line: 870, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 870, column: 18, }, end: Position { line: 870, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 870, column: 24, }, end: Position { line: 870, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 871, column: 11, }, end: Position { line: 871, column: 18, }, }, }, ), ], to: Integer( Integer { value: "30", span: Span { start: Position { line: 871, column: 21, }, end: Position { line: 871, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 872, column: 11, }, end: Position { line: 872, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 872, column: 25, }, end: Position { line: 872, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 872, column: 29, }, end: Position { line: 872, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "How many rotations to keep.", span: Span { start: Position { line: 872, column: 36, }, end: Position { line: 872, column: 63, }, }, }, ), ], span: Span { start: Position { line: 872, column: 35, }, end: Position { line: 872, column: 64, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 869, column: 25, }, end: Position { line: 873, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 875, column: 9, }, end: Position { line: 875, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 875, column: 23, }, end: Position { line: 875, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 876, column: 11, }, end: Position { line: 876, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 876, column: 18, }, end: Position { line: 876, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 876, column: 24, }, end: Position { line: 876, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 877, column: 11, }, end: Position { line: 877, column: 18, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 877, column: 21, }, end: Position { line: 877, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 878, column: 11, }, end: Position { line: 878, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 878, column: 25, }, end: Position { line: 878, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 878, column: 29, }, end: Position { line: 878, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra logrotate config options for this path. Refer to\n for details.\n", span: Span { start: Position { line: 879, column: 1, }, end: Position { line: 881, column: 11, }, }, }, ), ], span: Span { start: Position { line: 878, column: 35, }, end: Position { line: 881, column: 13, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 875, column: 32, }, end: Position { line: 882, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 854, column: 19, }, end: Position { line: 883, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "workhorse", span: Span { start: Position { line: 885, column: 7, }, end: Position { line: 885, column: 16, }, }, }, ), Raw( PartRaw { content: "config", span: Span { start: Position { line: 885, column: 17, }, end: Position { line: 885, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 885, column: 26, }, end: Position { line: 885, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 886, column: 9, }, end: Position { line: 886, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "toml", span: Span { start: Position { line: 886, column: 16, }, end: Position { line: 886, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 886, column: 21, }, end: Position { line: 886, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 887, column: 9, }, end: Position { line: 887, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 887, column: 19, }, end: Position { line: 887, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 888, column: 9, }, end: Position { line: 888, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 888, column: 19, }, end: Position { line: 888, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n object_storage.provider = \"AWS\";\n object_storage.s3 = {\n aws_access_key_id = \"AKIAXXXXXXXXXXXXXXXX\";\n aws_secret_access_key = { _secret = \"/var/keys/aws_secret_access_key\"; };\n };\n};\n", span: Span { start: Position { line: 889, column: 1, }, end: Position { line: 896, column: 9, }, }, }, ), ], span: Span { start: Position { line: 888, column: 37, }, end: Position { line: 896, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 897, column: 9, }, end: Position { line: 897, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 897, column: 23, }, end: Position { line: 897, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 897, column: 27, }, end: Position { line: 897, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Configuration options to add to Workhorse's configuration\nfile.\n\nSee\n\nand\n\nfor examples and option documentation.\n\nOptions containing secret data should be set to an attribute\nset containing the attribute `_secret` - a string pointing\nto a file containing the value the option should be set\nto. See the example to get a better picture of this: in the\nresulting configuration file, the\n`object_storage.s3.aws_secret_access_key` key will be set to\nthe contents of the {file}`/var/keys/aws_secret_access_key`\nfile.\n", span: Span { start: Position { line: 898, column: 1, }, end: Position { line: 915, column: 9, }, }, }, ), ], span: Span { start: Position { line: 897, column: 33, }, end: Position { line: 915, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 885, column: 35, }, end: Position { line: 916, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 918, column: 7, }, end: Position { line: 918, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 918, column: 21, }, end: Position { line: 918, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 919, column: 9, }, end: Position { line: 919, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "yaml", span: Span { start: Position { line: 919, column: 16, }, end: Position { line: 919, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 919, column: 21, }, end: Position { line: 919, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 920, column: 9, }, end: Position { line: 920, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 920, column: 19, }, end: Position { line: 920, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 921, column: 9, }, end: Position { line: 921, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 921, column: 19, }, end: Position { line: 921, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n gitlab = {\n default_projects_features = {\n builds = false;\n };\n };\n omniauth = {\n enabled = true;\n auto_sign_in_with_provider = \"openid_connect\";\n allow_single_sign_on = [\"openid_connect\"];\n block_auto_created_users = false;\n providers = [\n {\n name = \"openid_connect\";\n label = \"OpenID Connect\";\n args = {\n name = \"openid_connect\";\n scope = [\"openid\" \"profile\"];\n response_type = \"code\";\n issuer = \"https://keycloak.example.com/auth/realms/My%20Realm\";\n discovery = true;\n client_auth_method = \"query\";\n uid_field = \"preferred_username\";\n client_options = {\n identifier = \"gitlab\";\n secret = { _secret = \"/var/keys/gitlab_oidc_secret\"; };\n redirect_uri = \"https://git.example.com/users/auth/openid_connect/callback\";\n };\n };\n }\n ];\n };\n};\n", span: Span { start: Position { line: 922, column: 1, }, end: Position { line: 955, column: 9, }, }, }, ), ], span: Span { start: Position { line: 921, column: 37, }, end: Position { line: 955, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 956, column: 9, }, end: Position { line: 956, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 956, column: 23, }, end: Position { line: 956, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 956, column: 27, }, end: Position { line: 956, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra options to be added under\n`production` in\n{file}`config/gitlab.yml`, as a nix attribute\nset.\n\nOptions containing secret data should be set to an attribute\nset containing the attribute `_secret` - a\nstring pointing to a file containing the value the option\nshould be set to. See the example to get a better picture of\nthis: in the resulting\n{file}`config/gitlab.yml` file, the\n`production.omniauth.providers[0].args.client_options.secret`\nkey will be set to the contents of the\n{file}`/var/keys/gitlab_oidc_secret` file.\n", span: Span { start: Position { line: 957, column: 1, }, end: Position { line: 971, column: 9, }, }, }, ), ], span: Span { start: Position { line: 956, column: 33, }, end: Position { line: 971, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 918, column: 30, }, end: Position { line: 972, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 266, column: 23, }, end: Position { line: 973, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 265, column: 13, }, end: Position { line: 974, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 976, column: 3, }, end: Position { line: 976, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 976, column: 12, }, end: Position { line: 976, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 976, column: 17, }, end: Position { line: 976, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 976, column: 21, }, end: Position { line: 976, column: 27, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertions", span: Span { start: Position { line: 978, column: 5, }, end: Position { line: 978, column: 15, }, }, }, ), ], to: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 980, column: 9, }, end: Position { line: 980, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "databaseActuallyCreateLocally", span: Span { start: Position { line: 980, column: 21, }, end: Position { line: 980, column: 50, }, }, }, ), operator: Implication, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 980, column: 55, }, end: Position { line: 980, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 980, column: 59, }, end: Position { line: 980, column: 63, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 980, column: 67, }, end: Position { line: 980, column: 70, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 980, column: 71, }, end: Position { line: 980, column: 87, }, }, }, ), ], default: None, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 981, column: 9, }, end: Position { line: 981, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "For local automatic database provisioning (services.gitlab.databaseCreateLocally == true) with peer authentication (services.gitlab.databaseHost == \"\") to work services.gitlab.user and services.gitlab.databaseUsername must be identical.", span: Span { start: Position { line: 981, column: 21, }, end: Position { line: 981, column: 257, }, }, }, ), ], span: Span { start: Position { line: 981, column: 19, }, end: Position { line: 981, column: 259, }, }, }, ), }, ), ], span: Span { start: Position { line: 979, column: 7, }, end: Position { line: 982, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 984, column: 9, }, end: Position { line: 984, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 984, column: 22, }, end: Position { line: 984, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 984, column: 26, }, end: Position { line: 984, column: 38, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 984, column: 42, }, end: Position { line: 984, column: 44, }, }, }, ), }, ), operator: Implication, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 984, column: 50, }, end: Position { line: 984, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databasePasswordFile", span: Span { start: Position { line: 984, column: 54, }, end: Position { line: 984, column: 74, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 984, column: 78, }, end: Position { line: 984, column: 82, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 985, column: 9, }, end: Position { line: 985, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "When services.gitlab.databaseHost is customized, services.gitlab.databasePasswordFile must be set!", span: Span { start: Position { line: 985, column: 20, }, end: Position { line: 985, column: 118, }, }, }, ), ], span: Span { start: Position { line: 985, column: 19, }, end: Position { line: 985, column: 119, }, }, }, ), }, ), ], span: Span { start: Position { line: 983, column: 7, }, end: Position { line: 986, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 988, column: 9, }, end: Position { line: 988, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 988, column: 21, }, end: Position { line: 988, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "initialRootPasswordFile", span: Span { start: Position { line: 988, column: 25, }, end: Position { line: 988, column: 48, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 988, column: 52, }, end: Position { line: 988, column: 56, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 989, column: 9, }, end: Position { line: 989, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab.initialRootPasswordFile must be set!", span: Span { start: Position { line: 989, column: 20, }, end: Position { line: 989, column: 72, }, }, }, ), ], span: Span { start: Position { line: 989, column: 19, }, end: Position { line: 989, column: 73, }, }, }, ), }, ), ], span: Span { start: Position { line: 987, column: 7, }, end: Position { line: 990, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 992, column: 9, }, end: Position { line: 992, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 992, column: 21, }, end: Position { line: 992, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 992, column: 25, }, end: Position { line: 992, column: 32, }, }, }, ), Raw( PartRaw { content: "secretFile", span: Span { start: Position { line: 992, column: 33, }, end: Position { line: 992, column: 43, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 992, column: 47, }, end: Position { line: 992, column: 51, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 993, column: 9, }, end: Position { line: 993, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab.secrets.secretFile must be set!", span: Span { start: Position { line: 993, column: 20, }, end: Position { line: 993, column: 67, }, }, }, ), ], span: Span { start: Position { line: 993, column: 19, }, end: Position { line: 993, column: 68, }, }, }, ), }, ), ], span: Span { start: Position { line: 991, column: 7, }, end: Position { line: 994, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 996, column: 9, }, end: Position { line: 996, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 996, column: 21, }, end: Position { line: 996, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 996, column: 25, }, end: Position { line: 996, column: 32, }, }, }, ), Raw( PartRaw { content: "dbFile", span: Span { start: Position { line: 996, column: 33, }, end: Position { line: 996, column: 39, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 996, column: 43, }, end: Position { line: 996, column: 47, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 997, column: 9, }, end: Position { line: 997, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab.secrets.dbFile must be set!", span: Span { start: Position { line: 997, column: 20, }, end: Position { line: 997, column: 63, }, }, }, ), ], span: Span { start: Position { line: 997, column: 19, }, end: Position { line: 997, column: 64, }, }, }, ), }, ), ], span: Span { start: Position { line: 995, column: 7, }, end: Position { line: 998, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 1000, column: 9, }, end: Position { line: 1000, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1000, column: 21, }, end: Position { line: 1000, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1000, column: 25, }, end: Position { line: 1000, column: 32, }, }, }, ), Raw( PartRaw { content: "otpFile", span: Span { start: Position { line: 1000, column: 33, }, end: Position { line: 1000, column: 40, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 1000, column: 44, }, end: Position { line: 1000, column: 48, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 1001, column: 9, }, end: Position { line: 1001, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab.secrets.otpFile must be set!", span: Span { start: Position { line: 1001, column: 20, }, end: Position { line: 1001, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1001, column: 19, }, end: Position { line: 1001, column: 65, }, }, }, ), }, ), ], span: Span { start: Position { line: 999, column: 7, }, end: Position { line: 1002, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 1004, column: 9, }, end: Position { line: 1004, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1004, column: 21, }, end: Position { line: 1004, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1004, column: 25, }, end: Position { line: 1004, column: 32, }, }, }, ), Raw( PartRaw { content: "jwsFile", span: Span { start: Position { line: 1004, column: 33, }, end: Position { line: 1004, column: 40, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 1004, column: 44, }, end: Position { line: 1004, column: 48, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 1005, column: 9, }, end: Position { line: 1005, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab.secrets.jwsFile must be set!", span: Span { start: Position { line: 1005, column: 20, }, end: Position { line: 1005, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1005, column: 19, }, end: Position { line: 1005, column: 65, }, }, }, ), }, ), ], span: Span { start: Position { line: 1003, column: 7, }, end: Position { line: 1006, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 1008, column: 9, }, end: Position { line: 1008, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "versionAtLeast", span: Span { start: Position { line: 1008, column: 21, }, end: Position { line: 1008, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "postgresqlPackage", span: Span { start: Position { line: 1008, column: 36, }, end: Position { line: 1008, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 1008, column: 54, }, end: Position { line: 1008, column: 61, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "12.0.0", span: Span { start: Position { line: 1008, column: 63, }, end: Position { line: 1008, column: 69, }, }, }, ), ], span: Span { start: Position { line: 1008, column: 62, }, end: Position { line: 1008, column: 70, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 1009, column: 9, }, end: Position { line: 1009, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "PostgreSQL >=12 is required to run GitLab 14. Follow the instructions in the manual section for upgrading PostgreSQL here: https://nixos.org/manual/nixos/stable/index.html#module-services-postgres-upgrading", span: Span { start: Position { line: 1009, column: 20, }, end: Position { line: 1009, column: 226, }, }, }, ), ], span: Span { start: Position { line: 1009, column: 19, }, end: Position { line: 1009, column: 227, }, }, }, ), }, ), ], span: Span { start: Position { line: 1007, column: 7, }, end: Position { line: 1010, column: 8, }, }, }, ), ], span: Span { start: Position { line: 978, column: 18, }, end: Position { line: 1011, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 1013, column: 5, }, end: Position { line: 1013, column: 16, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 1013, column: 17, }, end: Position { line: 1013, column: 31, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1013, column: 36, }, end: Position { line: 1013, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "git", span: Span { start: Position { line: 1013, column: 41, }, end: Position { line: 1013, column: 44, }, }, }, ), ], default: None, }, ), Identifier( Identifier { id: "gitlab-rake", span: Span { start: Position { line: 1013, column: 45, }, end: Position { line: 1013, column: 56, }, }, }, ), Identifier( Identifier { id: "gitlab-rails", span: Span { start: Position { line: 1013, column: 57, }, end: Position { line: 1013, column: 69, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1013, column: 70, }, end: Position { line: 1013, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1013, column: 74, }, end: Position { line: 1013, column: 82, }, }, }, ), Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 1013, column: 83, }, end: Position { line: 1013, column: 95, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 1013, column: 34, }, end: Position { line: 1013, column: 97, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1015, column: 5, }, end: Position { line: 1015, column: 12, }, }, }, ), Raw( PartRaw { content: "targets", span: Span { start: Position { line: 1015, column: 13, }, end: Position { line: 1015, column: 20, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1015, column: 21, }, end: Position { line: 1015, column: 27, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 1016, column: 7, }, end: Position { line: 1016, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Common target for all GitLab services.", span: Span { start: Position { line: 1016, column: 22, }, end: Position { line: 1016, column: 60, }, }, }, ), ], span: Span { start: Position { line: 1016, column: 21, }, end: Position { line: 1016, column: 61, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1017, column: 7, }, end: Position { line: 1017, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 1017, column: 21, }, end: Position { line: 1017, column: 38, }, }, }, ), ], span: Span { start: Position { line: 1017, column: 20, }, end: Position { line: 1017, column: 39, }, }, }, ), ], span: Span { start: Position { line: 1017, column: 18, }, end: Position { line: 1017, column: 41, }, }, }, ), }, ), ], span: Span { start: Position { line: 1015, column: 30, }, end: Position { line: 1018, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1021, column: 5, }, end: Position { line: 1021, column: 13, }, }, }, ), Raw( PartRaw { content: "redis", span: Span { start: Position { line: 1021, column: 14, }, end: Position { line: 1021, column: 19, }, }, }, ), Raw( PartRaw { content: "servers", span: Span { start: Position { line: 1021, column: 20, }, end: Position { line: 1021, column: 27, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1021, column: 28, }, end: Position { line: 1021, column: 34, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1022, column: 7, }, end: Position { line: 1022, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 1022, column: 16, }, end: Position { line: 1022, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "true", span: Span { start: Position { line: 1022, column: 26, }, end: Position { line: 1022, column: 30, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1023, column: 7, }, end: Position { line: 1023, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 1023, column: 14, }, end: Position { line: 1023, column: 23, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1023, column: 24, }, end: Position { line: 1023, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1023, column: 28, }, end: Position { line: 1023, column: 32, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "unixSocket", span: Span { start: Position { line: 1024, column: 7, }, end: Position { line: 1024, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 1024, column: 20, }, end: Position { line: 1024, column: 29, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "/run/gitlab/redis.sock", span: Span { start: Position { line: 1024, column: 31, }, end: Position { line: 1024, column: 53, }, }, }, ), ], span: Span { start: Position { line: 1024, column: 30, }, end: Position { line: 1024, column: 54, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "unixSocketPerm", span: Span { start: Position { line: 1025, column: 7, }, end: Position { line: 1025, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 1025, column: 24, }, end: Position { line: 1025, column: 33, }, }, }, ), arguments: [ Integer( Integer { value: "770", span: Span { start: Position { line: 1025, column: 34, }, end: Position { line: 1025, column: 37, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1021, column: 37, }, end: Position { line: 1026, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1029, column: 5, }, end: Position { line: 1029, column: 13, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 1029, column: 14, }, end: Position { line: 1029, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1029, column: 27, }, end: Position { line: 1029, column: 40, }, }, }, ), arguments: [ Identifier( Identifier { id: "databaseActuallyCreateLocally", span: Span { start: Position { line: 1029, column: 41, }, end: Position { line: 1029, column: 70, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1030, column: 7, }, end: Position { line: 1030, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1030, column: 16, }, end: Position { line: 1030, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ensureUsers", span: Span { start: Position { line: 1031, column: 7, }, end: Position { line: 1031, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "singleton", span: Span { start: Position { line: 1031, column: 21, }, end: Position { line: 1031, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 1031, column: 33, }, end: Position { line: 1031, column: 37, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1031, column: 40, }, end: Position { line: 1031, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1031, column: 44, }, end: Position { line: 1031, column: 60, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1031, column: 31, }, end: Position { line: 1031, column: 63, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1029, column: 71, }, end: Position { line: 1032, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1035, column: 5, }, end: Position { line: 1035, column: 13, }, }, }, ), Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 1035, column: 14, }, end: Position { line: 1035, column: 23, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1036, column: 7, }, end: Position { line: 1036, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1036, column: 16, }, end: Position { line: 1036, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 1036, column: 20, }, end: Position { line: 1036, column: 29, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1036, column: 30, }, end: Position { line: 1036, column: 36, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 1037, column: 7, }, end: Position { line: 1037, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1038, column: 9, }, end: Position { line: 1038, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "files", span: Span { start: Position { line: 1039, column: 11, }, end: Position { line: 1039, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1039, column: 22, }, end: Position { line: 1039, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1039, column: 26, }, end: Position { line: 1039, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/log/*.log", span: Span { start: Position { line: 1039, column: 20, }, end: Position { line: 1039, column: 46, }, }, }, ), ], span: Span { start: Position { line: 1039, column: 19, }, end: Position { line: 1039, column: 47, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "su", span: Span { start: Position { line: 1040, column: 11, }, end: Position { line: 1040, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1040, column: 19, }, end: Position { line: 1040, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1040, column: 23, }, end: Position { line: 1040, column: 27, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1040, column: 17, }, end: Position { line: 1040, column: 29, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1040, column: 31, }, end: Position { line: 1040, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1040, column: 35, }, end: Position { line: 1040, column: 40, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1040, column: 16, }, end: Position { line: 1040, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "frequency", span: Span { start: Position { line: 1041, column: 11, }, end: Position { line: 1041, column: 20, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1041, column: 23, }, end: Position { line: 1041, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 1041, column: 27, }, end: Position { line: 1041, column: 36, }, }, }, ), Raw( PartRaw { content: "frequency", span: Span { start: Position { line: 1041, column: 37, }, end: Position { line: 1041, column: 46, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rotate", span: Span { start: Position { line: 1042, column: 11, }, end: Position { line: 1042, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1042, column: 20, }, end: Position { line: 1042, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 1042, column: 24, }, end: Position { line: 1042, column: 33, }, }, }, ), Raw( PartRaw { content: "keep", span: Span { start: Position { line: 1042, column: 34, }, end: Position { line: 1042, column: 38, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "copytruncate", span: Span { start: Position { line: 1043, column: 11, }, end: Position { line: 1043, column: 23, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1043, column: 26, }, end: Position { line: 1043, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "compress", span: Span { start: Position { line: 1044, column: 11, }, end: Position { line: 1044, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1044, column: 22, }, end: Position { line: 1044, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 1045, column: 11, }, end: Position { line: 1045, column: 22, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1045, column: 25, }, end: Position { line: 1045, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logrotate", span: Span { start: Position { line: 1045, column: 29, }, end: Position { line: 1045, column: 38, }, }, }, ), Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 1045, column: 39, }, end: Position { line: 1045, column: 50, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1038, column: 18, }, end: Position { line: 1046, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 1037, column: 18, }, end: Position { line: 1047, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1035, column: 26, }, end: Position { line: 1048, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1053, column: 5, }, end: Position { line: 1053, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1053, column: 13, }, end: Position { line: 1053, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-postgresql", span: Span { start: Position { line: 1053, column: 22, }, end: Position { line: 1053, column: 39, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pgsql", span: Span { start: Position { line: 1053, column: 46, }, end: Position { line: 1053, column: 51, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1053, column: 54, }, end: Position { line: 1053, column: 60, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1053, column: 61, }, end: Position { line: 1053, column: 69, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 1053, column: 70, }, end: Position { line: 1053, column: 80, }, }, }, ), ], default: None, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 1053, column: 85, }, end: Position { line: 1053, column: 89, }, }, }, ), arguments: [ Identifier( Identifier { id: "databaseActuallyCreateLocally", span: Span { start: Position { line: 1053, column: 90, }, end: Position { line: 1053, column: 119, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1054, column: 7, }, end: Position { line: 1054, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1054, column: 18, }, end: Position { line: 1054, column: 36, }, }, }, ), ], span: Span { start: Position { line: 1054, column: 17, }, end: Position { line: 1054, column: 37, }, }, }, ), ], span: Span { start: Position { line: 1054, column: 15, }, end: Position { line: 1054, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1055, column: 7, }, end: Position { line: 1055, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1055, column: 20, }, end: Position { line: 1055, column: 38, }, }, }, ), ], span: Span { start: Position { line: 1055, column: 19, }, end: Position { line: 1055, column: 39, }, }, }, ), ], span: Span { start: Position { line: 1055, column: 17, }, end: Position { line: 1055, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1056, column: 7, }, end: Position { line: 1056, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1056, column: 21, }, end: Position { line: 1056, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1056, column: 20, }, end: Position { line: 1056, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1056, column: 18, }, end: Position { line: 1056, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1057, column: 7, }, end: Position { line: 1057, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1057, column: 19, }, end: Position { line: 1057, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1057, column: 18, }, end: Position { line: 1057, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1057, column: 16, }, end: Position { line: 1057, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1058, column: 7, }, end: Position { line: 1058, column: 11, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pgsql", span: Span { start: Position { line: 1059, column: 9, }, end: Position { line: 1059, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 1059, column: 15, }, end: Position { line: 1059, column: 22, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1060, column: 9, }, end: Position { line: 1060, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "util-linux", span: Span { start: Position { line: 1060, column: 14, }, end: Position { line: 1060, column: 24, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 1058, column: 14, }, end: Position { line: 1061, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 1062, column: 7, }, end: Position { line: 1062, column: 13, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -eu\n\nPSQL() {\n psql --port=", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1066, column: 25, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 1066, column: 27, }, end: Position { line: 1066, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pgsql", span: Span { start: Position { line: 1066, column: 36, }, end: Position { line: 1066, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 1066, column: 42, }, end: Position { line: 1066, column: 46, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " \"$@\"\n}\n\nPSQL -tAc \"SELECT 1 FROM pg_database WHERE datname = ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1069, column: 62, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1069, column: 63, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1069, column: 65, }, end: Position { line: 1069, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1069, column: 69, }, end: Position { line: 1069, column: 81, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'\" | grep -q 1 || PSQL -tAc 'CREATE DATABASE \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1069, column: 128, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1069, column: 130, }, end: Position { line: 1069, column: 133, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1069, column: 134, }, end: Position { line: 1069, column: 146, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" OWNER \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1069, column: 156, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1069, column: 158, }, end: Position { line: 1069, column: 161, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1069, column: 162, }, end: Position { line: 1069, column: 178, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"'\ncurrent_owner=$(PSQL -tAc \"SELECT pg_catalog.pg_get_userbyid(datdba) FROM pg_catalog.pg_database WHERE datname = ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1070, column: 122, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1070, column: 123, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1070, column: 125, }, end: Position { line: 1070, column: 128, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1070, column: 129, }, end: Position { line: 1070, column: 141, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'\")\nif [[ \"$current_owner\" != \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1071, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1071, column: 38, }, end: Position { line: 1071, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1071, column: 42, }, end: Position { line: 1071, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" ]]; then\n PSQL -tAc 'ALTER DATABASE \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1072, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1072, column: 42, }, end: Position { line: 1072, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1072, column: 46, }, end: Position { line: 1072, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" OWNER TO \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1072, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1072, column: 73, }, end: Position { line: 1072, column: 76, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1072, column: 77, }, end: Position { line: 1072, column: 93, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"'\n if [[ -e \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1073, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1073, column: 25, }, end: Position { line: 1073, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1073, column: 32, }, end: Position { line: 1073, column: 40, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 1073, column: 41, }, end: Position { line: 1073, column: 51, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 1073, column: 52, }, end: Position { line: 1073, column: 59, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.reassigning_", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1073, column: 74, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1073, column: 76, }, end: Position { line: 1073, column: 79, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1073, column: 80, }, end: Position { line: 1073, column: 92, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" ]]; then\n echo \"Reassigning ownership of database ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1074, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1074, column: 59, }, end: Position { line: 1074, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1074, column: 63, }, end: Position { line: 1074, column: 75, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " to user ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1074, column: 85, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1074, column: 87, }, end: Position { line: 1074, column: 90, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1074, column: 91, }, end: Position { line: 1074, column: 107, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " failed on last boot. Failing...\"\n exit 1\n fi\n touch \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1077, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1077, column: 22, }, end: Position { line: 1077, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1077, column: 29, }, end: Position { line: 1077, column: 37, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 1077, column: 38, }, end: Position { line: 1077, column: 48, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 1077, column: 49, }, end: Position { line: 1077, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.reassigning_", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1077, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1077, column: 73, }, end: Position { line: 1077, column: 76, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1077, column: 77, }, end: Position { line: 1077, column: 89, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\n PSQL \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1078, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1078, column: 21, }, end: Position { line: 1078, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1078, column: 25, }, end: Position { line: 1078, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" -tAc \"REASSIGN OWNED BY \\\"$current_owner\\\" TO \\\"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1078, column: 88, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1078, column: 90, }, end: Position { line: 1078, column: 93, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseUsername", span: Span { start: Position { line: 1078, column: 94, }, end: Position { line: 1078, column: 110, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\\\"\"\n rm \"", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1079, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1079, column: 19, }, end: Position { line: 1079, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1079, column: 26, }, end: Position { line: 1079, column: 34, }, }, }, ), Raw( PartRaw { content: "postgresql", span: Span { start: Position { line: 1079, column: 35, }, end: Position { line: 1079, column: 45, }, }, }, ), Raw( PartRaw { content: "dataDir", span: Span { start: Position { line: 1079, column: 46, }, end: Position { line: 1079, column: 53, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.reassigning_", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1079, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1079, column: 70, }, end: Position { line: 1079, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1079, column: 74, }, end: Position { line: 1079, column: 86, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\nfi\nPSQL ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1081, column: 14, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1081, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1081, column: 17, }, end: Position { line: 1081, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1081, column: 21, }, end: Position { line: 1081, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' -tAc \"CREATE EXTENSION IF NOT EXISTS pg_trgm\"\nPSQL ", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1082, column: 14, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1082, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1082, column: 17, }, end: Position { line: 1082, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseName", span: Span { start: Position { line: 1082, column: 21, }, end: Position { line: 1082, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' -tAc \"CREATE EXTENSION IF NOT EXISTS btree_gist;\"\n", span: Span { start: Position { line: 1063, column: 1, }, end: Position { line: 1083, column: 7, }, }, }, ), ], span: Span { start: Position { line: 1062, column: 16, }, end: Position { line: 1083, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1085, column: 7, }, end: Position { line: 1085, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1086, column: 9, }, end: Position { line: 1086, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pgsql", span: Span { start: Position { line: 1086, column: 16, }, end: Position { line: 1086, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "superUser", span: Span { start: Position { line: 1086, column: 22, }, end: Position { line: 1086, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1087, column: 9, }, end: Position { line: 1087, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 1087, column: 17, }, end: Position { line: 1087, column: 24, }, }, }, ), ], span: Span { start: Position { line: 1087, column: 16, }, end: Position { line: 1087, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RemainAfterExit", span: Span { start: Position { line: 1088, column: 9, }, end: Position { line: 1088, column: 24, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1088, column: 27, }, end: Position { line: 1088, column: 31, }, }, }, ), }, ), ], span: Span { start: Position { line: 1085, column: 23, }, end: Position { line: 1089, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1053, column: 120, }, end: Position { line: 1090, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 1053, column: 42, }, end: Position { line: 1090, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1092, column: 5, }, end: Position { line: 1092, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1092, column: 13, }, end: Position { line: 1092, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-registry-cert", span: Span { start: Position { line: 1092, column: 22, }, end: Position { line: 1092, column: 42, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1092, column: 45, }, end: Position { line: 1092, column: 58, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1092, column: 59, }, end: Position { line: 1092, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1092, column: 63, }, end: Position { line: 1092, column: 71, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1092, column: 72, }, end: Position { line: 1092, column: 78, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1093, column: 7, }, end: Position { line: 1093, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1093, column: 19, }, end: Position { line: 1093, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "openssl", span: Span { start: Position { line: 1093, column: 27, }, end: Position { line: 1093, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1093, column: 25, }, end: Position { line: 1093, column: 36, }, }, }, ), span: Span { start: Position { line: 1093, column: 14, }, end: Position { line: 1093, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 1095, column: 7, }, end: Position { line: 1095, column: 13, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p $(dirname ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1096, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1096, column: 30, }, end: Position { line: 1096, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1096, column: 34, }, end: Position { line: 1096, column: 42, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 1096, column: 43, }, end: Position { line: 1096, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")\nmkdir -p $(dirname ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1097, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1097, column: 30, }, end: Position { line: 1097, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1097, column: 34, }, end: Position { line: 1097, column: 42, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1097, column: 43, }, end: Position { line: 1097, column: 51, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")\nopenssl req -nodes -newkey rsa:4096 -keyout ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1098, column: 53, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1098, column: 55, }, end: Position { line: 1098, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1098, column: 59, }, end: Position { line: 1098, column: 67, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 1098, column: 68, }, end: Position { line: 1098, column: 75, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -out /tmp/registry-auth.csr -subj \"/CN=", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1098, column: 116, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1098, column: 118, }, end: Position { line: 1098, column: 121, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1098, column: 122, }, end: Position { line: 1098, column: 130, }, }, }, ), Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 1098, column: 131, }, end: Position { line: 1098, column: 137, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"\nopenssl x509 -in /tmp/registry-auth.csr -out ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1099, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1099, column: 56, }, end: Position { line: 1099, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1099, column: 60, }, end: Position { line: 1099, column: 68, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1099, column: 69, }, end: Position { line: 1099, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -req -signkey ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1099, column: 93, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1099, column: 95, }, end: Position { line: 1099, column: 98, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1099, column: 99, }, end: Position { line: 1099, column: 107, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 1099, column: 108, }, end: Position { line: 1099, column: 115, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -days 3650\nchown ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1100, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1100, column: 17, }, end: Position { line: 1100, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1100, column: 21, }, end: Position { line: 1100, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1100, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1100, column: 29, }, end: Position { line: 1100, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1100, column: 33, }, end: Position { line: 1100, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " $(dirname ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1100, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1100, column: 52, }, end: Position { line: 1100, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1100, column: 56, }, end: Position { line: 1100, column: 64, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 1100, column: 65, }, end: Position { line: 1100, column: 72, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")\nchown ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1101, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1101, column: 17, }, end: Position { line: 1101, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1101, column: 21, }, end: Position { line: 1101, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1101, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1101, column: 29, }, end: Position { line: 1101, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1101, column: 33, }, end: Position { line: 1101, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " $(dirname ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1101, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1101, column: 52, }, end: Position { line: 1101, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1101, column: 56, }, end: Position { line: 1101, column: 64, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1101, column: 65, }, end: Position { line: 1101, column: 73, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")\nchown ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1102, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1102, column: 17, }, end: Position { line: 1102, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1102, column: 21, }, end: Position { line: 1102, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1102, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1102, column: 29, }, end: Position { line: 1102, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1102, column: 33, }, end: Position { line: 1102, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1102, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1102, column: 42, }, end: Position { line: 1102, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1102, column: 46, }, end: Position { line: 1102, column: 54, }, }, }, ), Raw( PartRaw { content: "keyFile", span: Span { start: Position { line: 1102, column: 55, }, end: Position { line: 1102, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nchown ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1103, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1103, column: 17, }, end: Position { line: 1103, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1103, column: 21, }, end: Position { line: 1103, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1103, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1103, column: 29, }, end: Position { line: 1103, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1103, column: 33, }, end: Position { line: 1103, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1103, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1103, column: 42, }, end: Position { line: 1103, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1103, column: 46, }, end: Position { line: 1103, column: 54, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1103, column: 55, }, end: Position { line: 1103, column: 63, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 1096, column: 1, }, end: Position { line: 1104, column: 7, }, }, }, ), ], span: Span { start: Position { line: 1095, column: 16, }, end: Position { line: 1104, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "unitConfig", span: Span { start: Position { line: 1106, column: 7, }, end: Position { line: 1106, column: 17, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ConditionPathExists", span: Span { start: Position { line: 1107, column: 9, }, end: Position { line: 1107, column: 28, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "!", span: Span { start: Position { line: 1107, column: 32, }, end: Position { line: 1107, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1107, column: 35, }, end: Position { line: 1107, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1107, column: 39, }, end: Position { line: 1107, column: 47, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1107, column: 48, }, end: Position { line: 1107, column: 56, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1107, column: 31, }, end: Position { line: 1107, column: 58, }, }, }, ), }, ), ], span: Span { start: Position { line: 1106, column: 20, }, end: Position { line: 1108, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1092, column: 79, }, end: Position { line: 1109, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1112, column: 5, }, end: Position { line: 1112, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1112, column: 13, }, end: Position { line: 1112, column: 21, }, }, }, ), Raw( PartRaw { content: "docker-registry", span: Span { start: Position { line: 1112, column: 22, }, end: Position { line: 1112, column: 37, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1112, column: 40, }, end: Position { line: 1112, column: 53, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1112, column: 54, }, end: Position { line: 1112, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1112, column: 58, }, end: Position { line: 1112, column: 66, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1112, column: 67, }, end: Position { line: 1112, column: 73, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wants", span: Span { start: Position { line: 1113, column: 7, }, end: Position { line: 1113, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-registry-cert.service", span: Span { start: Position { line: 1113, column: 18, }, end: Position { line: 1113, column: 46, }, }, }, ), ], span: Span { start: Position { line: 1113, column: 17, }, end: Position { line: 1113, column: 47, }, }, }, ), ], span: Span { start: Position { line: 1113, column: 15, }, end: Position { line: 1113, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1114, column: 7, }, end: Position { line: 1114, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-registry-cert.service", span: Span { start: Position { line: 1114, column: 18, }, end: Position { line: 1114, column: 46, }, }, }, ), ], span: Span { start: Position { line: 1114, column: 17, }, end: Position { line: 1114, column: 47, }, }, }, ), ], span: Span { start: Position { line: 1114, column: 15, }, end: Position { line: 1114, column: 49, }, }, }, ), }, ), ], span: Span { start: Position { line: 1112, column: 74, }, end: Position { line: 1115, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1118, column: 5, }, end: Position { line: 1118, column: 13, }, }, }, ), Raw( PartRaw { content: "dockerRegistry", span: Span { start: Position { line: 1118, column: 14, }, end: Position { line: 1118, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1118, column: 31, }, end: Position { line: 1118, column: 44, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1118, column: 45, }, end: Position { line: 1118, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1118, column: 49, }, end: Position { line: 1118, column: 57, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1118, column: 58, }, end: Position { line: 1118, column: 64, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1119, column: 7, }, end: Position { line: 1119, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1119, column: 16, }, end: Position { line: 1119, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enableDelete", span: Span { start: Position { line: 1120, column: 7, }, end: Position { line: 1120, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1120, column: 22, }, end: Position { line: 1120, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 1121, column: 7, }, end: Position { line: 1121, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "auth", span: Span { start: Position { line: 1122, column: 9, }, end: Position { line: 1122, column: 13, }, }, }, ), Raw( PartRaw { content: "token", span: Span { start: Position { line: 1122, column: 14, }, end: Position { line: 1122, column: 19, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "realm", span: Span { start: Position { line: 1123, column: 11, }, end: Position { line: 1123, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "http", span: Span { start: Position { line: 1123, column: 20, }, end: Position { line: 1123, column: 64, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1123, column: 29, }, end: Position { line: 1123, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "https", span: Span { start: Position { line: 1123, column: 33, }, end: Position { line: 1123, column: 38, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1123, column: 42, }, end: Position { line: 1123, column: 46, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "s", span: Span { start: Position { line: 1123, column: 53, }, end: Position { line: 1123, column: 54, }, }, }, ), ], span: Span { start: Position { line: 1123, column: 52, }, end: Position { line: 1123, column: 55, }, }, }, ), else_: String( String_ { parts: [], span: Span { start: Position { line: 1123, column: 61, }, end: Position { line: 1123, column: 63, }, }, }, ), span: Span { start: Position { line: 1123, column: 26, }, end: Position { line: 1123, column: 63, }, }, }, ), }, ), Raw( PartRaw { content: "://", span: Span { start: Position { line: 1123, column: 20, }, end: Position { line: 1123, column: 67, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1123, column: 69, }, end: Position { line: 1123, column: 72, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 1123, column: 73, }, end: Position { line: 1123, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/jwt/auth", span: Span { start: Position { line: 1123, column: 20, }, end: Position { line: 1123, column: 87, }, }, }, ), ], span: Span { start: Position { line: 1123, column: 19, }, end: Position { line: 1123, column: 88, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "service", span: Span { start: Position { line: 1124, column: 11, }, end: Position { line: 1124, column: 18, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1124, column: 21, }, end: Position { line: 1124, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1124, column: 25, }, end: Position { line: 1124, column: 33, }, }, }, ), Raw( PartRaw { content: "serviceName", span: Span { start: Position { line: 1124, column: 34, }, end: Position { line: 1124, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 1125, column: 11, }, end: Position { line: 1125, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1125, column: 20, }, end: Position { line: 1125, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1125, column: 24, }, end: Position { line: 1125, column: 32, }, }, }, ), Raw( PartRaw { content: "issuer", span: Span { start: Position { line: 1125, column: 33, }, end: Position { line: 1125, column: 39, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rootcertbundle", span: Span { start: Position { line: 1126, column: 11, }, end: Position { line: 1126, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1126, column: 28, }, end: Position { line: 1126, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registry", span: Span { start: Position { line: 1126, column: 32, }, end: Position { line: 1126, column: 40, }, }, }, ), Raw( PartRaw { content: "certFile", span: Span { start: Position { line: 1126, column: 41, }, end: Position { line: 1126, column: 49, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1122, column: 22, }, end: Position { line: 1127, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 1121, column: 21, }, end: Position { line: 1128, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1118, column: 65, }, end: Position { line: 1129, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 1132, column: 5, }, end: Position { line: 1132, column: 13, }, }, }, ), Raw( PartRaw { content: "postfix", span: Span { start: Position { line: 1132, column: 14, }, end: Position { line: 1132, column: 21, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1132, column: 22, }, end: Position { line: 1132, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 1132, column: 31, }, end: Position { line: 1132, column: 40, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1132, column: 42, }, end: Position { line: 1132, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 1132, column: 46, }, end: Position { line: 1132, column: 50, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1132, column: 51, }, end: Position { line: 1132, column: 57, }, }, }, ), ], default: None, }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1132, column: 61, }, end: Position { line: 1132, column: 64, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 1132, column: 65, }, end: Position { line: 1132, column: 69, }, }, }, ), Raw( PartRaw { content: "address", span: Span { start: Position { line: 1132, column: 70, }, end: Position { line: 1132, column: 77, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "localhost", span: Span { start: Position { line: 1132, column: 82, }, end: Position { line: 1132, column: 91, }, }, }, ), ], span: Span { start: Position { line: 1132, column: 81, }, end: Position { line: 1132, column: 92, }, }, }, ), }, ), }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 1134, column: 5, }, end: Position { line: 1134, column: 10, }, }, }, ), Raw( PartRaw { content: "users", span: Span { start: Position { line: 1134, column: 11, }, end: Position { line: 1134, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1134, column: 19, }, end: Position { line: 1134, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1134, column: 23, }, end: Position { line: 1134, column: 27, }, }, }, ), ], default: None, }, ), }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1135, column: 9, }, end: Position { line: 1135, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1135, column: 17, }, end: Position { line: 1135, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1135, column: 21, }, end: Position { line: 1135, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "home", span: Span { start: Position { line: 1136, column: 9, }, end: Position { line: 1136, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1136, column: 19, }, end: Position { line: 1136, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1136, column: 23, }, end: Position { line: 1136, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/home", span: Span { start: Position { line: 1136, column: 17, }, end: Position { line: 1136, column: 38, }, }, }, ), ], span: Span { start: Position { line: 1136, column: 16, }, end: Position { line: 1136, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "shell", span: Span { start: Position { line: 1137, column: 9, }, end: Position { line: 1137, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1137, column: 20, }, end: Position { line: 1137, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bash", span: Span { start: Position { line: 1137, column: 25, }, end: Position { line: 1137, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/bash", span: Span { start: Position { line: 1137, column: 18, }, end: Position { line: 1137, column: 39, }, }, }, ), ], span: Span { start: Position { line: 1137, column: 17, }, end: Position { line: 1137, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uid", span: Span { start: Position { line: 1138, column: 9, }, end: Position { line: 1138, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1138, column: 15, }, end: Position { line: 1138, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 1138, column: 22, }, end: Position { line: 1138, column: 25, }, }, }, ), Raw( PartRaw { content: "uids", span: Span { start: Position { line: 1138, column: 26, }, end: Position { line: 1138, column: 30, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1138, column: 31, }, end: Position { line: 1138, column: 37, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1135, column: 7, }, end: Position { line: 1139, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 1141, column: 5, }, end: Position { line: 1141, column: 10, }, }, }, ), Raw( PartRaw { content: "groups", span: Span { start: Position { line: 1141, column: 11, }, end: Position { line: 1141, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1141, column: 20, }, end: Position { line: 1141, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1141, column: 24, }, end: Position { line: 1141, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "gid", span: Span { start: Position { line: 1141, column: 31, }, end: Position { line: 1141, column: 34, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 1141, column: 37, }, end: Position { line: 1141, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 1141, column: 44, }, end: Position { line: 1141, column: 47, }, }, }, ), Raw( PartRaw { content: "gids", span: Span { start: Position { line: 1141, column: 48, }, end: Position { line: 1141, column: 52, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1141, column: 53, }, end: Position { line: 1141, column: 59, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1143, column: 5, }, end: Position { line: 1143, column: 12, }, }, }, ), Raw( PartRaw { content: "tmpfiles", span: Span { start: Position { line: 1143, column: 13, }, end: Position { line: 1143, column: 21, }, }, }, ), Raw( PartRaw { content: "rules", span: Span { start: Position { line: 1143, column: 22, }, end: Position { line: 1143, column: 27, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "d /run/gitlab 0755 ", span: Span { start: Position { line: 1144, column: 8, }, end: Position { line: 1144, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1144, column: 29, }, end: Position { line: 1144, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1144, column: 33, }, end: Position { line: 1144, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1144, column: 8, }, end: Position { line: 1144, column: 39, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1144, column: 41, }, end: Position { line: 1144, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1144, column: 45, }, end: Position { line: 1144, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1144, column: 8, }, end: Position { line: 1144, column: 53, }, }, }, ), ], span: Span { start: Position { line: 1144, column: 7, }, end: Position { line: 1144, column: 54, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1145, column: 8, }, end: Position { line: 1145, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1145, column: 12, }, end: Position { line: 1145, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1145, column: 22, }, end: Position { line: 1145, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " 0750 ", span: Span { start: Position { line: 1145, column: 8, }, end: Position { line: 1145, column: 33, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1145, column: 35, }, end: Position { line: 1145, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1145, column: 39, }, end: Position { line: 1145, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1145, column: 8, }, end: Position { line: 1145, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1145, column: 47, }, end: Position { line: 1145, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1145, column: 51, }, end: Position { line: 1145, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1145, column: 8, }, end: Position { line: 1145, column: 59, }, }, }, ), ], span: Span { start: Position { line: 1145, column: 7, }, end: Position { line: 1145, column: 60, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "z ", span: Span { start: Position { line: 1146, column: 8, }, end: Position { line: 1146, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1146, column: 12, }, end: Position { line: 1146, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1146, column: 22, }, end: Position { line: 1146, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.ssh/authorized_keys 0600 ", span: Span { start: Position { line: 1146, column: 8, }, end: Position { line: 1146, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1146, column: 56, }, end: Position { line: 1146, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1146, column: 60, }, end: Position { line: 1146, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1146, column: 8, }, end: Position { line: 1146, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1146, column: 68, }, end: Position { line: 1146, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1146, column: 72, }, end: Position { line: 1146, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1146, column: 8, }, end: Position { line: 1146, column: 80, }, }, }, ), ], span: Span { start: Position { line: 1146, column: 7, }, end: Position { line: 1146, column: 81, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1147, column: 8, }, end: Position { line: 1147, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1147, column: 12, }, end: Position { line: 1147, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 1147, column: 16, }, end: Position { line: 1147, column: 22, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1147, column: 23, }, end: Position { line: 1147, column: 27, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " 0750 ", span: Span { start: Position { line: 1147, column: 8, }, end: Position { line: 1147, column: 34, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1147, column: 36, }, end: Position { line: 1147, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1147, column: 40, }, end: Position { line: 1147, column: 44, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1147, column: 8, }, end: Position { line: 1147, column: 46, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1147, column: 48, }, end: Position { line: 1147, column: 51, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1147, column: 52, }, end: Position { line: 1147, column: 57, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1147, column: 8, }, end: Position { line: 1147, column: 60, }, }, }, ), ], span: Span { start: Position { line: 1147, column: 7, }, end: Position { line: 1147, column: 61, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1148, column: 8, }, end: Position { line: 1148, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1148, column: 12, }, end: Position { line: 1148, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1148, column: 16, }, end: Position { line: 1148, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " 0750 ", span: Span { start: Position { line: 1148, column: 8, }, end: Position { line: 1148, column: 32, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1148, column: 34, }, end: Position { line: 1148, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1148, column: 38, }, end: Position { line: 1148, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1148, column: 8, }, end: Position { line: 1148, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1148, column: 46, }, end: Position { line: 1148, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1148, column: 50, }, end: Position { line: 1148, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1148, column: 8, }, end: Position { line: 1148, column: 58, }, }, }, ), ], span: Span { start: Position { line: 1148, column: 7, }, end: Position { line: 1148, column: 59, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1149, column: 8, }, end: Position { line: 1149, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1149, column: 12, }, end: Position { line: 1149, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1149, column: 16, }, end: Position { line: 1149, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/builds 0750 ", span: Span { start: Position { line: 1149, column: 8, }, end: Position { line: 1149, column: 39, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1149, column: 41, }, end: Position { line: 1149, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1149, column: 45, }, end: Position { line: 1149, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1149, column: 8, }, end: Position { line: 1149, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1149, column: 53, }, end: Position { line: 1149, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1149, column: 57, }, end: Position { line: 1149, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1149, column: 8, }, end: Position { line: 1149, column: 65, }, }, }, ), ], span: Span { start: Position { line: 1149, column: 7, }, end: Position { line: 1149, column: 66, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1150, column: 8, }, end: Position { line: 1150, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1150, column: 12, }, end: Position { line: 1150, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1150, column: 16, }, end: Position { line: 1150, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config 0750 ", span: Span { start: Position { line: 1150, column: 8, }, end: Position { line: 1150, column: 39, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1150, column: 41, }, end: Position { line: 1150, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1150, column: 45, }, end: Position { line: 1150, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1150, column: 8, }, end: Position { line: 1150, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1150, column: 53, }, end: Position { line: 1150, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1150, column: 57, }, end: Position { line: 1150, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1150, column: 8, }, end: Position { line: 1150, column: 65, }, }, }, ), ], span: Span { start: Position { line: 1150, column: 7, }, end: Position { line: 1150, column: 66, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1151, column: 8, }, end: Position { line: 1151, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1151, column: 12, }, end: Position { line: 1151, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1151, column: 16, }, end: Position { line: 1151, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/db 0750 ", span: Span { start: Position { line: 1151, column: 8, }, end: Position { line: 1151, column: 35, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1151, column: 37, }, end: Position { line: 1151, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1151, column: 41, }, end: Position { line: 1151, column: 45, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1151, column: 8, }, end: Position { line: 1151, column: 47, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1151, column: 49, }, end: Position { line: 1151, column: 52, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1151, column: 53, }, end: Position { line: 1151, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1151, column: 8, }, end: Position { line: 1151, column: 61, }, }, }, ), ], span: Span { start: Position { line: 1151, column: 7, }, end: Position { line: 1151, column: 62, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1152, column: 8, }, end: Position { line: 1152, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1152, column: 12, }, end: Position { line: 1152, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1152, column: 16, }, end: Position { line: 1152, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/log 0750 ", span: Span { start: Position { line: 1152, column: 8, }, end: Position { line: 1152, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1152, column: 38, }, end: Position { line: 1152, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1152, column: 42, }, end: Position { line: 1152, column: 46, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1152, column: 8, }, end: Position { line: 1152, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1152, column: 50, }, end: Position { line: 1152, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1152, column: 54, }, end: Position { line: 1152, column: 59, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1152, column: 8, }, end: Position { line: 1152, column: 62, }, }, }, ), ], span: Span { start: Position { line: 1152, column: 7, }, end: Position { line: 1152, column: 63, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1153, column: 8, }, end: Position { line: 1153, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1153, column: 12, }, end: Position { line: 1153, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1153, column: 16, }, end: Position { line: 1153, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/repositories 2770 ", span: Span { start: Position { line: 1153, column: 8, }, end: Position { line: 1153, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1153, column: 47, }, end: Position { line: 1153, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1153, column: 51, }, end: Position { line: 1153, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1153, column: 8, }, end: Position { line: 1153, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1153, column: 59, }, end: Position { line: 1153, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1153, column: 63, }, end: Position { line: 1153, column: 68, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1153, column: 8, }, end: Position { line: 1153, column: 71, }, }, }, ), ], span: Span { start: Position { line: 1153, column: 7, }, end: Position { line: 1153, column: 72, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1154, column: 8, }, end: Position { line: 1154, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1154, column: 12, }, end: Position { line: 1154, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1154, column: 16, }, end: Position { line: 1154, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/shell 0750 ", span: Span { start: Position { line: 1154, column: 8, }, end: Position { line: 1154, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1154, column: 40, }, end: Position { line: 1154, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1154, column: 44, }, end: Position { line: 1154, column: 48, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1154, column: 8, }, end: Position { line: 1154, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1154, column: 52, }, end: Position { line: 1154, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1154, column: 56, }, end: Position { line: 1154, column: 61, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1154, column: 8, }, end: Position { line: 1154, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1154, column: 7, }, end: Position { line: 1154, column: 65, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1155, column: 8, }, end: Position { line: 1155, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1155, column: 12, }, end: Position { line: 1155, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1155, column: 16, }, end: Position { line: 1155, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp 0750 ", span: Span { start: Position { line: 1155, column: 8, }, end: Position { line: 1155, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1155, column: 38, }, end: Position { line: 1155, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1155, column: 42, }, end: Position { line: 1155, column: 46, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1155, column: 8, }, end: Position { line: 1155, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1155, column: 50, }, end: Position { line: 1155, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1155, column: 54, }, end: Position { line: 1155, column: 59, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1155, column: 8, }, end: Position { line: 1155, column: 62, }, }, }, ), ], span: Span { start: Position { line: 1155, column: 7, }, end: Position { line: 1155, column: 63, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1156, column: 8, }, end: Position { line: 1156, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1156, column: 12, }, end: Position { line: 1156, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1156, column: 16, }, end: Position { line: 1156, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp/pids 0750 ", span: Span { start: Position { line: 1156, column: 8, }, end: Position { line: 1156, column: 41, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1156, column: 43, }, end: Position { line: 1156, column: 46, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1156, column: 47, }, end: Position { line: 1156, column: 51, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1156, column: 8, }, end: Position { line: 1156, column: 53, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1156, column: 55, }, end: Position { line: 1156, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1156, column: 59, }, end: Position { line: 1156, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1156, column: 8, }, end: Position { line: 1156, column: 67, }, }, }, ), ], span: Span { start: Position { line: 1156, column: 7, }, end: Position { line: 1156, column: 68, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1157, column: 8, }, end: Position { line: 1157, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1157, column: 12, }, end: Position { line: 1157, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1157, column: 16, }, end: Position { line: 1157, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp/sockets 0750 ", span: Span { start: Position { line: 1157, column: 8, }, end: Position { line: 1157, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1157, column: 46, }, end: Position { line: 1157, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1157, column: 50, }, end: Position { line: 1157, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1157, column: 8, }, end: Position { line: 1157, column: 56, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1157, column: 58, }, end: Position { line: 1157, column: 61, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1157, column: 62, }, end: Position { line: 1157, column: 67, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1157, column: 8, }, end: Position { line: 1157, column: 70, }, }, }, ), ], span: Span { start: Position { line: 1157, column: 7, }, end: Position { line: 1157, column: 71, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1158, column: 8, }, end: Position { line: 1158, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1158, column: 12, }, end: Position { line: 1158, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1158, column: 16, }, end: Position { line: 1158, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/uploads 0700 ", span: Span { start: Position { line: 1158, column: 8, }, end: Position { line: 1158, column: 40, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1158, column: 42, }, end: Position { line: 1158, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1158, column: 46, }, end: Position { line: 1158, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1158, column: 8, }, end: Position { line: 1158, column: 52, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1158, column: 54, }, end: Position { line: 1158, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1158, column: 58, }, end: Position { line: 1158, column: 63, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1158, column: 8, }, end: Position { line: 1158, column: 66, }, }, }, ), ], span: Span { start: Position { line: 1158, column: 7, }, end: Position { line: 1158, column: 67, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1159, column: 8, }, end: Position { line: 1159, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1159, column: 12, }, end: Position { line: 1159, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1159, column: 16, }, end: Position { line: 1159, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/custom_hooks 0700 ", span: Span { start: Position { line: 1159, column: 8, }, end: Position { line: 1159, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1159, column: 47, }, end: Position { line: 1159, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1159, column: 51, }, end: Position { line: 1159, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1159, column: 8, }, end: Position { line: 1159, column: 57, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1159, column: 59, }, end: Position { line: 1159, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1159, column: 63, }, end: Position { line: 1159, column: 68, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1159, column: 8, }, end: Position { line: 1159, column: 71, }, }, }, ), ], span: Span { start: Position { line: 1159, column: 7, }, end: Position { line: 1159, column: 72, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1160, column: 8, }, end: Position { line: 1160, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1160, column: 12, }, end: Position { line: 1160, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1160, column: 16, }, end: Position { line: 1160, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/custom_hooks/pre-receive.d 0700 ", span: Span { start: Position { line: 1160, column: 8, }, end: Position { line: 1160, column: 59, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1160, column: 61, }, end: Position { line: 1160, column: 64, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1160, column: 65, }, end: Position { line: 1160, column: 69, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1160, column: 8, }, end: Position { line: 1160, column: 71, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1160, column: 73, }, end: Position { line: 1160, column: 76, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1160, column: 77, }, end: Position { line: 1160, column: 82, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1160, column: 8, }, end: Position { line: 1160, column: 85, }, }, }, ), ], span: Span { start: Position { line: 1160, column: 7, }, end: Position { line: 1160, column: 86, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1161, column: 8, }, end: Position { line: 1161, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1161, column: 12, }, end: Position { line: 1161, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1161, column: 16, }, end: Position { line: 1161, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/custom_hooks/post-receive.d 0700 ", span: Span { start: Position { line: 1161, column: 8, }, end: Position { line: 1161, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1161, column: 62, }, end: Position { line: 1161, column: 65, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1161, column: 66, }, end: Position { line: 1161, column: 70, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1161, column: 8, }, end: Position { line: 1161, column: 72, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1161, column: 74, }, end: Position { line: 1161, column: 77, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1161, column: 78, }, end: Position { line: 1161, column: 83, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1161, column: 8, }, end: Position { line: 1161, column: 86, }, }, }, ), ], span: Span { start: Position { line: 1161, column: 7, }, end: Position { line: 1161, column: 87, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1162, column: 8, }, end: Position { line: 1162, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1162, column: 12, }, end: Position { line: 1162, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1162, column: 16, }, end: Position { line: 1162, column: 25, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/custom_hooks/update.d 0700 ", span: Span { start: Position { line: 1162, column: 8, }, end: Position { line: 1162, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1162, column: 56, }, end: Position { line: 1162, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1162, column: 60, }, end: Position { line: 1162, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1162, column: 8, }, end: Position { line: 1162, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1162, column: 68, }, end: Position { line: 1162, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1162, column: 72, }, end: Position { line: 1162, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1162, column: 8, }, end: Position { line: 1162, column: 80, }, }, }, ), ], span: Span { start: Position { line: 1162, column: 7, }, end: Position { line: 1162, column: 81, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1163, column: 8, }, end: Position { line: 1163, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1163, column: 12, }, end: Position { line: 1163, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1163, column: 25, }, end: Position { line: 1163, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1163, column: 36, }, end: Position { line: 1163, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1163, column: 43, }, end: Position { line: 1163, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " 0750 ", span: Span { start: Position { line: 1163, column: 8, }, end: Position { line: 1163, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1163, column: 56, }, end: Position { line: 1163, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1163, column: 60, }, end: Position { line: 1163, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1163, column: 8, }, end: Position { line: 1163, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1163, column: 68, }, end: Position { line: 1163, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1163, column: 72, }, end: Position { line: 1163, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1163, column: 8, }, end: Position { line: 1163, column: 80, }, }, }, ), ], span: Span { start: Position { line: 1163, column: 7, }, end: Position { line: 1163, column: 81, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1164, column: 8, }, end: Position { line: 1164, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1164, column: 12, }, end: Position { line: 1164, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1164, column: 25, }, end: Position { line: 1164, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1164, column: 36, }, end: Position { line: 1164, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1164, column: 43, }, end: Position { line: 1164, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/artifacts 0750 ", span: Span { start: Position { line: 1164, column: 8, }, end: Position { line: 1164, column: 64, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1164, column: 66, }, end: Position { line: 1164, column: 69, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1164, column: 70, }, end: Position { line: 1164, column: 74, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1164, column: 8, }, end: Position { line: 1164, column: 76, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1164, column: 78, }, end: Position { line: 1164, column: 81, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1164, column: 82, }, end: Position { line: 1164, column: 87, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1164, column: 8, }, end: Position { line: 1164, column: 90, }, }, }, ), ], span: Span { start: Position { line: 1164, column: 7, }, end: Position { line: 1164, column: 91, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1165, column: 8, }, end: Position { line: 1165, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1165, column: 12, }, end: Position { line: 1165, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1165, column: 25, }, end: Position { line: 1165, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1165, column: 36, }, end: Position { line: 1165, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1165, column: 43, }, end: Position { line: 1165, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lfs-objects 0750 ", span: Span { start: Position { line: 1165, column: 8, }, end: Position { line: 1165, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1165, column: 68, }, end: Position { line: 1165, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1165, column: 72, }, end: Position { line: 1165, column: 76, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1165, column: 8, }, end: Position { line: 1165, column: 78, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1165, column: 80, }, end: Position { line: 1165, column: 83, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1165, column: 84, }, end: Position { line: 1165, column: 89, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1165, column: 8, }, end: Position { line: 1165, column: 92, }, }, }, ), ], span: Span { start: Position { line: 1165, column: 7, }, end: Position { line: 1165, column: 93, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1166, column: 8, }, end: Position { line: 1166, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1166, column: 12, }, end: Position { line: 1166, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1166, column: 25, }, end: Position { line: 1166, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1166, column: 36, }, end: Position { line: 1166, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1166, column: 43, }, end: Position { line: 1166, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/packages 0750 ", span: Span { start: Position { line: 1166, column: 8, }, end: Position { line: 1166, column: 63, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1166, column: 65, }, end: Position { line: 1166, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1166, column: 69, }, end: Position { line: 1166, column: 73, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1166, column: 8, }, end: Position { line: 1166, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1166, column: 77, }, end: Position { line: 1166, column: 80, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1166, column: 81, }, end: Position { line: 1166, column: 86, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1166, column: 8, }, end: Position { line: 1166, column: 89, }, }, }, ), ], span: Span { start: Position { line: 1166, column: 7, }, end: Position { line: 1166, column: 90, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1167, column: 8, }, end: Position { line: 1167, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1167, column: 12, }, end: Position { line: 1167, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1167, column: 25, }, end: Position { line: 1167, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1167, column: 36, }, end: Position { line: 1167, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1167, column: 43, }, end: Position { line: 1167, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/pages 0750 ", span: Span { start: Position { line: 1167, column: 8, }, end: Position { line: 1167, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1167, column: 62, }, end: Position { line: 1167, column: 65, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1167, column: 66, }, end: Position { line: 1167, column: 70, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1167, column: 8, }, end: Position { line: 1167, column: 72, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1167, column: 74, }, end: Position { line: 1167, column: 77, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1167, column: 78, }, end: Position { line: 1167, column: 83, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1167, column: 8, }, end: Position { line: 1167, column: 86, }, }, }, ), ], span: Span { start: Position { line: 1167, column: 7, }, end: Position { line: 1167, column: 87, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1168, column: 8, }, end: Position { line: 1168, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1168, column: 12, }, end: Position { line: 1168, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1168, column: 25, }, end: Position { line: 1168, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1168, column: 36, }, end: Position { line: 1168, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1168, column: 43, }, end: Position { line: 1168, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/registry 0750 ", span: Span { start: Position { line: 1168, column: 8, }, end: Position { line: 1168, column: 63, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1168, column: 65, }, end: Position { line: 1168, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1168, column: 69, }, end: Position { line: 1168, column: 73, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1168, column: 8, }, end: Position { line: 1168, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1168, column: 77, }, end: Position { line: 1168, column: 80, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1168, column: 81, }, end: Position { line: 1168, column: 86, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1168, column: 8, }, end: Position { line: 1168, column: 89, }, }, }, ), ], span: Span { start: Position { line: 1168, column: 7, }, end: Position { line: 1168, column: 90, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d ", span: Span { start: Position { line: 1169, column: 8, }, end: Position { line: 1169, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1169, column: 12, }, end: Position { line: 1169, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1169, column: 25, }, end: Position { line: 1169, column: 35, }, }, }, ), Raw( PartRaw { content: "shared", span: Span { start: Position { line: 1169, column: 36, }, end: Position { line: 1169, column: 42, }, }, }, ), Raw( PartRaw { content: "path", span: Span { start: Position { line: 1169, column: 43, }, end: Position { line: 1169, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/terraform_state 0750 ", span: Span { start: Position { line: 1169, column: 8, }, end: Position { line: 1169, column: 70, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1169, column: 72, }, end: Position { line: 1169, column: 75, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1169, column: 76, }, end: Position { line: 1169, column: 80, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1169, column: 8, }, end: Position { line: 1169, column: 82, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1169, column: 84, }, end: Position { line: 1169, column: 87, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1169, column: 88, }, end: Position { line: 1169, column: 93, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -", span: Span { start: Position { line: 1169, column: 8, }, end: Position { line: 1169, column: 96, }, }, }, ), ], span: Span { start: Position { line: 1169, column: 7, }, end: Position { line: 1169, column: 97, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "L+ /run/gitlab/config - - - - ", span: Span { start: Position { line: 1170, column: 8, }, end: Position { line: 1170, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1170, column: 40, }, end: Position { line: 1170, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1170, column: 44, }, end: Position { line: 1170, column: 53, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config", span: Span { start: Position { line: 1170, column: 8, }, end: Position { line: 1170, column: 61, }, }, }, ), ], span: Span { start: Position { line: 1170, column: 7, }, end: Position { line: 1170, column: 62, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "L+ /run/gitlab/log - - - - ", span: Span { start: Position { line: 1171, column: 8, }, end: Position { line: 1171, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1171, column: 37, }, end: Position { line: 1171, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1171, column: 41, }, end: Position { line: 1171, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/log", span: Span { start: Position { line: 1171, column: 8, }, end: Position { line: 1171, column: 55, }, }, }, ), ], span: Span { start: Position { line: 1171, column: 7, }, end: Position { line: 1171, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "L+ /run/gitlab/tmp - - - - ", span: Span { start: Position { line: 1172, column: 8, }, end: Position { line: 1172, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1172, column: 37, }, end: Position { line: 1172, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1172, column: 41, }, end: Position { line: 1172, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/tmp", span: Span { start: Position { line: 1172, column: 8, }, end: Position { line: 1172, column: 55, }, }, }, ), ], span: Span { start: Position { line: 1172, column: 7, }, end: Position { line: 1172, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "L+ /run/gitlab/uploads - - - - ", span: Span { start: Position { line: 1173, column: 8, }, end: Position { line: 1173, column: 55, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1173, column: 41, }, end: Position { line: 1173, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1173, column: 45, }, end: Position { line: 1173, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/uploads", span: Span { start: Position { line: 1173, column: 8, }, end: Position { line: 1173, column: 63, }, }, }, ), ], span: Span { start: Position { line: 1173, column: 7, }, end: Position { line: 1173, column: 64, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "L+ /run/gitlab/shell-config.yml - - - - ", span: Span { start: Position { line: 1175, column: 8, }, end: Position { line: 1175, column: 114, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1175, column: 50, }, end: Position { line: 1175, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 1175, column: 55, }, end: Position { line: 1175, column: 64, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "config.yml", span: Span { start: Position { line: 1175, column: 66, }, end: Position { line: 1175, column: 76, }, }, }, ), ], span: Span { start: Position { line: 1175, column: 65, }, end: Position { line: 1175, column: 77, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 1175, column: 79, }, end: Position { line: 1175, column: 87, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 1175, column: 88, }, end: Position { line: 1175, column: 94, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "gitlabShellConfig", span: Span { start: Position { line: 1175, column: 95, }, end: Position { line: 1175, column: 112, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1175, column: 7, }, end: Position { line: 1175, column: 115, }, }, }, ), ], span: Span { start: Position { line: 1143, column: 30, }, end: Position { line: 1176, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1179, column: 5, }, end: Position { line: 1179, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1179, column: 13, }, end: Position { line: 1179, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-config", span: Span { start: Position { line: 1179, column: 22, }, end: Position { line: 1179, column: 35, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1180, column: 7, }, end: Position { line: 1180, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1180, column: 21, }, end: Position { line: 1180, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1180, column: 20, }, end: Position { line: 1180, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1180, column: 18, }, end: Position { line: 1180, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1181, column: 7, }, end: Position { line: 1181, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1181, column: 19, }, end: Position { line: 1181, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1181, column: 18, }, end: Position { line: 1181, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1181, column: 16, }, end: Position { line: 1181, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1182, column: 7, }, end: Position { line: 1182, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1182, column: 19, }, end: Position { line: 1182, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "jq", span: Span { start: Position { line: 1183, column: 9, }, end: Position { line: 1183, column: 11, }, }, }, ), Identifier( Identifier { id: "openssl", span: Span { start: Position { line: 1184, column: 9, }, end: Position { line: 1184, column: 16, }, }, }, ), Identifier( Identifier { id: "replace-secret", span: Span { start: Position { line: 1185, column: 9, }, end: Position { line: 1185, column: 23, }, }, }, ), Identifier( Identifier { id: "git", span: Span { start: Position { line: 1186, column: 9, }, end: Position { line: 1186, column: 12, }, }, }, ), ], span: Span { start: Position { line: 1182, column: 25, }, end: Position { line: 1187, column: 8, }, }, }, ), span: Span { start: Position { line: 1182, column: 14, }, end: Position { line: 1187, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1188, column: 7, }, end: Position { line: 1188, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1189, column: 9, }, end: Position { line: 1189, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 1189, column: 17, }, end: Position { line: 1189, column: 24, }, }, }, ), ], span: Span { start: Position { line: 1189, column: 16, }, end: Position { line: 1189, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1190, column: 9, }, end: Position { line: 1190, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1190, column: 16, }, end: Position { line: 1190, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1190, column: 20, }, end: Position { line: 1190, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1191, column: 9, }, end: Position { line: 1191, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1191, column: 17, }, end: Position { line: 1191, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1191, column: 21, }, end: Position { line: 1191, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1192, column: 9, }, end: Position { line: 1192, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1192, column: 23, }, end: Position { line: 1192, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1192, column: 22, }, end: Position { line: 1192, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1193, column: 9, }, end: Position { line: 1193, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1193, column: 20, }, end: Position { line: 1193, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1193, column: 19, }, end: Position { line: 1193, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1194, column: 9, }, end: Position { line: 1194, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1194, column: 31, }, end: Position { line: 1194, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1194, column: 35, }, end: Position { line: 1194, column: 43, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1194, column: 44, }, end: Position { line: 1194, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab", span: Span { start: Position { line: 1194, column: 29, }, end: Position { line: 1194, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1194, column: 28, }, end: Position { line: 1194, column: 65, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RemainAfterExit", span: Span { start: Position { line: 1195, column: 9, }, end: Position { line: 1195, column: 24, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1195, column: 27, }, end: Position { line: 1195, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStartPre", span: Span { start: Position { line: 1197, column: 9, }, end: Position { line: 1197, column: 21, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preStartFullPrivileges", span: Span { start: Position { line: 1198, column: 11, }, end: Position { line: 1198, column: 33, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -o errexit -o pipefail -o nounset\nshopt -s dotglob nullglob inherit_errexit\n\nchown --no-dereference ", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 36, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1202, column: 39, }, end: Position { line: 1202, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1202, column: 43, }, end: Position { line: 1202, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "':", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 50, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1202, column: 53, }, end: Position { line: 1202, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1202, column: 57, }, end: Position { line: 1202, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 65, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1202, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1202, column: 68, }, end: Position { line: 1202, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1202, column: 72, }, end: Position { line: 1202, column: 81, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'/*\nif [[ -n \"$(ls -A ", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1203, column: 31, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1203, column: 32, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1203, column: 34, }, end: Position { line: 1203, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1203, column: 38, }, end: Position { line: 1203, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'/config/)\" ]]; then\n chown --no-dereference ", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 38, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 39, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1204, column: 41, }, end: Position { line: 1204, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1204, column: 45, }, end: Position { line: 1204, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "':", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 52, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 53, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1204, column: 55, }, end: Position { line: 1204, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1204, column: 59, }, end: Position { line: 1204, column: 64, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 67, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1204, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1204, column: 70, }, end: Position { line: 1204, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1204, column: 74, }, end: Position { line: 1204, column: 83, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "'/config/*\nfi\n", span: Span { start: Position { line: 1199, column: 1, }, end: Position { line: 1206, column: 11, }, }, }, ), ], span: Span { start: Position { line: 1198, column: 36, }, end: Position { line: 1206, column: 13, }, }, }, ), }, ), ], target: String( String_ { parts: [ Raw( PartRaw { content: "+", span: Span { start: Position { line: 1207, column: 13, }, end: Position { line: 1207, column: 96, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1207, column: 16, }, end: Position { line: 1207, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScript", span: Span { start: Position { line: 1207, column: 21, }, end: Position { line: 1207, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-pre-start-full-privileges", span: Span { start: Position { line: 1207, column: 39, }, end: Position { line: 1207, column: 71, }, }, }, ), ], span: Span { start: Position { line: 1207, column: 38, }, end: Position { line: 1207, column: 72, }, }, }, ), Identifier( Identifier { id: "preStartFullPrivileges", span: Span { start: Position { line: 1207, column: 73, }, end: Position { line: 1207, column: 95, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1207, column: 12, }, end: Position { line: 1207, column: 97, }, }, }, ), span: Span { start: Position { line: 1197, column: 24, }, end: Position { line: 1207, column: 97, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1209, column: 9, }, end: Position { line: 1209, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1209, column: 21, }, end: Position { line: 1209, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScript", span: Span { start: Position { line: 1209, column: 26, }, end: Position { line: 1209, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config", span: Span { start: Position { line: 1209, column: 44, }, end: Position { line: 1209, column: 57, }, }, }, ), ], span: Span { start: Position { line: 1209, column: 43, }, end: Position { line: 1209, column: 58, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -o errexit -o pipefail -o nounset\nshopt -s inherit_errexit\n\numask u=rwx,g=rx,o=\n\ncp -f ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1215, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1215, column: 19, }, end: Position { line: 1215, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1215, column: 23, }, end: Position { line: 1215, column: 31, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1215, column: 32, }, end: Position { line: 1215, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/VERSION ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1215, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1215, column: 63, }, end: Position { line: 1215, column: 66, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1215, column: 67, }, end: Position { line: 1215, column: 76, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/VERSION\nrm -rf ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1216, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1216, column: 20, }, end: Position { line: 1216, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1216, column: 24, }, end: Position { line: 1216, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/db/*\nrm -f ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1217, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1217, column: 19, }, end: Position { line: 1217, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1217, column: 23, }, end: Position { line: 1217, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lib\nfind ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1218, column: 16, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1218, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1218, column: 19, }, end: Position { line: 1218, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1218, column: 23, }, end: Position { line: 1218, column: 32, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/' -maxdepth 1 -mindepth 1 -type d -execdir rm -rf {} \\;\ncp -rf --no-preserve=mode ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1219, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1219, column: 39, }, end: Position { line: 1219, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1219, column: 43, }, end: Position { line: 1219, column: 51, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1219, column: 52, }, end: Position { line: 1219, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/config.dist/* ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1219, column: 87, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1219, column: 89, }, end: Position { line: 1219, column: 92, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1219, column: 93, }, end: Position { line: 1219, column: 102, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config\ncp -rf --no-preserve=mode ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1220, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1220, column: 39, }, end: Position { line: 1220, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1220, column: 43, }, end: Position { line: 1220, column: 51, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1220, column: 52, }, end: Position { line: 1220, column: 58, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/db/* ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1220, column: 78, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1220, column: 80, }, end: Position { line: 1220, column: 83, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1220, column: 84, }, end: Position { line: 1220, column: 93, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/db\nln -sf ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1221, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "extraGitlabRb", span: Span { start: Position { line: 1221, column: 20, }, end: Position { line: 1221, column: 33, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1221, column: 35, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1221, column: 37, }, end: Position { line: 1221, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1221, column: 41, }, end: Position { line: 1221, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/initializers/extra-gitlab.rb\nln -sf ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1222, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cableYml", span: Span { start: Position { line: 1222, column: 20, }, end: Position { line: 1222, column: 28, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1222, column: 30, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1222, column: 32, }, end: Position { line: 1222, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1222, column: 36, }, end: Position { line: 1222, column: 45, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/cable.yml\n\n", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1224, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1224, column: 13, }, end: Position { line: 1224, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1224, column: 17, }, end: Position { line: 1224, column: 25, }, }, }, ), Raw( PartRaw { content: "gitlab-shell", span: Span { start: Position { line: 1224, column: 26, }, end: Position { line: 1224, column: 38, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/install\n\n", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1226, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 1226, column: 13, }, end: Position { line: 1226, column: 27, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1226, column: 28, }, end: Position { line: 1226, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 1226, column: 32, }, end: Position { line: 1226, column: 36, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1226, column: 37, }, end: Position { line: 1226, column: 43, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "install -m u=rw ", span: Span { start: Position { line: 1227, column: 1, }, end: Position { line: 1227, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "smtpSettings", span: Span { start: Position { line: 1227, column: 33, }, end: Position { line: 1227, column: 45, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1227, column: 1, }, end: Position { line: 1227, column: 47, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1227, column: 49, }, end: Position { line: 1227, column: 52, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1227, column: 53, }, end: Position { line: 1227, column: 62, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/initializers/smtp_settings.rb\n", span: Span { start: Position { line: 1227, column: 1, }, end: Position { line: 1228, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 1228, column: 17, }, end: Position { line: 1228, column: 31, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1228, column: 33, }, end: Position { line: 1228, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 1228, column: 37, }, end: Position { line: 1228, column: 41, }, }, }, ), Raw( PartRaw { content: "passwordFile", span: Span { start: Position { line: 1228, column: 42, }, end: Position { line: 1228, column: 54, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 1228, column: 58, }, end: Position { line: 1228, column: 62, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "replace-secret '@smtpPassword@' ", span: Span { start: Position { line: 1229, column: 1, }, end: Position { line: 1229, column: 51, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1229, column: 1, }, end: Position { line: 1229, column: 52, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1229, column: 54, }, end: Position { line: 1229, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "smtp", span: Span { start: Position { line: 1229, column: 58, }, end: Position { line: 1229, column: 62, }, }, }, ), Raw( PartRaw { content: "passwordFile", span: Span { start: Position { line: 1229, column: 63, }, end: Position { line: 1229, column: 75, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 1229, column: 1, }, end: Position { line: 1229, column: 78, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1229, column: 1, }, end: Position { line: 1229, column: 79, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1229, column: 81, }, end: Position { line: 1229, column: 84, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1229, column: 85, }, end: Position { line: 1229, column: 94, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/initializers/smtp_settings.rb'\n", span: Span { start: Position { line: 1229, column: 1, }, end: Position { line: 1230, column: 15, }, }, }, ), ], span: Span { start: Position { line: 1228, column: 64, }, end: Position { line: 1230, column: 17, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 1227, column: 1, }, end: Position { line: 1231, column: 11, }, }, }, ), ], span: Span { start: Position { line: 1226, column: 44, }, end: Position { line: 1231, column: 13, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n(\n umask u=rwx,g=,o=\n\n openssl rand -hex 32 > ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1236, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1236, column: 38, }, end: Position { line: 1236, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1236, column: 42, }, end: Position { line: 1236, column: 51, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/gitlab_shell_secret\n\n rm -f ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1238, column: 19, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1238, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1238, column: 22, }, end: Position { line: 1238, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1238, column: 26, }, end: Position { line: 1238, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/database.yml'\n\n ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1240, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1240, column: 18, }, end: Position { line: 1240, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databasePasswordFile", span: Span { start: Position { line: 1240, column: 22, }, end: Position { line: 1240, column: 42, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 1240, column: 46, }, end: Position { line: 1240, column: 50, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "db_password=\"$(<", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1241, column: 33, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1241, column: 34, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1241, column: 36, }, end: Position { line: 1241, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databasePasswordFile", span: Span { start: Position { line: 1241, column: 40, }, end: Position { line: 1241, column: 60, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\nexport db_password\n\nif [[ -z \"$db_password\" ]]; then\n >&2 echo \"Database password was an empty string!\"\n exit 1\nfi\n\njq <", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1249, column: 21, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1249, column: 23, }, end: Position { line: 1249, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 1249, column: 28, }, end: Position { line: 1249, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "database.yml", span: Span { start: Position { line: 1249, column: 39, }, end: Position { line: 1249, column: 51, }, }, }, ), ], span: Span { start: Position { line: 1249, column: 38, }, end: Position { line: 1249, column: 52, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 1249, column: 54, }, end: Position { line: 1249, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 1249, column: 63, }, end: Position { line: 1249, column: 69, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "databaseConfig", span: Span { start: Position { line: 1249, column: 70, }, end: Position { line: 1249, column: 84, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n '.", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1250, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 1250, column: 27, }, end: Position { line: 1250, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "versionAtLeast", span: Span { start: Position { line: 1250, column: 31, }, end: Position { line: 1250, column: 45, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 1250, column: 47, }, end: Position { line: 1250, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "getVersion", span: Span { start: Position { line: 1250, column: 51, }, end: Position { line: 1250, column: 61, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1250, column: 62, }, end: Position { line: 1250, column: 65, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1250, column: 66, }, end: Position { line: 1250, column: 74, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1250, column: 75, }, end: Position { line: 1250, column: 81, }, }, }, ), ], default: None, }, ), ], }, ), String( String_ { parts: [ Raw( PartRaw { content: "15.0", span: Span { start: Position { line: 1250, column: 84, }, end: Position { line: 1250, column: 88, }, }, }, ), ], span: Span { start: Position { line: 1250, column: 83, }, end: Position { line: 1250, column: 89, }, }, }, ), ], }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "production.main", span: Span { start: Position { line: 1250, column: 96, }, end: Position { line: 1250, column: 111, }, }, }, ), ], span: Span { start: Position { line: 1250, column: 95, }, end: Position { line: 1250, column: 112, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1250, column: 119, }, end: Position { line: 1250, column: 129, }, }, }, ), ], span: Span { start: Position { line: 1250, column: 118, }, end: Position { line: 1250, column: 130, }, }, }, ), span: Span { start: Position { line: 1250, column: 24, }, end: Position { line: 1250, column: 130, }, }, }, ), }, ), Raw( PartRaw { content: ".password = $ENV.db_password' \\\n >", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1251, column: 21, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1251, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1251, column: 24, }, end: Position { line: 1251, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1251, column: 28, }, end: Position { line: 1251, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/database.yml'\n", span: Span { start: Position { line: 1241, column: 1, }, end: Position { line: 1252, column: 15, }, }, }, ), ], span: Span { start: Position { line: 1240, column: 56, }, end: Position { line: 1252, column: 17, }, }, }, ), else_: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "jq <", span: Span { start: Position { line: 1254, column: 1, }, end: Position { line: 1254, column: 21, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1254, column: 23, }, end: Position { line: 1254, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 1254, column: 28, }, end: Position { line: 1254, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "database.yml", span: Span { start: Position { line: 1254, column: 39, }, end: Position { line: 1254, column: 51, }, }, }, ), ], span: Span { start: Position { line: 1254, column: 38, }, end: Position { line: 1254, column: 52, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 1254, column: 54, }, end: Position { line: 1254, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 1254, column: 63, }, end: Position { line: 1254, column: 69, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "databaseConfig", span: Span { start: Position { line: 1254, column: 70, }, end: Position { line: 1254, column: 84, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " \\\n >", span: Span { start: Position { line: 1254, column: 1, }, end: Position { line: 1255, column: 21, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1254, column: 1, }, end: Position { line: 1255, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1255, column: 24, }, end: Position { line: 1255, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1255, column: 28, }, end: Position { line: 1255, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/database.yml'\n", span: Span { start: Position { line: 1254, column: 1, }, end: Position { line: 1256, column: 15, }, }, }, ), ], span: Span { start: Position { line: 1253, column: 20, }, end: Position { line: 1256, column: 17, }, }, }, ), span: Span { start: Position { line: 1240, column: 15, }, end: Position { line: 1256, column: 17, }, }, }, ), }, ), Raw( PartRaw { content: "\n\n ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1259, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "utils", span: Span { start: Position { line: 1259, column: 15, }, end: Position { line: 1259, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genJqSecretsReplacementSnippet", span: Span { start: Position { line: 1259, column: 21, }, end: Position { line: 1259, column: 51, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1260, column: 17, }, end: Position { line: 1260, column: 29, }, }, }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1261, column: 20, }, end: Position { line: 1261, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1261, column: 24, }, end: Position { line: 1261, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab.yml", span: Span { start: Position { line: 1261, column: 18, }, end: Position { line: 1261, column: 52, }, }, }, ), ], span: Span { start: Position { line: 1261, column: 17, }, end: Position { line: 1261, column: 53, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n rm -f ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1264, column: 19, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1264, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1264, column: 22, }, end: Position { line: 1264, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1264, column: 26, }, end: Position { line: 1264, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/secrets.yml'\n\n secret=\"$(<", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1266, column: 24, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1266, column: 25, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1266, column: 27, }, end: Position { line: 1266, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1266, column: 31, }, end: Position { line: 1266, column: 38, }, }, }, ), Raw( PartRaw { content: "secretFile", span: Span { start: Position { line: 1266, column: 39, }, end: Position { line: 1266, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\n db=\"$(<", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1267, column: 20, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1267, column: 21, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1267, column: 23, }, end: Position { line: 1267, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1267, column: 27, }, end: Position { line: 1267, column: 34, }, }, }, ), Raw( PartRaw { content: "dbFile", span: Span { start: Position { line: 1267, column: 35, }, end: Position { line: 1267, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\n otp=\"$(<", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1268, column: 21, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1268, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1268, column: 24, }, end: Position { line: 1268, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1268, column: 28, }, end: Position { line: 1268, column: 35, }, }, }, ), Raw( PartRaw { content: "otpFile", span: Span { start: Position { line: 1268, column: 36, }, end: Position { line: 1268, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\n jws=\"$(<", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1269, column: 21, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1269, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1269, column: 24, }, end: Position { line: 1269, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "secrets", span: Span { start: Position { line: 1269, column: 28, }, end: Position { line: 1269, column: 35, }, }, }, ), Raw( PartRaw { content: "jwsFile", span: Span { start: Position { line: 1269, column: 36, }, end: Position { line: 1269, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\n export secret db otp jws\n jq -n '{production: {secret_key_base: $ENV.secret,\n otp_key_base: $ENV.otp,\n db_key_base: $ENV.db,\n openid_connect_signing_key: $ENV.jws}}' \\\n > ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1275, column: 18, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1275, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1275, column: 21, }, end: Position { line: 1275, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1275, column: 25, }, end: Position { line: 1275, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/secrets.yml'\n)\n\n# We remove potentially broken links to old gitlab-shell versions\nrm -Rf ", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1279, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1279, column: 20, }, end: Position { line: 1279, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1279, column: 24, }, end: Position { line: 1279, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/repositories/**/*.git/hooks\n\ngit config --global core.autocrlf \"input\"\n", span: Span { start: Position { line: 1210, column: 1, }, end: Position { line: 1282, column: 9, }, }, }, ), ], span: Span { start: Position { line: 1209, column: 59, }, end: Position { line: 1282, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1188, column: 23, }, end: Position { line: 1283, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1179, column: 38, }, end: Position { line: 1284, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1286, column: 5, }, end: Position { line: 1286, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1286, column: 13, }, end: Position { line: 1286, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-db-config", span: Span { start: Position { line: 1286, column: 22, }, end: Position { line: 1286, column: 38, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1287, column: 7, }, end: Position { line: 1287, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1287, column: 18, }, end: Position { line: 1287, column: 39, }, }, }, ), ], span: Span { start: Position { line: 1287, column: 17, }, end: Position { line: 1287, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-postgresql.service", span: Span { start: Position { line: 1287, column: 42, }, end: Position { line: 1287, column: 67, }, }, }, ), ], span: Span { start: Position { line: 1287, column: 41, }, end: Position { line: 1287, column: 68, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1287, column: 70, }, end: Position { line: 1287, column: 88, }, }, }, ), ], span: Span { start: Position { line: 1287, column: 69, }, end: Position { line: 1287, column: 89, }, }, }, ), ], span: Span { start: Position { line: 1287, column: 15, }, end: Position { line: 1287, column: 91, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1288, column: 7, }, end: Position { line: 1288, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1289, column: 10, }, end: Position { line: 1289, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1289, column: 9, }, end: Position { line: 1289, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1288, column: 17, }, end: Position { line: 1290, column: 8, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 1290, column: 12, }, end: Position { line: 1290, column: 20, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1290, column: 22, }, end: Position { line: 1290, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 1290, column: 26, }, end: Position { line: 1290, column: 38, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 1290, column: 42, }, end: Position { line: 1290, column: 44, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1290, column: 47, }, end: Position { line: 1290, column: 65, }, }, }, ), ], span: Span { start: Position { line: 1290, column: 46, }, end: Position { line: 1290, column: 66, }, }, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 1291, column: 12, }, end: Position { line: 1291, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "databaseActuallyCreateLocally", span: Span { start: Position { line: 1291, column: 21, }, end: Position { line: 1291, column: 50, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-postgresql.service", span: Span { start: Position { line: 1291, column: 52, }, end: Position { line: 1291, column: 77, }, }, }, ), ], span: Span { start: Position { line: 1291, column: 51, }, end: Position { line: 1291, column: 78, }, }, }, ), ], }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1292, column: 7, }, end: Position { line: 1292, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1292, column: 21, }, end: Position { line: 1292, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1292, column: 20, }, end: Position { line: 1292, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1292, column: 18, }, end: Position { line: 1292, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1293, column: 7, }, end: Position { line: 1293, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1293, column: 19, }, end: Position { line: 1293, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1293, column: 18, }, end: Position { line: 1293, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1293, column: 16, }, end: Position { line: 1293, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1294, column: 7, }, end: Position { line: 1294, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1295, column: 9, }, end: Position { line: 1295, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 1295, column: 17, }, end: Position { line: 1295, column: 24, }, }, }, ), ], span: Span { start: Position { line: 1295, column: 16, }, end: Position { line: 1295, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1296, column: 9, }, end: Position { line: 1296, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1296, column: 16, }, end: Position { line: 1296, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1296, column: 20, }, end: Position { line: 1296, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1297, column: 9, }, end: Position { line: 1297, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1297, column: 17, }, end: Position { line: 1297, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1297, column: 21, }, end: Position { line: 1297, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1298, column: 9, }, end: Position { line: 1298, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1298, column: 23, }, end: Position { line: 1298, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1298, column: 22, }, end: Position { line: 1298, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1299, column: 9, }, end: Position { line: 1299, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1299, column: 20, }, end: Position { line: 1299, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1299, column: 19, }, end: Position { line: 1299, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1300, column: 9, }, end: Position { line: 1300, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1300, column: 31, }, end: Position { line: 1300, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1300, column: 35, }, end: Position { line: 1300, column: 43, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1300, column: 44, }, end: Position { line: 1300, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab", span: Span { start: Position { line: 1300, column: 29, }, end: Position { line: 1300, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1300, column: 28, }, end: Position { line: 1300, column: 65, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RemainAfterExit", span: Span { start: Position { line: 1301, column: 9, }, end: Position { line: 1301, column: 24, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 1301, column: 27, }, end: Position { line: 1301, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1303, column: 9, }, end: Position { line: 1303, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1303, column: 21, }, end: Position { line: 1303, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScript", span: Span { start: Position { line: 1303, column: 26, }, end: Position { line: 1303, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-db-config", span: Span { start: Position { line: 1303, column: 44, }, end: Position { line: 1303, column: 60, }, }, }, ), ], span: Span { start: Position { line: 1303, column: 43, }, end: Position { line: 1303, column: 61, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -o errexit -o pipefail -o nounset\nshopt -s inherit_errexit\numask u=rwx,g=rx,o=\n\ninitial_root_password=\"$(<", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1308, column: 37, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1308, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1308, column: 40, }, end: Position { line: 1308, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "initialRootPasswordFile", span: Span { start: Position { line: 1308, column: 44, }, end: Position { line: 1308, column: 67, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "')\"\n", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1309, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitlab-rake", span: Span { start: Position { line: 1309, column: 13, }, end: Position { line: 1309, column: 24, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-rake gitlab:db:configure GITLAB_ROOT_PASSWORD=\"$initial_root_password\" \\\n GITLAB_ROOT_EMAIL=", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1310, column: 80, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1310, column: 81, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1310, column: 83, }, end: Position { line: 1310, column: 86, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "initialRootEmail", span: Span { start: Position { line: 1310, column: 87, }, end: Position { line: 1310, column: 103, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "' > /dev/null\n", span: Span { start: Position { line: 1304, column: 1, }, end: Position { line: 1311, column: 9, }, }, }, ), ], span: Span { start: Position { line: 1303, column: 62, }, end: Position { line: 1311, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1294, column: 23, }, end: Position { line: 1312, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1286, column: 41, }, end: Position { line: 1313, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1315, column: 5, }, end: Position { line: 1315, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1315, column: 13, }, end: Position { line: 1315, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-sidekiq", span: Span { start: Position { line: 1315, column: 22, }, end: Position { line: 1315, column: 36, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1316, column: 7, }, end: Position { line: 1316, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1317, column: 10, }, end: Position { line: 1317, column: 24, }, }, }, ), ], span: Span { start: Position { line: 1317, column: 9, }, end: Position { line: 1317, column: 25, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "redis-gitlab.service", span: Span { start: Position { line: 1318, column: 10, }, end: Position { line: 1318, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1318, column: 9, }, end: Position { line: 1318, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1319, column: 10, }, end: Position { line: 1319, column: 28, }, }, }, ), ], span: Span { start: Position { line: 1319, column: 9, }, end: Position { line: 1319, column: 29, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1320, column: 10, }, end: Position { line: 1320, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1320, column: 9, }, end: Position { line: 1320, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-db-config.service", span: Span { start: Position { line: 1321, column: 10, }, end: Position { line: 1321, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1321, column: 9, }, end: Position { line: 1321, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1316, column: 15, }, end: Position { line: 1322, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1323, column: 7, }, end: Position { line: 1323, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "redis-gitlab.service", span: Span { start: Position { line: 1324, column: 10, }, end: Position { line: 1324, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1324, column: 9, }, end: Position { line: 1324, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1325, column: 10, }, end: Position { line: 1325, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1325, column: 9, }, end: Position { line: 1325, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-db-config.service", span: Span { start: Position { line: 1326, column: 10, }, end: Position { line: 1326, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1326, column: 9, }, end: Position { line: 1326, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1323, column: 17, }, end: Position { line: 1327, column: 8, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 1327, column: 12, }, end: Position { line: 1327, column: 20, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1327, column: 22, }, end: Position { line: 1327, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 1327, column: 26, }, end: Position { line: 1327, column: 38, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 1327, column: 42, }, end: Position { line: 1327, column: 44, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1327, column: 47, }, end: Position { line: 1327, column: 65, }, }, }, ), ], span: Span { start: Position { line: 1327, column: 46, }, end: Position { line: 1327, column: 66, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1328, column: 7, }, end: Position { line: 1328, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1328, column: 21, }, end: Position { line: 1328, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1328, column: 20, }, end: Position { line: 1328, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1328, column: 18, }, end: Position { line: 1328, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1329, column: 7, }, end: Position { line: 1329, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1329, column: 19, }, end: Position { line: 1329, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1329, column: 18, }, end: Position { line: 1329, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1329, column: 16, }, end: Position { line: 1329, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 1330, column: 7, }, end: Position { line: 1330, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1330, column: 21, }, end: Position { line: 1330, column: 30, }, }, }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1330, column: 35, }, end: Position { line: 1330, column: 48, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1330, column: 49, }, end: Position { line: 1330, column: 52, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 1330, column: 53, }, end: Position { line: 1330, column: 60, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 1330, column: 61, }, end: Position { line: 1330, column: 73, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 1330, column: 74, }, end: Position { line: 1330, column: 80, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SIDEKIQ_MEMORY_KILLER_MAX_RSS", span: Span { start: Position { line: 1331, column: 9, }, end: Position { line: 1331, column: 38, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1331, column: 41, }, end: Position { line: 1331, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 1331, column: 45, }, end: Position { line: 1331, column: 52, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 1331, column: 53, }, end: Position { line: 1331, column: 65, }, }, }, ), Raw( PartRaw { content: "maxMemory", span: Span { start: Position { line: 1331, column: 66, }, end: Position { line: 1331, column: 75, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SIDEKIQ_MEMORY_KILLER_GRACE_TIME", span: Span { start: Position { line: 1332, column: 9, }, end: Position { line: 1332, column: 41, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1332, column: 44, }, end: Position { line: 1332, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 1332, column: 48, }, end: Position { line: 1332, column: 55, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 1332, column: 56, }, end: Position { line: 1332, column: 68, }, }, }, ), Raw( PartRaw { content: "graceTime", span: Span { start: Position { line: 1332, column: 69, }, end: Position { line: 1332, column: 78, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SIDEKIQ_MEMORY_KILLER_SHUTDOWN_WAIT", span: Span { start: Position { line: 1333, column: 9, }, end: Position { line: 1333, column: 44, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1333, column: 47, }, end: Position { line: 1333, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "sidekiq", span: Span { start: Position { line: 1333, column: 51, }, end: Position { line: 1333, column: 58, }, }, }, ), Raw( PartRaw { content: "memoryKiller", span: Span { start: Position { line: 1333, column: 59, }, end: Position { line: 1333, column: 71, }, }, }, ), Raw( PartRaw { content: "shutdownWait", span: Span { start: Position { line: 1333, column: 72, }, end: Position { line: 1333, column: 84, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1330, column: 81, }, end: Position { line: 1334, column: 8, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1335, column: 7, }, end: Position { line: 1335, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1335, column: 19, }, end: Position { line: 1335, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "postgresqlPackage", span: Span { start: Position { line: 1336, column: 9, }, end: Position { line: 1336, column: 26, }, }, }, ), Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 1337, column: 9, }, end: Position { line: 1337, column: 19, }, }, }, ), Identifier( Identifier { id: "ruby", span: Span { start: Position { line: 1338, column: 9, }, end: Position { line: 1338, column: 13, }, }, }, ), Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 1339, column: 9, }, end: Position { line: 1339, column: 16, }, }, }, ), Identifier( Identifier { id: "nodejs", span: Span { start: Position { line: 1340, column: 9, }, end: Position { line: 1340, column: 15, }, }, }, ), Identifier( Identifier { id: "gnupg", span: Span { start: Position { line: 1341, column: 9, }, end: Position { line: 1341, column: 14, }, }, }, ), Identifier( Identifier { id: "gnutar", span: Span { start: Position { line: 1344, column: 9, }, end: Position { line: 1344, column: 15, }, }, }, ), Identifier( Identifier { id: "gzip", span: Span { start: Position { line: 1345, column: 9, }, end: Position { line: 1345, column: 13, }, }, }, ), Identifier( Identifier { id: "procps", span: Span { start: Position { line: 1347, column: 9, }, end: Position { line: 1347, column: 15, }, }, }, ), ], span: Span { start: Position { line: 1335, column: 25, }, end: Position { line: 1348, column: 8, }, }, }, ), span: Span { start: Position { line: 1335, column: 14, }, end: Position { line: 1348, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1349, column: 7, }, end: Position { line: 1349, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1350, column: 9, }, end: Position { line: 1350, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "simple", span: Span { start: Position { line: 1350, column: 17, }, end: Position { line: 1350, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1350, column: 16, }, end: Position { line: 1350, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1351, column: 9, }, end: Position { line: 1351, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1351, column: 16, }, end: Position { line: 1351, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1351, column: 20, }, end: Position { line: 1351, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1352, column: 9, }, end: Position { line: 1352, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1352, column: 17, }, end: Position { line: 1352, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1352, column: 21, }, end: Position { line: 1352, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1353, column: 9, }, end: Position { line: 1353, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1353, column: 23, }, end: Position { line: 1353, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1353, column: 22, }, end: Position { line: 1353, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1354, column: 9, }, end: Position { line: 1354, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "always", span: Span { start: Position { line: 1354, column: 20, }, end: Position { line: 1354, column: 26, }, }, }, ), ], span: Span { start: Position { line: 1354, column: 19, }, end: Position { line: 1354, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1355, column: 9, }, end: Position { line: 1355, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1355, column: 31, }, end: Position { line: 1355, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1355, column: 35, }, end: Position { line: 1355, column: 43, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1355, column: 44, }, end: Position { line: 1355, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab", span: Span { start: Position { line: 1355, column: 29, }, end: Position { line: 1355, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1355, column: 28, }, end: Position { line: 1355, column: 65, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1356, column: 9, }, end: Position { line: 1356, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1356, column: 22, }, end: Position { line: 1356, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1356, column: 26, }, end: Position { line: 1356, column: 34, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1356, column: 35, }, end: Position { line: 1356, column: 41, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 1356, column: 42, }, end: Position { line: 1356, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/sidekiq -C \"", span: Span { start: Position { line: 1356, column: 20, }, end: Position { line: 1356, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1356, column: 70, }, end: Position { line: 1356, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1356, column: 74, }, end: Position { line: 1356, column: 82, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1356, column: 83, }, end: Position { line: 1356, column: 89, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/config/sidekiq_queues.yml\" -e production", span: Span { start: Position { line: 1356, column: 20, }, end: Position { line: 1356, column: 145, }, }, }, ), ], span: Span { start: Position { line: 1356, column: 19, }, end: Position { line: 1356, column: 146, }, }, }, ), }, ), ], span: Span { start: Position { line: 1349, column: 23, }, end: Position { line: 1357, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1315, column: 39, }, end: Position { line: 1358, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1360, column: 5, }, end: Position { line: 1360, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1360, column: 13, }, end: Position { line: 1360, column: 21, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 1360, column: 22, }, end: Position { line: 1360, column: 28, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1361, column: 7, }, end: Position { line: 1361, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1361, column: 18, }, end: Position { line: 1361, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1361, column: 17, }, end: Position { line: 1361, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1361, column: 35, }, end: Position { line: 1361, column: 56, }, }, }, ), ], span: Span { start: Position { line: 1361, column: 34, }, end: Position { line: 1361, column: 57, }, }, }, ), ], span: Span { start: Position { line: 1361, column: 15, }, end: Position { line: 1361, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1362, column: 7, }, end: Position { line: 1362, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1362, column: 20, }, end: Position { line: 1362, column: 41, }, }, }, ), ], span: Span { start: Position { line: 1362, column: 19, }, end: Position { line: 1362, column: 42, }, }, }, ), ], span: Span { start: Position { line: 1362, column: 17, }, end: Position { line: 1362, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1363, column: 7, }, end: Position { line: 1363, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1363, column: 21, }, end: Position { line: 1363, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1363, column: 20, }, end: Position { line: 1363, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1363, column: 18, }, end: Position { line: 1363, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1364, column: 7, }, end: Position { line: 1364, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1364, column: 19, }, end: Position { line: 1364, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1364, column: 18, }, end: Position { line: 1364, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1364, column: 16, }, end: Position { line: 1364, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1365, column: 7, }, end: Position { line: 1365, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1365, column: 19, }, end: Position { line: 1365, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 1366, column: 9, }, end: Position { line: 1366, column: 16, }, }, }, ), Identifier( Identifier { id: "procps", span: Span { start: Position { line: 1367, column: 9, }, end: Position { line: 1367, column: 15, }, }, }, ), Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 1368, column: 9, }, end: Position { line: 1368, column: 19, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1369, column: 9, }, end: Position { line: 1369, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1369, column: 13, }, end: Position { line: 1369, column: 21, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 1369, column: 22, }, end: Position { line: 1369, column: 28, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 1369, column: 29, }, end: Position { line: 1369, column: 36, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1370, column: 9, }, end: Position { line: 1370, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1370, column: 13, }, end: Position { line: 1370, column: 21, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 1370, column: 22, }, end: Position { line: 1370, column: 28, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 1370, column: 29, }, end: Position { line: 1370, column: 36, }, }, }, ), Raw( PartRaw { content: "wrappedRuby", span: Span { start: Position { line: 1370, column: 37, }, end: Position { line: 1370, column: 48, }, }, }, ), ], default: None, }, ), Identifier( Identifier { id: "gzip", span: Span { start: Position { line: 1371, column: 9, }, end: Position { line: 1371, column: 13, }, }, }, ), Identifier( Identifier { id: "bzip2", span: Span { start: Position { line: 1372, column: 9, }, end: Position { line: 1372, column: 14, }, }, }, ), ], span: Span { start: Position { line: 1365, column: 25, }, end: Position { line: 1373, column: 8, }, }, }, ), span: Span { start: Position { line: 1365, column: 14, }, end: Position { line: 1373, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1374, column: 7, }, end: Position { line: 1374, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1375, column: 9, }, end: Position { line: 1375, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "simple", span: Span { start: Position { line: 1375, column: 17, }, end: Position { line: 1375, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1375, column: 16, }, end: Position { line: 1375, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1376, column: 9, }, end: Position { line: 1376, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1376, column: 16, }, end: Position { line: 1376, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1376, column: 20, }, end: Position { line: 1376, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1377, column: 9, }, end: Position { line: 1377, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1377, column: 17, }, end: Position { line: 1377, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1377, column: 21, }, end: Position { line: 1377, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1378, column: 9, }, end: Position { line: 1378, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1378, column: 23, }, end: Position { line: 1378, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1378, column: 22, }, end: Position { line: 1378, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1379, column: 9, }, end: Position { line: 1379, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1379, column: 20, }, end: Position { line: 1379, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1379, column: 19, }, end: Position { line: 1379, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1380, column: 9, }, end: Position { line: 1380, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1380, column: 28, }, end: Position { line: 1380, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1380, column: 38, }, end: Position { line: 1380, column: 42, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1381, column: 9, }, end: Position { line: 1381, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1381, column: 24, }, end: Position { line: 1381, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1381, column: 28, }, end: Position { line: 1381, column: 36, }, }, }, ), Raw( PartRaw { content: "gitaly", span: Span { start: Position { line: 1381, column: 37, }, end: Position { line: 1381, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/gitaly ", span: Span { start: Position { line: 1381, column: 22, }, end: Position { line: 1381, column: 56, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitalyToml", span: Span { start: Position { line: 1381, column: 58, }, end: Position { line: 1381, column: 68, }, }, }, ), }, ), ], span: Span { start: Position { line: 1381, column: 21, }, end: Position { line: 1381, column: 70, }, }, }, ), }, ), ], span: Span { start: Position { line: 1374, column: 23, }, end: Position { line: 1382, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1360, column: 31, }, end: Position { line: 1383, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1385, column: 5, }, end: Position { line: 1385, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1385, column: 13, }, end: Position { line: 1385, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-pages", span: Span { start: Position { line: 1385, column: 22, }, end: Position { line: 1385, column: 34, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 1385, column: 37, }, end: Position { line: 1385, column: 41, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1385, column: 43, }, end: Position { line: 1385, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1385, column: 56, }, end: Position { line: 1385, column: 66, }, }, }, ), Raw( PartRaw { content: "pages", span: Span { start: Position { line: 1385, column: 67, }, end: Position { line: 1385, column: 72, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 1385, column: 73, }, end: Position { line: 1385, column: 80, }, }, }, ), ], default: Some( Identifier( Identifier { id: "false", span: Span { start: Position { line: 1385, column: 84, }, end: Position { line: 1385, column: 89, }, }, }, ), ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 1386, column: 7, }, end: Position { line: 1386, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "GitLab static pages daemon", span: Span { start: Position { line: 1386, column: 22, }, end: Position { line: 1386, column: 48, }, }, }, ), ], span: Span { start: Position { line: 1386, column: 21, }, end: Position { line: 1386, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1387, column: 7, }, end: Position { line: 1387, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1387, column: 18, }, end: Position { line: 1387, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1387, column: 17, }, end: Position { line: 1387, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1387, column: 35, }, end: Position { line: 1387, column: 56, }, }, }, ), ], span: Span { start: Position { line: 1387, column: 34, }, end: Position { line: 1387, column: 57, }, }, }, ), ], span: Span { start: Position { line: 1387, column: 15, }, end: Position { line: 1387, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1388, column: 7, }, end: Position { line: 1388, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1388, column: 20, }, end: Position { line: 1388, column: 41, }, }, }, ), ], span: Span { start: Position { line: 1388, column: 19, }, end: Position { line: 1388, column: 42, }, }, }, ), ], span: Span { start: Position { line: 1388, column: 17, }, end: Position { line: 1388, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1389, column: 7, }, end: Position { line: 1389, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1389, column: 21, }, end: Position { line: 1389, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1389, column: 20, }, end: Position { line: 1389, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1389, column: 18, }, end: Position { line: 1389, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1390, column: 7, }, end: Position { line: 1390, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1390, column: 19, }, end: Position { line: 1390, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1390, column: 18, }, end: Position { line: 1390, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1390, column: 16, }, end: Position { line: 1390, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1392, column: 7, }, end: Position { line: 1392, column: 11, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1392, column: 16, }, end: Position { line: 1392, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "unzip", span: Span { start: Position { line: 1392, column: 21, }, end: Position { line: 1392, column: 26, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 1392, column: 14, }, end: Position { line: 1392, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1394, column: 7, }, end: Position { line: 1394, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1395, column: 9, }, end: Position { line: 1395, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "simple", span: Span { start: Position { line: 1395, column: 17, }, end: Position { line: 1395, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1395, column: 16, }, end: Position { line: 1395, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1396, column: 9, }, end: Position { line: 1396, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1396, column: 23, }, end: Position { line: 1396, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1396, column: 22, }, end: Position { line: 1396, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1397, column: 9, }, end: Position { line: 1397, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1397, column: 20, }, end: Position { line: 1397, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1397, column: 19, }, end: Position { line: 1397, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1399, column: 9, }, end: Position { line: 1399, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1399, column: 16, }, end: Position { line: 1399, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1399, column: 20, }, end: Position { line: 1399, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1400, column: 9, }, end: Position { line: 1400, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1400, column: 17, }, end: Position { line: 1400, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1400, column: 21, }, end: Position { line: 1400, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1402, column: 9, }, end: Position { line: 1402, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1402, column: 24, }, end: Position { line: 1402, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1402, column: 28, }, end: Position { line: 1402, column: 36, }, }, }, ), Raw( PartRaw { content: "pages", span: Span { start: Position { line: 1402, column: 37, }, end: Position { line: 1402, column: 42, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-pages ", span: Span { start: Position { line: 1402, column: 22, }, end: Position { line: 1402, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArgs", span: Span { start: Position { line: 1402, column: 63, }, end: Position { line: 1402, column: 78, }, }, }, ), arguments: [ Identifier( Identifier { id: "pagesArgs", span: Span { start: Position { line: 1402, column: 79, }, end: Position { line: 1402, column: 88, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1402, column: 21, }, end: Position { line: 1402, column: 90, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1403, column: 9, }, end: Position { line: 1403, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1403, column: 28, }, end: Position { line: 1403, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1403, column: 38, }, end: Position { line: 1403, column: 42, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1394, column: 23, }, end: Position { line: 1404, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1385, column: 91, }, end: Position { line: 1405, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1407, column: 5, }, end: Position { line: 1407, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1407, column: 13, }, end: Position { line: 1407, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-workhorse", span: Span { start: Position { line: 1407, column: 22, }, end: Position { line: 1407, column: 38, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1408, column: 7, }, end: Position { line: 1408, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1408, column: 18, }, end: Position { line: 1408, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1408, column: 17, }, end: Position { line: 1408, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1408, column: 15, }, end: Position { line: 1408, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1409, column: 7, }, end: Position { line: 1409, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1409, column: 21, }, end: Position { line: 1409, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1409, column: 20, }, end: Position { line: 1409, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1409, column: 18, }, end: Position { line: 1409, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1410, column: 7, }, end: Position { line: 1410, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1410, column: 19, }, end: Position { line: 1410, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1410, column: 18, }, end: Position { line: 1410, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1410, column: 16, }, end: Position { line: 1410, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1411, column: 7, }, end: Position { line: 1411, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1411, column: 19, }, end: Position { line: 1411, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "remarshal", span: Span { start: Position { line: 1412, column: 9, }, end: Position { line: 1412, column: 18, }, }, }, ), Identifier( Identifier { id: "exiftool", span: Span { start: Position { line: 1413, column: 9, }, end: Position { line: 1413, column: 17, }, }, }, ), Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 1414, column: 9, }, end: Position { line: 1414, column: 19, }, }, }, ), Identifier( Identifier { id: "gnutar", span: Span { start: Position { line: 1415, column: 9, }, end: Position { line: 1415, column: 15, }, }, }, ), Identifier( Identifier { id: "gzip", span: Span { start: Position { line: 1416, column: 9, }, end: Position { line: 1416, column: 13, }, }, }, ), Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 1417, column: 9, }, end: Position { line: 1417, column: 16, }, }, }, ), Identifier( Identifier { id: "gitlab-workhorse", span: Span { start: Position { line: 1418, column: 9, }, end: Position { line: 1418, column: 25, }, }, }, ), ], span: Span { start: Position { line: 1411, column: 25, }, end: Position { line: 1419, column: 8, }, }, }, ), span: Span { start: Position { line: 1411, column: 14, }, end: Position { line: 1419, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1420, column: 7, }, end: Position { line: 1420, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1421, column: 9, }, end: Position { line: 1421, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "simple", span: Span { start: Position { line: 1421, column: 17, }, end: Position { line: 1421, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1421, column: 16, }, end: Position { line: 1421, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1422, column: 9, }, end: Position { line: 1422, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1422, column: 16, }, end: Position { line: 1422, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1422, column: 20, }, end: Position { line: 1422, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1423, column: 9, }, end: Position { line: 1423, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1423, column: 17, }, end: Position { line: 1423, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1423, column: 21, }, end: Position { line: 1423, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1424, column: 9, }, end: Position { line: 1424, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1424, column: 23, }, end: Position { line: 1424, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1424, column: 22, }, end: Position { line: 1424, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1425, column: 9, }, end: Position { line: 1425, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1425, column: 20, }, end: Position { line: 1425, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1425, column: 19, }, end: Position { line: 1425, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1426, column: 9, }, end: Position { line: 1426, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1426, column: 28, }, end: Position { line: 1426, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1426, column: 38, }, end: Position { line: 1426, column: 42, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStartPre", span: Span { start: Position { line: 1427, column: 9, }, end: Position { line: 1427, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1427, column: 24, }, end: Position { line: 1427, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScript", span: Span { start: Position { line: 1427, column: 29, }, end: Position { line: 1427, column: 45, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-workhorse-pre-start", span: Span { start: Position { line: 1427, column: 47, }, end: Position { line: 1427, column: 73, }, }, }, ), ], span: Span { start: Position { line: 1427, column: 46, }, end: Position { line: 1427, column: 74, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "set -o errexit -o pipefail -o nounset\nshopt -s dotglob nullglob inherit_errexit\n\n", span: Span { start: Position { line: 1428, column: 1, }, end: Position { line: 1431, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "utils", span: Span { start: Position { line: 1431, column: 13, }, end: Position { line: 1431, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genJqSecretsReplacementSnippet", span: Span { start: Position { line: 1431, column: 19, }, end: Position { line: 1431, column: 49, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1432, column: 15, }, end: Position { line: 1432, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "workhorse", span: Span { start: Position { line: 1432, column: 19, }, end: Position { line: 1432, column: 28, }, }, }, ), Raw( PartRaw { content: "config", span: Span { start: Position { line: 1432, column: 29, }, end: Position { line: 1432, column: 35, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1433, column: 18, }, end: Position { line: 1433, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1433, column: 22, }, end: Position { line: 1433, column: 31, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab-workhorse.json", span: Span { start: Position { line: 1433, column: 16, }, end: Position { line: 1433, column: 61, }, }, }, ), ], span: Span { start: Position { line: 1433, column: 15, }, end: Position { line: 1433, column: 62, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\njson2toml \"", span: Span { start: Position { line: 1428, column: 1, }, end: Position { line: 1435, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1435, column: 24, }, end: Position { line: 1435, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1435, column: 28, }, end: Position { line: 1435, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab-workhorse.json\" \"", span: Span { start: Position { line: 1428, column: 1, }, end: Position { line: 1435, column: 70, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1435, column: 72, }, end: Position { line: 1435, column: 75, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1435, column: 76, }, end: Position { line: 1435, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab-workhorse.toml\"\nrm \"", span: Span { start: Position { line: 1428, column: 1, }, end: Position { line: 1436, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1436, column: 17, }, end: Position { line: 1436, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1436, column: 21, }, end: Position { line: 1436, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab-workhorse.json\"\n", span: Span { start: Position { line: 1428, column: 1, }, end: Position { line: 1437, column: 9, }, }, }, ), ], span: Span { start: Position { line: 1427, column: 75, }, end: Position { line: 1437, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1438, column: 9, }, end: Position { line: 1438, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1439, column: 14, }, end: Position { line: 1439, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1439, column: 18, }, end: Position { line: 1439, column: 26, }, }, }, ), Raw( PartRaw { content: "gitlab-workhorse", span: Span { start: Position { line: 1439, column: 27, }, end: Position { line: 1439, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/workhorse ", span: Span { start: Position { line: 1439, column: 12, }, end: Position { line: 1439, column: 59, }, }, }, ), ], span: Span { start: Position { line: 1439, column: 11, }, end: Position { line: 1439, column: 60, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-listenUmask 0 ", span: Span { start: Position { line: 1440, column: 14, }, end: Position { line: 1440, column: 29, }, }, }, ), ], span: Span { start: Position { line: 1440, column: 13, }, end: Position { line: 1440, column: 30, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-listenNetwork unix ", span: Span { start: Position { line: 1441, column: 14, }, end: Position { line: 1441, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1441, column: 13, }, end: Position { line: 1441, column: 35, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-listenAddr /run/gitlab/gitlab-workhorse.socket ", span: Span { start: Position { line: 1442, column: 14, }, end: Position { line: 1442, column: 62, }, }, }, ), ], span: Span { start: Position { line: 1442, column: 13, }, end: Position { line: 1442, column: 63, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-authSocket ", span: Span { start: Position { line: 1443, column: 14, }, end: Position { line: 1443, column: 41, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitlabSocket", span: Span { start: Position { line: 1443, column: 28, }, end: Position { line: 1443, column: 40, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 1443, column: 14, }, end: Position { line: 1443, column: 42, }, }, }, ), ], span: Span { start: Position { line: 1443, column: 13, }, end: Position { line: 1443, column: 43, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-documentRoot ", span: Span { start: Position { line: 1444, column: 14, }, end: Position { line: 1444, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1444, column: 30, }, end: Position { line: 1444, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1444, column: 34, }, end: Position { line: 1444, column: 42, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1444, column: 43, }, end: Position { line: 1444, column: 49, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab/public ", span: Span { start: Position { line: 1444, column: 14, }, end: Position { line: 1444, column: 71, }, }, }, ), ], span: Span { start: Position { line: 1444, column: 13, }, end: Position { line: 1444, column: 72, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-config ", span: Span { start: Position { line: 1445, column: 14, }, end: Position { line: 1445, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1445, column: 24, }, end: Position { line: 1445, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1445, column: 28, }, end: Position { line: 1445, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/gitlab-workhorse.toml ", span: Span { start: Position { line: 1445, column: 14, }, end: Position { line: 1445, column: 68, }, }, }, ), ], span: Span { start: Position { line: 1445, column: 13, }, end: Position { line: 1445, column: 69, }, }, }, ), }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "-secretPath ", span: Span { start: Position { line: 1446, column: 14, }, end: Position { line: 1446, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1446, column: 28, }, end: Position { line: 1446, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1446, column: 32, }, end: Position { line: 1446, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/.gitlab_workhorse_secret", span: Span { start: Position { line: 1446, column: 14, }, end: Position { line: 1446, column: 67, }, }, }, ), ], span: Span { start: Position { line: 1446, column: 13, }, end: Position { line: 1446, column: 68, }, }, }, ), }, ), }, ), ], span: Span { start: Position { line: 1420, column: 23, }, end: Position { line: 1447, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1407, column: 41, }, end: Position { line: 1448, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1450, column: 5, }, end: Position { line: 1450, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1450, column: 13, }, end: Position { line: 1450, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-mailroom", span: Span { start: Position { line: 1450, column: 22, }, end: Position { line: 1450, column: 37, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 1450, column: 40, }, end: Position { line: 1450, column: 44, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabConfig", span: Span { start: Position { line: 1450, column: 46, }, end: Position { line: 1450, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1450, column: 59, }, end: Position { line: 1450, column: 69, }, }, }, ), Raw( PartRaw { content: "incoming_email", span: Span { start: Position { line: 1450, column: 70, }, end: Position { line: 1450, column: 84, }, }, }, ), Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 1450, column: 85, }, end: Position { line: 1450, column: 92, }, }, }, ), ], default: Some( Identifier( Identifier { id: "false", span: Span { start: Position { line: 1450, column: 96, }, end: Position { line: 1450, column: 101, }, }, }, ), ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 1451, column: 7, }, end: Position { line: 1451, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "GitLab incoming mail daemon", span: Span { start: Position { line: 1451, column: 22, }, end: Position { line: 1451, column: 49, }, }, }, ), ], span: Span { start: Position { line: 1451, column: 21, }, end: Position { line: 1451, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1452, column: 7, }, end: Position { line: 1452, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1452, column: 18, }, end: Position { line: 1452, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1452, column: 17, }, end: Position { line: 1452, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "redis-gitlab.service", span: Span { start: Position { line: 1452, column: 35, }, end: Position { line: 1452, column: 55, }, }, }, ), ], span: Span { start: Position { line: 1452, column: 34, }, end: Position { line: 1452, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1452, column: 58, }, end: Position { line: 1452, column: 79, }, }, }, ), ], span: Span { start: Position { line: 1452, column: 57, }, end: Position { line: 1452, column: 80, }, }, }, ), ], span: Span { start: Position { line: 1452, column: 15, }, end: Position { line: 1452, column: 82, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1453, column: 7, }, end: Position { line: 1453, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1453, column: 20, }, end: Position { line: 1453, column: 41, }, }, }, ), ], span: Span { start: Position { line: 1453, column: 19, }, end: Position { line: 1453, column: 42, }, }, }, ), ], span: Span { start: Position { line: 1453, column: 17, }, end: Position { line: 1453, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1454, column: 7, }, end: Position { line: 1454, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1454, column: 21, }, end: Position { line: 1454, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1454, column: 20, }, end: Position { line: 1454, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1454, column: 18, }, end: Position { line: 1454, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1455, column: 7, }, end: Position { line: 1455, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1455, column: 19, }, end: Position { line: 1455, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1455, column: 18, }, end: Position { line: 1455, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1455, column: 16, }, end: Position { line: 1455, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 1456, column: 7, }, end: Position { line: 1456, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1456, column: 21, }, end: Position { line: 1456, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1457, column: 7, }, end: Position { line: 1457, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1458, column: 9, }, end: Position { line: 1458, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "simple", span: Span { start: Position { line: 1458, column: 17, }, end: Position { line: 1458, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1458, column: 16, }, end: Position { line: 1458, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1459, column: 9, }, end: Position { line: 1459, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1459, column: 23, }, end: Position { line: 1459, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1459, column: 22, }, end: Position { line: 1459, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1460, column: 9, }, end: Position { line: 1460, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1460, column: 20, }, end: Position { line: 1460, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1460, column: 19, }, end: Position { line: 1460, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1462, column: 9, }, end: Position { line: 1462, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1462, column: 16, }, end: Position { line: 1462, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1462, column: 20, }, end: Position { line: 1462, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1463, column: 9, }, end: Position { line: 1463, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1463, column: 17, }, end: Position { line: 1463, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1463, column: 21, }, end: Position { line: 1463, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1464, column: 9, }, end: Position { line: 1464, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1464, column: 24, }, end: Position { line: 1464, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1464, column: 28, }, end: Position { line: 1464, column: 36, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1464, column: 37, }, end: Position { line: 1464, column: 43, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 1464, column: 44, }, end: Position { line: 1464, column: 51, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/bundle exec mail_room -c ", span: Span { start: Position { line: 1464, column: 22, }, end: Position { line: 1464, column: 82, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1464, column: 84, }, end: Position { line: 1464, column: 87, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1464, column: 88, }, end: Position { line: 1464, column: 97, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/mail_room.yml", span: Span { start: Position { line: 1464, column: 22, }, end: Position { line: 1464, column: 119, }, }, }, ), ], span: Span { start: Position { line: 1464, column: 21, }, end: Position { line: 1464, column: 120, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1465, column: 9, }, end: Position { line: 1465, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1465, column: 28, }, end: Position { line: 1465, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 1465, column: 38, }, end: Position { line: 1465, column: 42, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1457, column: 23, }, end: Position { line: 1466, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1450, column: 103, }, end: Position { line: 1467, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1469, column: 5, }, end: Position { line: 1469, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1469, column: 13, }, end: Position { line: 1469, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1469, column: 22, }, end: Position { line: 1469, column: 28, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1470, column: 7, }, end: Position { line: 1470, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-workhorse.service", span: Span { start: Position { line: 1471, column: 10, }, end: Position { line: 1471, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1471, column: 9, }, end: Position { line: 1471, column: 35, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 1472, column: 10, }, end: Position { line: 1472, column: 24, }, }, }, ), ], span: Span { start: Position { line: 1472, column: 9, }, end: Position { line: 1472, column: 25, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "redis-gitlab.service", span: Span { start: Position { line: 1473, column: 10, }, end: Position { line: 1473, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1473, column: 9, }, end: Position { line: 1473, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1474, column: 10, }, end: Position { line: 1474, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1474, column: 9, }, end: Position { line: 1474, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-db-config.service", span: Span { start: Position { line: 1475, column: 10, }, end: Position { line: 1475, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1475, column: 9, }, end: Position { line: 1475, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1470, column: 15, }, end: Position { line: 1476, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1477, column: 7, }, end: Position { line: 1477, column: 14, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "redis-gitlab.service", span: Span { start: Position { line: 1478, column: 10, }, end: Position { line: 1478, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1478, column: 9, }, end: Position { line: 1478, column: 31, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-config.service", span: Span { start: Position { line: 1479, column: 10, }, end: Position { line: 1479, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1479, column: 9, }, end: Position { line: 1479, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-db-config.service", span: Span { start: Position { line: 1480, column: 10, }, end: Position { line: 1480, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1480, column: 9, }, end: Position { line: 1480, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1477, column: 17, }, end: Position { line: 1481, column: 8, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 1481, column: 12, }, end: Position { line: 1481, column: 20, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1481, column: 22, }, end: Position { line: 1481, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "databaseHost", span: Span { start: Position { line: 1481, column: 26, }, end: Position { line: 1481, column: 38, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 1481, column: 42, }, end: Position { line: 1481, column: 44, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "postgresql.service", span: Span { start: Position { line: 1481, column: 47, }, end: Position { line: 1481, column: 65, }, }, }, ), ], span: Span { start: Position { line: 1481, column: 46, }, end: Position { line: 1481, column: 66, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 1482, column: 7, }, end: Position { line: 1482, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1482, column: 21, }, end: Position { line: 1482, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1482, column: 20, }, end: Position { line: 1482, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1482, column: 18, }, end: Position { line: 1482, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partOf", span: Span { start: Position { line: 1483, column: 7, }, end: Position { line: 1483, column: 13, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.target", span: Span { start: Position { line: 1483, column: 19, }, end: Position { line: 1483, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1483, column: 18, }, end: Position { line: 1483, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1483, column: 16, }, end: Position { line: 1483, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 1484, column: 7, }, end: Position { line: 1484, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "gitlabEnv", span: Span { start: Position { line: 1484, column: 21, }, end: Position { line: 1484, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 1485, column: 7, }, end: Position { line: 1485, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 1485, column: 19, }, end: Position { line: 1485, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "postgresqlPackage", span: Span { start: Position { line: 1486, column: 9, }, end: Position { line: 1486, column: 26, }, }, }, ), Identifier( Identifier { id: "gitPackage", span: Span { start: Position { line: 1487, column: 9, }, end: Position { line: 1487, column: 19, }, }, }, ), Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 1488, column: 9, }, end: Position { line: 1488, column: 16, }, }, }, ), Identifier( Identifier { id: "nodejs", span: Span { start: Position { line: 1489, column: 9, }, end: Position { line: 1489, column: 15, }, }, }, ), Identifier( Identifier { id: "procps", span: Span { start: Position { line: 1490, column: 9, }, end: Position { line: 1490, column: 15, }, }, }, ), Identifier( Identifier { id: "gnupg", span: Span { start: Position { line: 1491, column: 9, }, end: Position { line: 1491, column: 14, }, }, }, ), ], span: Span { start: Position { line: 1485, column: 25, }, end: Position { line: 1492, column: 8, }, }, }, ), span: Span { start: Position { line: 1485, column: 14, }, end: Position { line: 1492, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1493, column: 7, }, end: Position { line: 1493, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 1494, column: 9, }, end: Position { line: 1494, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "notify", span: Span { start: Position { line: 1494, column: 17, }, end: Position { line: 1494, column: 23, }, }, }, ), ], span: Span { start: Position { line: 1494, column: 16, }, end: Position { line: 1494, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1495, column: 9, }, end: Position { line: 1495, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1495, column: 16, }, end: Position { line: 1495, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1495, column: 20, }, end: Position { line: 1495, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1496, column: 9, }, end: Position { line: 1496, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1496, column: 17, }, end: Position { line: 1496, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1496, column: 21, }, end: Position { line: 1496, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutSec", span: Span { start: Position { line: 1497, column: 9, }, end: Position { line: 1497, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 1497, column: 23, }, end: Position { line: 1497, column: 31, }, }, }, ), ], span: Span { start: Position { line: 1497, column: 22, }, end: Position { line: 1497, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 1498, column: 9, }, end: Position { line: 1498, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 1498, column: 20, }, end: Position { line: 1498, column: 30, }, }, }, ), ], span: Span { start: Position { line: 1498, column: 19, }, end: Position { line: 1498, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "WorkingDirectory", span: Span { start: Position { line: 1499, column: 9, }, end: Position { line: 1499, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1499, column: 31, }, end: Position { line: 1499, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1499, column: 35, }, end: Position { line: 1499, column: 43, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1499, column: 44, }, end: Position { line: 1499, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/gitlab", span: Span { start: Position { line: 1499, column: 29, }, end: Position { line: 1499, column: 64, }, }, }, ), ], span: Span { start: Position { line: 1499, column: 28, }, end: Position { line: 1499, column: 65, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1500, column: 9, }, end: Position { line: 1500, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 1500, column: 21, }, end: Position { line: 1500, column: 37, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 1500, column: 39, }, end: Position { line: 1500, column: 40, }, }, }, ), ], span: Span { start: Position { line: 1500, column: 38, }, end: Position { line: 1500, column: 41, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1501, column: 14, }, end: Position { line: 1501, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 1501, column: 18, }, end: Position { line: 1501, column: 26, }, }, }, ), Raw( PartRaw { content: "gitlab", span: Span { start: Position { line: 1501, column: 27, }, end: Position { line: 1501, column: 33, }, }, }, ), Raw( PartRaw { content: "rubyEnv", span: Span { start: Position { line: 1501, column: 34, }, end: Position { line: 1501, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/puma", span: Span { start: Position { line: 1501, column: 12, }, end: Position { line: 1501, column: 51, }, }, }, ), ], span: Span { start: Position { line: 1501, column: 11, }, end: Position { line: 1501, column: 52, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-e production", span: Span { start: Position { line: 1502, column: 12, }, end: Position { line: 1502, column: 25, }, }, }, ), ], span: Span { start: Position { line: 1502, column: 11, }, end: Position { line: 1502, column: 26, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-C ", span: Span { start: Position { line: 1503, column: 12, }, end: Position { line: 1503, column: 31, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1503, column: 17, }, end: Position { line: 1503, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "statePath", span: Span { start: Position { line: 1503, column: 21, }, end: Position { line: 1503, column: 30, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/config/puma.rb", span: Span { start: Position { line: 1503, column: 12, }, end: Position { line: 1503, column: 46, }, }, }, ), ], span: Span { start: Position { line: 1503, column: 11, }, end: Position { line: 1503, column: 47, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-w ", span: Span { start: Position { line: 1504, column: 12, }, end: Position { line: 1504, column: 34, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1504, column: 17, }, end: Position { line: 1504, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 1504, column: 21, }, end: Position { line: 1504, column: 25, }, }, }, ), Raw( PartRaw { content: "workers", span: Span { start: Position { line: 1504, column: 26, }, end: Position { line: 1504, column: 33, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1504, column: 11, }, end: Position { line: 1504, column: 35, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-t ", span: Span { start: Position { line: 1505, column: 12, }, end: Position { line: 1505, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1505, column: 17, }, end: Position { line: 1505, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 1505, column: 21, }, end: Position { line: 1505, column: 25, }, }, }, ), Raw( PartRaw { content: "threadsMin", span: Span { start: Position { line: 1505, column: 26, }, end: Position { line: 1505, column: 36, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 1505, column: 12, }, end: Position { line: 1505, column: 38, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1505, column: 40, }, end: Position { line: 1505, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "puma", span: Span { start: Position { line: 1505, column: 44, }, end: Position { line: 1505, column: 48, }, }, }, ), Raw( PartRaw { content: "threadsMax", span: Span { start: Position { line: 1505, column: 49, }, end: Position { line: 1505, column: 59, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1505, column: 11, }, end: Position { line: 1505, column: 61, }, }, }, ), ], span: Span { start: Position { line: 1500, column: 42, }, end: Position { line: 1506, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 1493, column: 23, }, end: Position { line: 1507, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1469, column: 31, }, end: Position { line: 1509, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 1511, column: 5, }, end: Position { line: 1511, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 1511, column: 13, }, end: Position { line: 1511, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-backup", span: Span { start: Position { line: 1511, column: 22, }, end: Position { line: 1511, column: 35, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 1512, column: 7, }, end: Position { line: 1512, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.service", span: Span { start: Position { line: 1512, column: 18, }, end: Position { line: 1512, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1512, column: 17, }, end: Position { line: 1512, column: 33, }, }, }, ), ], span: Span { start: Position { line: 1512, column: 15, }, end: Position { line: 1512, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bindsTo", span: Span { start: Position { line: 1513, column: 7, }, end: Position { line: 1513, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab.service", span: Span { start: Position { line: 1513, column: 20, }, end: Position { line: 1513, column: 34, }, }, }, ), ], span: Span { start: Position { line: 1513, column: 19, }, end: Position { line: 1513, column: 35, }, }, }, ), ], span: Span { start: Position { line: 1513, column: 17, }, end: Position { line: 1513, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 1514, column: 7, }, end: Position { line: 1514, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1514, column: 17, }, end: Position { line: 1514, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 1514, column: 21, }, end: Position { line: 1514, column: 27, }, }, }, ), Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 1514, column: 28, }, end: Position { line: 1514, column: 35, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 1515, column: 7, }, end: Position { line: 1515, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "RAILS_ENV", span: Span { start: Position { line: 1516, column: 9, }, end: Position { line: 1516, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "production", span: Span { start: Position { line: 1516, column: 22, }, end: Position { line: 1516, column: 32, }, }, }, ), ], span: Span { start: Position { line: 1516, column: 21, }, end: Position { line: 1516, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "CRON", span: Span { start: Position { line: 1517, column: 9, }, end: Position { line: 1517, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1", span: Span { start: Position { line: 1517, column: 17, }, end: Position { line: 1517, column: 18, }, }, }, ), ], span: Span { start: Position { line: 1517, column: 16, }, end: Position { line: 1517, column: 19, }, }, }, ), }, ), ], span: Span { start: Position { line: 1515, column: 21, }, end: Position { line: 1518, column: 8, }, }, }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 1518, column: 12, }, end: Position { line: 1518, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1518, column: 27, }, end: Position { line: 1518, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1518, column: 40, }, end: Position { line: 1518, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 1518, column: 44, }, end: Position { line: 1518, column: 50, }, }, }, ), Raw( PartRaw { content: "skip", span: Span { start: Position { line: 1518, column: 51, }, end: Position { line: 1518, column: 55, }, }, }, ), ], default: None, }, ), ], }, ), operator: GreaterThan, right: Integer( Integer { value: "0", span: Span { start: Position { line: 1518, column: 58, }, end: Position { line: 1518, column: 59, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SKIP", span: Span { start: Position { line: 1519, column: 9, }, end: Position { line: 1519, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1519, column: 16, }, end: Position { line: 1519, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "backup", span: Span { start: Position { line: 1519, column: 20, }, end: Position { line: 1519, column: 26, }, }, }, ), Raw( PartRaw { content: "skip", span: Span { start: Position { line: 1519, column: 27, }, end: Position { line: 1519, column: 31, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 1518, column: 61, }, end: Position { line: 1520, column: 8, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 1521, column: 7, }, end: Position { line: 1521, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 1522, column: 9, }, end: Position { line: 1522, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1522, column: 16, }, end: Position { line: 1522, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 1522, column: 20, }, end: Position { line: 1522, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 1523, column: 9, }, end: Position { line: 1523, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 1523, column: 17, }, end: Position { line: 1523, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 1523, column: 21, }, end: Position { line: 1523, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 1524, column: 9, }, end: Position { line: 1524, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "gitlab-rake", span: Span { start: Position { line: 1524, column: 24, }, end: Position { line: 1524, column: 35, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-rake gitlab:backup:create", span: Span { start: Position { line: 1524, column: 22, }, end: Position { line: 1524, column: 73, }, }, }, ), ], span: Span { start: Position { line: 1524, column: 21, }, end: Position { line: 1524, column: 74, }, }, }, ), }, ), ], span: Span { start: Position { line: 1521, column: 23, }, end: Position { line: 1525, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 1511, column: 38, }, end: Position { line: 1526, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 976, column: 28, }, end: Position { line: 1528, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 1530, column: 3, }, end: Position { line: 1530, column: 7, }, }, }, ), Raw( PartRaw { content: "doc", span: Span { start: Position { line: 1530, column: 8, }, end: Position { line: 1530, column: 11, }, }, }, ), ], to: Path( Path { parts: [ Raw( PartRaw { content: "./gitlab.xml", span: Span { start: Position { line: 1530, column: 14, }, end: Position { line: 1530, column: 26, }, }, }, ), ], span: Span { start: Position { line: 1530, column: 14, }, end: Position { line: 1530, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 257, column: 4, }, end: Position { line: 1532, column: 2, }, }, }, ), span: Span { start: Position { line: 5, column: 1, }, end: Position { line: 1532, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 1532, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 1532, column: 2, }, }, }, )